精华帖 (5) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2013-02-08
kfyfly 写道 ITeyeZ终于出了个重量级的玩意了,沉寂了太久
呵呵,我也是潜水了一年多,iteye人气越来越不行了 |
|
返回顶楼 | |
发表时间:2013-02-08
最近两天,已经收到几个人的试用反馈,包括使用介绍,代码bug,我会及时的跟进和修复。
基于mysql binlog的消息队列,目前在国内类似的开源软件基本没有,是一个相对创新的理念和产品,不过可能小公司也不一定用得上,大刀耍起来要有一定的背景和能力。 |
|
返回顶楼 | |
发表时间:2013-02-10
我更想知道基于mysql数据库binlog的增量订阅&消费这种机制,有哪些应用场景?
|
|
返回顶楼 | |
发表时间: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消息的可直接换成这种架构模式) 当然你也可以发挥你的想象做一些更有意思的事 |
|
返回顶楼 | |
发表时间: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,赞一个 |
|
返回顶楼 | |
发表时间:2013-02-12
我正等着精卫开源呢,你就来了
|
|
返回顶楼 | |
发表时间:2013-02-12
vlinux 写道 我正等着精卫开源呢,你就来了
呵呵,看来是内部人,目前两者架构模式有所不同,技术没有特别的差异,目前canal主要服务于otter(异地双A机房) 我和精卫属于同一团队,精卫目前如果要做外部开源还有比较多的路要走, 内部产品耦合太重,个人意见 |
|
返回顶楼 | |
发表时间: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的消费速度一直是慢的,所以一定会考虑平衡的策略。 如果是精卫能洗干净自己身上的二方包开源出来就好了,沈询、齐昊他们整得还是不错的。 |
|
返回顶楼 | |
发表时间:2013-02-13
1. metaq的事我也不太清楚,其实走开源这条路需要考虑内外两个系统环境的差异性,所以从一开始在架构设计上就需要考虑差。我有考虑和metaq的整合,但只会考虑使用文件存储这块,因为canal自己已经包含网络协议和集群HA机制
2. 精卫自身并不复杂,主要是一个基于web管理的HA调度机制,其核心的主要还是依赖dbsync/metaq(内部版本),自身并不是一个完整的产品架构 |
|
返回顶楼 | |
发表时间: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事件和业务事件呢?也许是一个二方包?也许是另外一个业务系统? 目前还在思考中... |
|
返回顶楼 | |