分布式datax CDC架构设计

分布式dataX CDC有两种可选方式,分布式作业分布式时间槽

分布式作业在《分布式dataX详细(落地)设计》介绍过,dataX CDC单分片,使用分布式作业,只有一个worker作业工作,其他worker作业备用状态,资源利用率不高,因此,分布式时间槽比较合适

参考

《分布式dataX详细(落地)设计》

《Datax CDC 可靠channel》

《CDC增量同步框架与关系/neo4j增量同步设计》

《分布式时间槽elastic timeslot架构设计》

技术架构

下面介绍分布式dataX CDC的技术架构,下图是分布式datax CDC和分布式datax技术架构对比, 前者使用分布式时间槽,后者分布式作业,通过对比更好了解分布式dataX CDC

  

上为分布式dataX CDC, 使用分布式时间槽模式;下为分布式dataX,使用分布式作业模式

1. 作业节点

dataX CDC:作业分片对应dataX作业,是standalone模式的datax engine

dataX:作业(worker)节点分片是dataX作业分片,是任务组模式的datax engine

2. Client

dataX CDC:管理台api写入分片,没有专用client

dataX:专用的client,作业模式下Datax Engine,使用分布式调度器,负责分片和分配分片

3. 配置中心

dataX CDC:配置放入配置中心,避免每个节点存放,影响动态伸缩和维护,当然也支持本地配置文件,每个worker节点配置所有的dataX CDC作业,用于failover

dataX:作业配置直接写入分片的config节点,其他配置也可使用配置中心

4. 作业/任务租统计

dataX CDC:cdc作业单分片,任务组的统计也是作业统计,因此不需要聚合为作业统计,直接拉取复制到prefix,latest/prefix按设定的时间段计算速率;cdc没有最终summary,持久多个summary,设定保存时限自动删除

dataX:设计比较复杂,参考《分布式datax详细(落地)设计》

5. 分片策略

dataX CDC:eager模式,一次分配完分片,尽可能早地执行所有分片,达成用户触发时间要求

dataX:on demand模式,按需分配工作量,获得更小的总体执行时间

6. 故障转移

两者故障转移机制一致,节点下线,其他节点接替分片,不同的有两点,

6.1 CDC处理事件流,事件流经channel,需要可靠channel,节点切换后继续执行未ack的channel内的事件,作业整个分片重新处理;

6.2 cdc持续运行,需要保证一定的空闲节点数,需监控告警空闲节点数

动态分片新增和撤销

分布式时间槽支持cancel分片,设置cancel标志,待下次重启删除cancel分片,但cdc一直运行,该功能不能生效,因此目前未有动态分片新增和撤销

 znode结构

setl_cdc 根节点,可以看成一个用户域,用户定义

cdc_watcher 观测节点,一个域只需一个观测者,其分片与域内所有作业的所有分片一一对应,用户定义

cdc1001 逻辑作业,其分片是datax CDC作业,job模式的datax Engine,这里有两个作业概念,分布式作业dataX作业,域内可有多个作业,每个不同作业类型,上图两个分片对应两个dataX CDC作业,分片名称 userId+作业名称;

作业/分片的配置

观测分片配置是任务组统计的reids key前缀

dataX CDC作业配置,dataX作业jobId,作业配置,下图配置是本地文件,若使用配置中心,url 以 ”cc://” 开始

Dbz引擎配置示例

几个重要的配置

connector.class 数据源,mysql,oracle等

offset.storage.file.filename  binlog偏移存储文件位置,通常多个CDC作业,需启动多个debezium引擎,文件路径要区分,同样,databases.history.file.filaname 数据库schema文件位置

database.server.name 每个引擎配置不同的名称,否则出现异常:

javax.management.InstanceAlreadyExistsException: debezium.mysql:type=connector-metrics,context=schema-history,server=localhost

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中间件XL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值