canalBinlog 的增量訂閱和消費組件
canal 是阿里巴巴 MySQL 數(shù)據庫 Binlog 的增量訂閱&消費組件。
名稱:canal [k?'næl]
譯意: 水道/管道/溝渠
語言: 純java開發(fā)
定位: 基于數(shù)據庫增量日志解析,提供增量數(shù)據訂閱&消費,目前主要支持了MySQL
早期,阿里巴巴 B2B 公司因為存在杭州和美國雙機房部署,存在跨機房同步的業(yè)務需求。不過早期的數(shù)據庫同步業(yè)務,主要是基于 trigger 的方式獲取增量 變更,不過從 2010 年開始,阿里系公司開始逐步的嘗試基于數(shù)據庫的日志解析,獲取增量變更進行同步,由此衍生出了增量訂閱&消費的業(yè)務,從此開 啟了一段新紀元。ps. 目前內部使用的同步,已經支持 MySQL 5.x 和 Oracle 部分版本的日志解析
基于日志增量訂閱&消費支持的業(yè)務:
-
數(shù)據庫鏡像
-
數(shù)據庫實時備份
-
多級索引 (賣家和買家各自分庫索引)
-
search build
-
業(yè)務cache刷新
-
價格變化等重要業(yè)務消息
Canal 工作原理:
原理相對比較簡單:
-
canal模擬mysql slave的交互協(xié)議,偽裝自己為mysql slave,向mysql master發(fā)送dump協(xié)議
-
mysql master收到dump請求,開始推送binary log給slave(也就是canal)
-
canal解析binary log對象(原始為byte流)
評論
圖片
表情
