agapple 写道
netcomm 写道
vlinux 写道
what ever,我永远敬重敢于自己创造轮子的同学~~~正在clone代码~~~看到用了dbsync
binlog事件目前我看到最大的缺陷就在于缺少业务基础。在事件驱动的业务中,业务事件往往包含的信息比binlog丰富多,而如果仅仅依靠binlog想驱动整个业务似乎在目前的业务场景下是不可能的,这也限制了这一类工具在线上的运用场景。
可以看到中间红色的部分其实是大家没想好的,用什么来衔接DB事件和业务事件呢?也许是一个二方包?也许是另外一个业务系统?
目前还在思考中...
vlinux指出了一个此类产品的共有问题,很多时候是个平衡,但有个基本原则是尽量在让业务系统(业务开发团队)无感觉(透明)的情况下,通过此类产品向外提供更多灵活、方便的功能。所以,如果当不得不让业务系统提供更多数据时(透明性就损失了),在这种情况下,canal的价值就并不比metaq等显示调用更有优势了。个人观点,欢迎讨论。
metaq的数据存储主要也是byte流,可以添加header信息,canal的数据主要是binlog,格式相对固定。基于byte流可以方便利用工具序列化,同样针对binlog对象你也可以构建序列化工具。
canal的定位本身就和metaq有差别,有点扯远了,vlinux的提到metaq主要是想利用其文件存储的功能
用metaq当MQ来用能非常优异的实现业务事件驱动,是直接发MQ消息驱动业务还是通过Binlog来驱动业务?自然是MQ的消息来驱动业务更合适了。netcomm估计是这个意思。
是偶的错,不应该将一个纯技术帖歪掉,业务场景千变万化,随着天时地利人和各种条件因素,Canal驱动业务也不一定比MQ驱动业务差。我们还是关注下具体的实现吧。
mark之,以后有需要解析mysql-binlog的时候翻出来看看,如何写的
目前在看另外一个项目的代码,先吐槽下Canal对RingBuffer的生搬硬套,贱人就是矫情。。嘿嘿