序
最近在对平台的数据一致性问题进行分析。目前营收的数据模型分为两类。
- 北方同城主备
- 南北双活(依赖otter同步)
同城主备的模型的特点是能够保证数据的强一致性。而南北双活保证的是数据的最终一致性,otter的双向回环对同一个pk的更新会造成覆盖(单向回环)。
这次我们将分析下otter在数据同步上的实现。
源码下载
本人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] ------------------------------------------------------------------------
源码目录
- manager
- node
- share
重点分析node的实现。
otter最核心的逻辑在setl的实现逻辑,后面将重点分析setl的逻辑实现。
参考
分布式数据库同步系统Otter 主要介绍otter同步的安装配置