论坛首页 Java企业应用论坛

阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房)

浏览 26961 次
精华帖 (0) :: 良好帖 (3) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-08-29  
darkjune 写道
agapple 写道
darkjune 写道
这个跟国外的SymmetricDS比, 侧重点在哪里? 功能都差不多


比较识货,两者功能是差不多。

说一下和它的渊源,otter的第三个版本是基于SymmetricDS 2.x版本发展出来,正是因为有了这层关系,两者才有一些相似。

这次开源的为otter的第四个版本,从2011年开始开发,和SymmetricDS几个不同点:
1. 数据capture方式:otter4目前支持log-based,otter3和SymmetricDS一样,是基于trigger.
2. 双向同步冲突处理:otter4目前已经有比较成熟的方案, 而从SymmetricDS 3.x的文档中看,还处于planing中
3. 调度模型:otter4相比于SymmetricDS,在数据传输的模型上,引入了并行化调度,提升同步tps. 而在SymmetricDS 3.x文档中暂没看到相关的描述,基本还是串行的处理,只不过多了push的功能,这点是otter4没有的

基于log-based的方案,对于数据库的影响相对较少,同时可精确提取具体变更的字段,做到按需同步,而SymmetricDS基于trigger的方式,只能提取到变更的pk,每次同步时基于pk反查源库提取到行记录。从性能上来说,按字段同步传输量和数据库载入上都有很大的优势,从数据冲突上来说,冲突粒度更小了,有利于冲突处理方案的执行。

可以说下,otter3和otter4的性能对比,基本上是一个数量级上的提升,otter3的基于trigger,然后根据pk反查的,处理tps基本只在500~1000tps,而基于log-based,基于字段同步的可以达到5000~10000tps.

SymmetricDS有一个比较大的优势就是支持的数据库的比较多,这也是基于log-based所无法超越的,因为完成一个log-based不是那么简单的,代价很高,也就是最近1,2年才陆续有mysql的log-based出现,而oracle的log-based基本上的价格就是一个oracle的价格。

基于bin log这种形式,那还需要自己实现分析各种数据库二进制log的代码?
这个似乎比较麻烦,尤其是异构数据库之间的处理,因为你提到双向同步在otter4是可以的,那么你们目前应该也是只支持公司常用的1,2种数据库专门对bin log的数据进行抽取吧。
就我了解,SymmetricDS 的trigger提取到的不只是pk,而是吧所有变动的数据都插入了他的sym_data及对应的sym_outgoing_batch表里,是一个csv格式的, 同步时全发到对方node上, 比你们的字段同步确实粒度大了点。


是的,基于log-based的实现比较麻烦,所以支持的数据库很有限,我们也在考虑同时支持trigger的功能,这样就可以支持更多的数据库类型。

你们现在使用SymmetricDS进行数据库同步?可以分享一下你们的使用场景和经验?有用到它的文件同步的功能?还有你们的网络部署结构是什么样的?异地机房多节点部署?
0 请登录后投票
   发表时间:2013-08-29  
我们是一个产品型的应用,只管产品实现这块,具体实施方面不是我们在做, 但大概是这样:
每个机房可以部署一个node(看具体需要支持的数据量),一般可以支持到共1个主node,3-4个分node吧。 同步策略不是实时的,有定时任务做, 一般是分node先push自己的数据到主node, 然后分node再从主node pull数据来做同步。
0 请登录后投票
   发表时间:2013-08-29  
darkjune 写道
我们是一个产品型的应用,只管产品实现这块,具体实施方面不是我们在做, 但大概是这样:
每个机房可以部署一个node(看具体需要支持的数据量),一般可以支持到共1个主node,3-4个分node吧。 同步策略不是实时的,有定时任务做, 一般是分node先push自己的数据到主node, 然后分node再从主node pull数据来做同步。


全球机房部署还是就国内部署?不关注数据的延迟?
0 请登录后投票
   发表时间:2013-08-29  
agapple 写道
darkjune 写道
我们是一个产品型的应用,只管产品实现这块,具体实施方面不是我们在做, 但大概是这样:
每个机房可以部署一个node(看具体需要支持的数据量),一般可以支持到共1个主node,3-4个分node吧。 同步策略不是实时的,有定时任务做, 一般是分node先push自己的数据到主node, 然后分node再从主node pull数据来做同步。


全球机房部署还是就国内部署?不关注数据的延迟?

产品部署取决于用户的数据中心物理分布, 就我目前的了解一般都是国家范围内,不排除跨国。 因为应用是管理数据中心的设备的,所以各个数据中心的数据推送并不太care,因为别的数据中心不会特别关心另外的数据中心的设备, 一天一次的同步是可以接受的。
0 请登录后投票
   发表时间:2013-08-29  
一个管理机房设备的产品?这种和互联网的数据模式不太一样,我们追求实时,用户下单了,要尽快能够看到
0 请登录后投票
   发表时间:2013-08-29  
agapple 写道
一个管理机房设备的产品?这种和互联网的数据模式不太一样,我们追求实时,用户下单了,要尽快能够看到

一个管理机房设备的产品?这种和互联网的数据模式不太一样,我们追求实时,用户下单了,要尽快能够看到
0 请登录后投票
   发表时间:2013-08-29  
agapple 写道
agapple 写道
一个管理机房设备的产品?这种和互联网的数据模式不太一样,我们追求实时,用户下单了,要尽快能够看到

一个管理机房设备的产品?这种和互联网的数据模式不太一样,我们追求实时,用户下单了,要尽快能够看到

对,所以应用场景不一样, 你们实时要求比较高, 要求更高一点
0 请登录后投票
   发表时间:2013-08-29  
和oracle的stream有什么区别呢?
0 请登录后投票
   发表时间:2013-08-29  
czy84 写道
和oracle的stream有什么区别呢?


oracle stream/mysql replaction都是数据库自带的复制工具,他们的特点是简单可用。

但缺点就是不支持异构数据库,无法干预复制逻辑,无法自定义数据复制关系等等,因为需求总是多样的
0 请登录后投票
   发表时间:2013-09-01  
如何保证你的保密数据备份在别人的服务器上面,不给服务器的主人给你盗取了?

0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics