DataX和Canal相关
DataX
DataX 相关
- reader/writer 插件模式,job拆分task,task group并行执行
- split拆分策略,可以自定义,主键根据int 范围做拆分,并行执行
- ELT架构,transform比较简单,filter,substr,replace,可自定义
- 目标端需要支持冥等写入,关系和非关系数据库都支持,脏数据控制
- 增加界面功能,提供界面和REST API调用,增加日志,监控信息
- 源数据DB,增加源和目标端 流控功能,根据数据量自动拆分
修改的部分
- 做了HANA的读写插件
- sqlserver拆分的一个bug
- 增加了sqlserver的冥等写入
- transform 增加了一些
- 动态流控
参考
Canal
说明:
- server代表一个canal运行实例,对应于一个jvm
- instance对应于一个数据队列 (1个server对应1..n个instance)
instance模块:
- eventParser (数据源接入,模拟slave协议和master进行交互,协议解析)
- eventSink (Parser和Store链接器,进行数据过滤,加工,分发的工作)
- eventStore (数据存储)
- metaManager (增量订阅&消费信息管理器)
eventParser
- 内部又实用了 driver,以及 binlog 解析模块做实际的解析工作
eventSink
- 内部包含了一个基于 字节码编译的 表达式模块
- 可以有 1:N,或者 N:1 的设计
- 在这里做数据加工,根据INSERT、UPDATE、DELETE 做过滤
EventStore
- 目前仅实现了Memory内存模式,后续计划增加本地file存储,mixed混合模式
- 借鉴了Disruptor的RingBuffer的实现思路
整体
- Server 和 Client 模式
- 也支持嵌入式模式
- 有一个元数据存储,记录消费的 offset
- HA 是借助 ZK 的分布式锁,实现主备模式
参考