感謝原文作者: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