合 阿里数据同步工具Otter和Canal简介
Tags: MySQL高可用主从复制双主数据同步OtterCanal跨机房阿里
核心算法介绍
实际测试中,otter的同步速度相比于mysql的复制,约有5倍左右的性能提升,这取决于其同步算法的实现. 抛弃了强一致性,得到了性能提升
数据合并
1 2 3 4 5 6 7 8 9 | 1. insert + insert -> insert (数据迁移+数据增量场景) 2. insert + update -> insert (update字段合并到insert) 3. insert + delete -> delete 4. update + insert -> insert (数据迁移+数据增量场景) 5. update + update -> update 6. update + delete -> delete 7. delete + insert -> insert 8. delete + update -> update (数据迁移+数据增量场景) 9. delete + delete -> delete |
说明.
insert/行记录update 执行merge sql,解决重复数据执行
合并算法执行后,单pk主键只有一条记录,减少并行load算法的复杂性(比如batch合并,并行/串行等处理)
数据入库算法
入库算法采取了按pk hash并行载入+batch合并的优化
a. 打散原始数据库事务,预处理数据,合并insert/update/delete数据(参见合并算法),然后按照table + pk进行并行(相同table的数据,先执行delete,后执行insert/update,串行保证,解决唯一性约束数据变更问题),相同table的sql会进行batch合并处理
b. 提供table权重定义,根据权重定义不同支持"业务上类事务功能",并行中同时有串行权重控制.
业务类事务描述:比如用户的一次交易付款的流程,先产生一笔交易记录,然后修改订单状态为已付款. 用户对这事件的感知,是通过订单状态的已付款,然后进行查询交易记录。