现在的位置: 首页 > 关系型数据库 > MySQL数据库 > 正文

阿里巴巴mysql数据库binlog的增量订阅&消费组件:canal/otter/RocketMQ

时间:2015年11月01日 | 分类:MySQL数据库 | 评论: 4 条 | 浏览:5,104 次

canal 是阿里巴巴mysql数据库binlog的增量订阅&消费组件。

名称:canal [kə'næl]

译意: 水道/管道/沟渠

语言: 纯java开发

定位: 基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了mysql

早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求。不过早期的数据库同步业务,主要是基于trigger的方式获取增量 变更,不过从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务,从此开 启了一段新纪元。ps. 目前内部使用的同步,已经支持mysql5.x和oracle部分版本的日志解析

基于日志增量订阅&消费支持的业务:

数据库镜像

数据库实时备份

多级索引 (卖家和买家各自分库索引)

search build

业务cache刷新

价格变化等重要业务消息

Canal 工作原理:
22085340_om1D

原理相对比较简单:

canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议

mysql master收到dump请求,开始推送binary log给slave(也就是canal)

canal解析binary log对象(原始为byte流)

相关项目地址:

canal项目地址:https://github.com/alibaba/canal

otter项目地址:https://github.com/alibaba/otter

RocketMQ项目地址:https://github.com/alibaba/RocketMQ

淘宝实时数据传输平台: TimeTunnel

项目地址:http://code.taobao.org/p/TimeTunnel/src/

×