天天看點

[架構]--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