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-07-24 15:29   作者:阿力