【源码】otter工程结构
最近在搞数据同步相关的内容,需要对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
最后两块的具体内容还未仔细分析,需要后续进行补充。
【源码】otter工程结构的更多相关文章
- otter源码解读(一)
概览 lib存放的是项目依赖包,由于项目用到的包比较杂,可能有的包已经不在maven仓库中提供了,所以提供了一个lib包,执行里面的install命令,就可以把包安装到本地maven仓库. manag ...
- 【Kafka源码】Kafka代码模块
Kafka源码依赖于Scala环境,首先需要安装scala,这块请自行百度进行安装. 传送门 当然,我们要分析源码,需要下载源码,请自行从github上面下载. 说明:本文使用的kafka版本为0.1 ...
- 碎片记录——JMeter之 http post json对象与参数化调用,以及beanshell 引用Java源码
参考文档 http://jmeter.apache.org/usermanual/component_reference.html#samplers https://blog.csdn.net/qq_ ...
- 【源码】canal和otter的高可靠性分析
一般来说,我们对于数据库最主要的要求就是:数据不丢.不管是主从复制,还是使用类似otter+canal这样的数据库同步方案,我们最基本的需求是,在数据不丢失的前提下,尽可能的保证系统的高可用,也就是在 ...
- CesiumJS 2022^ 源码解读[0] - 文章目录与源码工程结构
很高兴你能在浮躁的年代里还有兴趣阅读源代码,CesiumJS 至今已有十年以上,代码量也积累了三十多万行(未压缩状态). 我也很荣幸自己的文章能被读者看到,如果对你有帮助.有启发,点个赞就是对我最大的 ...
- 大数据之Oozie——源码分析(一)程序入口
工作中发现在oozie中使用sqoop与在shell中直接调度sqoop性能上有很大的差异.为了更深入的探索其中的缘由,开始了oozie的源码分析之路.今天第一天阅读源码,由于没有编译成功,不能运行测 ...
- MyBatis源码分析-IDEA新建MyBatis源码工程
MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以对配置和原生Map使用简 ...
- 使用canal分析binlog(二) canal源码分析
在能够跑通example后有几个疑问 1. canal的server端对于已经读取的binlog,client已经ack的position,是否持久化,保存在哪里 2. 即使不启动zookeeper, ...
- Android动态方式破解apk前奏篇(Eclipse动态调试smail源码)
一.前言 今天我们开始apk破解的另外一种方式:动态代码调试破解,之前其实已经在一篇文章中说到如何破解apk了: Android中使用静态方式破解Apk 主要采用的是静态方式,步骤也很简单,首先使用 ...
随机推荐
- shim & polyfill
在JavaScript中,经常提到shim和polyfill,polyfill是shim的一种.shim 是将不同 api 封装成一种,比如 jQuery 的 $.ajax 封装了 XMLHttpRe ...
- 途牛java实习面试(失败)
一进去让自己介绍.简单介绍了一下.然后让我自己说说框架.问题太大一紧张卡住了. 然后面试官开始问,让我介绍多线程,我就简单介绍了多线程.然后问我有没有做过多线程的项目,我说没有. 问了MySQL的锁和 ...
- linux利用命令重置大量密码
yum -y install expectmkpasswd -l 10 -v was | grep 'is *' >> 123.txtmkpasswd -l 10 -v logv | ...
- Zookeeper简介和安装(二)
一.简介: Zookeeper是一个分布式协调服务,提供的服务如下: 命名服务:类似于DNS,但仅对于节点 配置管理:服务配置信息的管理 集群管理:Dubbo使用Zookeeper实现服务治理 分布式 ...
- EF CodeFirst 数据库初始化策略
最近用EF做了几个小东西,了解简单使用后有了深入研究的兴趣,所以想系统的研究一下EF CodeFist的几个要点.下面简单列一下目录 1.1 目录 数据库初始化策略和数据迁移Migration的简单介 ...
- Scala编程入门---函数式编程之集合操作
集合的函数式编程: 实战常用: //map案例实战:为List中的每个元素都添加一个前缀. List("leo","Jen","peter" ...
- Windows10远程报错:由于CredSSP加密Oracle修正
Windows10远程桌面连接 报错信息 : 网上找到方法 但是奈何是 "Win10家庭版" 不能使用这个办法,具体操作可以看最后的引用链接 !!!! 策略路径:"计算机 ...
- Spring温故而知新 – AOP代理
AOP的概念 AOP:Aspect-Oriented Programming(面向切面编程),维基百科的解释如下:Aspect是一种新的模块化机制,用来描述分散在对象.类或者函数中的横切关注点,从关注 ...
- jquery和ajax的关系详细介绍【转】
jquery和ajax的关系详细介绍 http://www.jb51.net/article/43965.htm
- zlib 压缩输出缓冲区 overflow 问题
[TOC] 问题 后台服务传包太大时,我们框架可以使用 zlib 库对响应进行压缩:在这次服务调试过程中,使用 zlib compress2 以 Z_BEST_COMPRESSION 模式进行压缩时, ...