深入理解 otter
七锋 2013-07-04
Agenda
1. 中美同步需求
2. otter 架构 & 设计
o
如何解决 " 差 " 网络
o
如何避免双向回环
o
如何处理数据一致性
o
如何高效同步数据
o
如何高效同步文件
o
如何支持系统 HA
o
如何处理特殊业务同步
o
如何处理机房容灾
3. 相关产品对比
4. 其他
业务场景
1. 杭州 / 美国异地机房双向同步
a. 业务性 ( 定义同步表,同步字段 )
b. 隔离性 ( 定义同步通道,对应一个具体业务,多个通道之间互相隔离 )
c. 关联数据 ( 同步 db 数据的同时,需要同步图片,比如产品表 )
d. 双 A 写入 ( 避免回环同步,冲突处理,数据一致性保证 )
e. 事务性 ( 没有严格的事务保证,定义表载入顺序 )
f. 异构性 ( 支持 mysql/oracle)
2. 扩展业务
a. 数据仓库增量数据 ( 整行记录,根据变更主键反查 )
b. 业务 cache 更新 ( 更新 db 成功的同时,刷新下 cache 中的值 )
c. 数据全库迁移 ( 建立任务队列表 / 触发全库记录变更 )
d. 多库合并同步 (product/product_detail 需要尽可能保证加载顺序 )
设计关注要点
硬性要求:
1. 数据不能丢失 ( 变更数据一定要成功应用到目标库 )
2. 数据最终一致性 ( 双向两边记录要保证最终一致性 )
客观因素:
1. 中美网络延迟 ( 平均 200ms)
2. 中美传输速度 (2~6MB/s)
3. 文件同步 (20000 条记录可达 800MB 文件 )
4. 同步按需隔离 ( 不同业务之间同步互不影响 , 同步有快
慢 )
5. 事务性支持 ( 允许业务定义表的同步加载的顺序性 )
整体架构