Otter源代码解析(六)

全部文档索引:

Otter源代码解析(一): http://eyuxu.iteye.com/blog/1941894

Otter源代码解析(二) : http://eyuxu.iteye.com/blog/1942518

Otter源代码解析(三): http://eyuxu.iteye.com/blog/1942519

Otter源代码解析(四): http://eyuxu.iteye.com/blog/1942521

Otter源代码解析(五): http://eyuxu.iteye.com/blog/1942522

Otter源代码解析(六): http://eyuxu.iteye.com/blog/1942549

Otter源代码解析(七): http://eyuxu.iteye.com/blog/1942578

Otter源代码解析(八): http://eyuxu.iteye.com/blog/1942780

Otter源代码解析(九): http://eyuxu.iteye.com/blog/1942786

 

下面进入核心的部分:SETL中的Select过程:本身描述能力有限,自认为单纯看我写的文档就能够了解地比较深入,不太现实。所以最好是代码阅读和文档阅读结合的方式来理解Otter:

 



 

 

关于HA:采用多个节点竞争的模式来实现,一旦一个节点宕机,其他的节点就会获取竞争条件,这个事件叫做MainstemEvent

 

.每个SETL过程的设计基本上都是由xxxTask + OtterXXXFactroy + OtterXXX的设计方式,但是细节上差别比较大。

 

. Select过程是需要串行的(需要保证顺序性),但是为了尽可能提高效率,将Get和ACK(Canal的滑动窗口)分在两个线程里面去做,依据的假定就是绝大多数数据是不需要回滚的,但是一旦回滚了,代价就比较大(Otter的官方文档有相关的说明)。这个设计有个问题就是发送的数据是可能重复的,Otter对同步数据表的要求是必须要要有主键,我认为和这个问题有关系(否则Load过程难于知道数据是否是重复的),但是效率能够得到大幅度的提高。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值