最近在对平台的数据一致性问题进行分析。目前营收的数据模型分为两类。

同城主备的模型的特点是能够保证数据的强一致性。而南北双活保证的是数据的最终一致性,otter的双向回环对同一个pk的更新会造成覆盖(单向回环)。

这次我们将分析下otter在数据同步上的实现。

源码下载

otter github

本人clone的版本是otter-4.2.18。

源码编译:

mvn clean install -Dmaven.test.skip=true

jtester和ojdbc6包会下载失败,lib目录已经提供了对应的jar包,我们只需要把对应的jar包安装到本地。

mvn install:install-file -Dfile=D:\3rd\otter\lib\jtester-1.1.8.jar -DgroupId=org.jtester -DartifactId=jtester -Dversion=1.1.8 -Dpackaging=jar

mvn install:install-file -Dfile=D:\3rd\otter\lib\ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.1.0.7.0 -Dpackaging=jar

构建成功。

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] otter .............................................. SUCCESS [  1.063 s]
[INFO] shared module for otter ............................ SUCCESS [  0.029 s]
[INFO] common module for otter ............................ SUCCESS [  7.885 s]
[INFO] communication module for otter ..................... SUCCESS [  3.446 s]
[INFO] arbitrate module for otter ......................... SUCCESS [  6.057 s]
[INFO] etl shared module for otter ........................ SUCCESS [  2.259 s]
[INFO] common push module for otter ....................... SUCCESS [  2.585 s]
[INFO] manager module for otter ........................... SUCCESS [  0.032 s]
[INFO] manager biz module for otter ....................... SUCCESS [  8.947 s]
[INFO] manager web module for otter ....................... SUCCESS [  4.338 s]
[INFO] manager deployer module for otter .................. SUCCESS [ 17.607 s]
[INFO] node module for otter .............................. SUCCESS [  0.035 s]
[INFO] node common module for otter ....................... SUCCESS [  2.253 s]
[INFO] canal extend module for otter ...................... SUCCESS [  2.013 s]
[INFO] etl module for otter ............................... SUCCESS [ 13.189 s]
[INFO] otter extend module for otter ...................... SUCCESS [  1.509 s]
[INFO] node deployer for otter ............................ SUCCESS [ 16.486 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:30 min
[INFO] Finished at: 2019-11-14T11:21:07+08:00
[INFO] Final Memory: 56M/637M
[INFO] ------------------------------------------------------------------------

源码目录

重点分析node的实现。

otter最核心的逻辑在setl的实现逻辑,后面将重点分析setl的逻辑实现。

参考

otter github

Otter源代码解析

分布式数据库同步系统Otter 主要介绍otter同步的安装配置