论坛首页 Java企业应用论坛

阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费

浏览 55497 次
精华帖 (5) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-02-08  
kfyfly 写道
ITeyeZ终于出了个重量级的玩意了,沉寂了太久


呵呵,我也是潜水了一年多,iteye人气越来越不行了
0 请登录后投票
   发表时间:2013-02-08  
最近两天,已经收到几个人的试用反馈,包括使用介绍,代码bug,我会及时的跟进和修复。

基于mysql binlog的消息队列,目前在国内类似的开源软件基本没有,是一个相对创新的理念和产品,不过可能小公司也不一定用得上,大刀耍起来要有一定的背景和能力。
0 请登录后投票
   发表时间:2013-02-10  
我更想知道基于mysql数据库binlog的增量订阅&消费这种机制,有哪些应用场景?
0 请登录后投票
   发表时间:2013-02-10  
kfyfly 写道
我更想知道基于mysql数据库binlog的增量订阅&消费这种机制,有哪些应用场景?

目前在阿里的业务场景主要有几类:
1. 数据库实时备份 (按业务表自定义或者整库同步)
2. 异地机房业务,双master机房(两地写入,互相同步)
3. 搜索引擎增量build(以前新发产品5分钟定时build可变为准实时)
4. 业务cache/store数据更新 (根据数据库变更日志,直接更新内存cache或者分布式cache)
5. 异步索引构建(比如淘宝典型的交易记录有按买家或卖家检索的需求,因为数据量非常大,所以一定会采取分库策略,此时不论按买家或者卖家分离都不能满足需求,所以就衍生出多级索引的需求,这在hbase中尤为常见,数据异布写多份)
6. 敏感业务数据变更服务(典型的就是商品价格通知,库存变化的通知)
7. 部分替换以前jms消息的场景(以前一般先写db,再发送jms消息的可直接换成这种架构模式)
当然你也可以发挥你的想象做一些更有意思的事
0 请登录后投票
   发表时间:2013-02-10  
agapple 写道
kfyfly 写道
我更想知道基于mysql数据库binlog的增量订阅&消费这种机制,有哪些应用场景?

目前在阿里的业务场景主要有几类:
1. 数据库实时备份 (按业务表自定义或者整库同步)
2. 异地机房业务,双master机房(两地写入,互相同步)
3. 搜索引擎增量build(以前新发产品5分钟定时build可变为准实时)
4. 业务cache/store数据更新 (根据数据库变更日志,直接更新内存cache或者分布式cache)
5. 异步索引构建(比如淘宝典型的交易记录有按买家或卖家检索的需求,因为数据量非常大,所以一定会采取分库策略,此时不论按买家或者卖家分离都不能满足需求,所以就衍生出多级索引的需求,这在hbase中尤为常见,数据异布写多份)
6. 敏感业务数据变更服务(典型的就是商品价格通知,库存变化的通知)
7. 部分替换以前jms消息的场景(以前一般先写db,再发送jms消息的可直接换成这种架构模式)
当然你也可以发挥你的想象做一些更有意思的事

good,赞一个
0 请登录后投票
   发表时间:2013-02-12  
我正等着精卫开源呢,你就来了
0 请登录后投票
   发表时间:2013-02-12  
vlinux 写道
我正等着精卫开源呢,你就来了

呵呵,看来是内部人,目前两者架构模式有所不同,技术没有特别的差异,目前canal主要服务于otter(异地双A机房)
我和精卫属于同一团队,精卫目前如果要做外部开源还有比较多的路要走, 内部产品耦合太重,个人意见
0 请登录后投票
   发表时间:2013-02-12  
agapple 写道
vlinux 写道
我正等着精卫开源呢,你就来了

呵呵,看来是内部人,目前两者架构模式有所不同,技术没有特别的差异,目前canal主要服务于otter(异地双A机房)
我和精卫属于同一团队,精卫目前如果要做外部开源还有比较多的路要走, 内部产品耦合太重,个人意见


对了,既然你来自精卫团队,为啥不考虑下直接和killme2008的metaq整合?淘宝内部的metaq在github的版本至今还有很多内部的二方包,别人都无法使用。

这样至少能回答这个问题

agapple 写道
netcomm 写道
伙计,有个问题,EventStore目前只实现了Memory模式,那如果canal client处理的慢,跟不上mysql的binlog,那canal server就有可能内存满。目前是不是线上环境是肯定不会出现canal client处理的慢的情况,还是采用其他别的策略。


你仔细看下,memory的实现是基于RingBuffer,put操作的调用是有阻塞的,类似于生产者/消费者模型,内存不会无限制增大。

不过我们也遇到过一个问题,目前的memory buffer是按记录数进行缓存的,比如缓存16384条,每条记录如果包含一些text大文本字段,就会占用比较大的内存。

所以后续的几个方向:
a. RingBuffer支持按数据大小定义buffer,不仅仅是记录数
b. 文件存储的实现,其实思路也不难,只需要不停的append即可(典型的顺序写操作)

还有,我们线上canal client的消费速度一直是慢的,所以一定会考虑平衡的策略。


如果是精卫能洗干净自己身上的二方包开源出来就好了,沈询、齐昊他们整得还是不错的。
0 请登录后投票
   发表时间:2013-02-13  
1. metaq的事我也不太清楚,其实走开源这条路需要考虑内外两个系统环境的差异性,所以从一开始在架构设计上就需要考虑差。我有考虑和metaq的整合,但只会考虑使用文件存储这块,因为canal自己已经包含网络协议和集群HA机制
2. 精卫自身并不复杂,主要是一个基于web管理的HA调度机制,其核心的主要还是依赖dbsync/metaq(内部版本),自身并不是一个完整的产品架构
0 请登录后投票
   发表时间:2013-02-13   最后修改:2013-02-13
agapple 写道
1. metaq的事我也不太清楚,其实走开源这条路需要考虑内外两个系统环境的差异性,所以从一开始在架构设计上就需要考虑差。我有考虑和metaq的整合,但只会考虑使用文件存储这块,因为canal自己已经包含网络协议和集群HA机制
2. 精卫自身并不复杂,主要是一个基于web管理的HA调度机制,其核心的主要还是依赖dbsync/metaq(内部版本),自身并不是一个完整的产品架构


what ever,我永远敬重敢于自己创造轮子的同学~~~正在clone代码~~~看到用了dbsync

binlog事件目前我看到最大的缺陷就在于缺少业务基础。在事件驱动的业务中,业务事件往往包含的信息比binlog丰富多,而如果仅仅依靠binlog想驱动整个业务似乎在目前的业务场景下是不可能的,这也限制了这一类工具在线上的运用场景。




可以看到中间红色的部分其实是大家没想好的,用什么来衔接DB事件和业务事件呢?也许是一个二方包?也许是另外一个业务系统?

目前还在思考中...
  • 大小: 33.2 KB
0 请登录后投票
论坛首页 Java企业应用版

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