【源码】otter工程结构

时间:2021-03-27 08:28:46

最近在搞数据同步相关的内容,需要对otter的代码进行扩展,所以需要先熟悉一下otter的源码。首先我们整体来看下otter的工程结构。otter的工程结构比较复杂,需要花费一定的时间来理解各个部分的内容,仅仅通过官方文档无法准确的理解各个模块的内容,现分析如下:

otter整体的工程结构如下:

otter
|--manager
    |--biz
    |--deployer
    |--web
|--node
    |--canal
    |--common
    |--deployer
    |--etl
    |--extend
|--shared
    |--arbitrate
    |--common
    |--communication
    |--etl
    |--push

其中,通过官方文档我们可以知道,manager和node是要单独部分的工程,所以我们可以大体了解如下内容:

  • manager是对node节点进行管理,数据统计,node节点之间的协调,基本信息的同步等。
    • biz:业务处理内容
    • deployer:manager打包和启动的类,主要内置一个jetty的服务启动器,通过OtterManagerLauncher启动
    • web:manager的web页面相关内容,包括接口
  • node是实际上进行数据同步的工程
    • canal:canal客户端,就是订阅binlog的客户端,Otter采用的是Embed的方式引入Canal
    • common:公共内容定义
    • deployer:打包工具,运行脚本,内置jetty服务器,启动类OtterLauncher
    • etl:S.E.T.L 调度、处理的实现,是Otter最复杂、也是最核心的部分
    • extend:留有的扩展类,可以自定义一些处理过程
  • shared是manager和node公有的子系统
    • arbitrate:仲裁器相关内容,代码比较多,后面我们慢慢分析
    • common:manager和node用到的一些公共类
    • communication:远程调用相关内容
    • etl
    • push

最后两块的具体内容还未仔细分析,需要后续进行补充。