20220319后支持。
解决问题
为了库名、表名中存在中文、$、#等特殊字符,导致topic生成失败的问题
设计规则
- 版本升级后新添加的表:全量和增量topic命名规则使用新的
- 版本升级之前的已有表:
(1)ifalias=0的,全量topic和增量topic命名规则都使用旧的
(2)ifalias=1的,全量topic命名规则使用新的,增量topic命名规则都使用旧的 - 增量topic名字,插入之后,不再改变。
- 程序升级后需要重启生效。
topic名称命名规则
发布
- 全量:nodeid.bus_push_sync_tb表id.s.版本号
- 增量:nodeid.bus_push_sync_tb表id.r
etl
- 全量:customerid.bus_etl_transaform_configure表id.s.版本号.queue_name
- 增量:customerid.bus_etl_transaform_configure表id.r.queue_name
注:
(1)检查zcbusdb库中bus_push_sync_tb表ifalias字段的默认值,需要设置成1
alter table bus_push_sync_tb alter column ifalias set default 1;
(2)测试通过后,需要同时升级web程序和zcbus_service程序
select * from bus_push
(3)zcbus_service程序只有bus_push_sync_tb表ifalias字段为1时才会更新bus_in_tables表的fulltopic名称为nodeid.bus_push_sync_tb表id.s.*
版本升级后新添加的表测试
发布—>配置—>选择发布数据表:
bus_push_sync_tb的ifalias插入成1
bus_in_tables的fulltopic和realtopic会插入,并以nodeid.bus_push_sync_tb表id.的格式插入
发布—>配置—>发布—>允许发布:
zcbus_service全量进程会更新bus_in_tables的fulltopic
数据处理—>数据表—>etl配置—>添加:
etl全量订阅:
zcbus_service订阅进程会更新bus_in_tables的fulltopic,全量和增量topic命名规则使用新的
订阅
全量和增量topic命名规则使用新的
数据验证
发布端数据
订阅端数据
版本升级之前的已有表ifalias=1测试
测试前统计
ifalias=1
全量和增量topic为旧topic(发布)
全量和增量topic为旧topic(etl)
重新全量发布
全量topic更改了,realtopic未更改:
etl重新全量订阅
全量topic命名规则使用新的,增量topic命名规则都使用旧的(检索etl1规则的信息:grep -i topic log.etl_10086.1472 |grep -E “offset|send”|grep -E “10109|etl1”)
订阅端全量订阅
全量topic命名规则使用新的,增量topic命名规则都使用旧的(检索etl1规则的信息:grep -i topic log.client_10105.1473 |grep -E “offset”|grep etl1)
数据验证
以etl1规则为例验证
发布端数据
订阅端数据
问题发现
问题已提交:http://mantis.zbomc.com/view.php?id=559
数据处理—>数据表—>etl配置,添加、编辑优化:
(1)添加时:队列名只允许输入数字和字符串组合,特殊字符,空格,汉字等不能输入,错误输入需提示;规则其实是一个etl的简单描述,可以随意输入,但不能超过32字节(rule_name varchar(32) NOT NULL COMMENT ‘规则名字’),超出需提示
(2)编辑时:不允许修改队列名,因为etl的topic名称后面是队列名做区分的,修改后导致topic不能识别,建议显示灰色不可编辑状态。
文档更新时间: 2022-03-19 05:17 作者:周风磊