天天看点

[架构]--Canal开源产品介绍

感谢原文作者:​​https://docs.google.com/presentation/d/1MkszUPYRDkfVPz9IqOT1LLT5d9tuwde_WC8GZvjaDRg/edit#slide=id.p8​​

​​1​​ Canal开源产品介绍taobao

​​2​​ Agenda1. 产生背景2. 项目介绍3. 周边产品4. roadmap

​​3​​ 产生背景早期,阿里巴巴B2B公司因为存在杭州和美国 双机房部署,存在跨机房同步的业务需求,当时 早期的数据库同步业务,主要是基于trigger的方式 获取增量变更。从2010年开始,阿里系公司开始逐步的尝试基 于数据库的日志解析,获取增量变更进行同步, 由此衍生出了增量订阅&消费的业务,从此开启 了一段新纪元.

​​4​​ Canal介绍 名称: canal [kə'næl] 译意: 水道/管道/沟渠 语言: 纯java开发

定位: 基于数据库增量日志准实时解析,提供增量数据订 阅&消费(目前开源版本主要支持了mysql)

​​5​​ Mysql同步原理Mysql Slave同步原理:a. I/O thread接收binlogb. SQL thread执行变更

​​6​​ Mysql同步原理Binlog Dump交互

​​7​​ Mysql同步原理更多协议参考:

​​8​​ Canal工作原理实时增量数据获取原理:模拟slave的交互协议,伪装自己为mysql slave (类似于I/O thread线程)

​​9​​ Canal工作原理数据消费原理:基于网络协议,提供数据订阅&消费,类似于SQL Thread实现业务自定义

​​10​​ Canal Server模块 1. server代表一个canal server运行实例,对应于一个jvm

2. instance对应于一个数据队列 (1个server对应0..n个instance)

​​11​​ Canal Server模块 server模块: 基于netty网络处理 + protobuf数据传输格式 instance模块:

a. eventParser增量数据解析器,目前仅支持mysqlb. eventSink数据过滤,加工,分发的工作c. eventStore数据存储,目前1.0.6仅支持memory,file存储开发中d. metaManager增量订阅&消费信息管理器

​​12​​ Canal Server配置示例 

​​13​​ Client/Server交互 

​​14​​ Client/Server交互 

​​15​​ 数据对象格式 

​​16​​ Canal Client示例 

​​17​​ Canal Client示例 

​​18​​ 基于Canal能做什么? 1. 数据库镜像&备份 2. 异构数据库同步 3. 多地机房 4. 二级索引 5. 搜索引擎增量build

1. 数据库镜像&备份2. 异构数据库同步3. 多地机房4. 二级索引5. 搜索引擎增量build6. 数据库操作审计7. 业务cache刷新8. 价格变化等重要业务变更消息

​​19​​ Canal目前使用情况 Alibaba 200+ 数据解析任务 Canal使用群人数已超70+ a. 数据规模:6亿+

b. 支持mysql5.1.40/48 , mysqlCanal使用群人数已超70+

​​20​​ 类似开源产品 1. linkedin databus https://github.com/linkedin/databus

2. tungsten-replicator3. open-replicator

​​21​​ Roadmap 1. topic模式支持 web管理系统 新数据源接入 4. client代码共建(共性业务场景) 数据库同步

Auth权限管理监控体系新数据源接入a. Hbase增量4. client代码共建(共性业务场景)数据库同步nosql同步(如hbase)

​​22​​ 相关资料 1. canal wiki https://github.com/alibaba/canal/wiki

2. mysql binary log3. mysql replication-protocolprotocol.html

​​23​​ 问题反馈 1. qq交流群: 161559791 2.

3. 新浪微博: agapple00024. 报告issue:issues