canal
定位: 基于數(shù)據(jù)庫增量日志解析域那,提供增量數(shù)據(jù)訂閱&消費秀菱,目前主要支持了mysql
原理:
canal模擬mysql slave的交互協(xié)議厘熟,偽裝自己為mysql slave颁湖,向mysql master發(fā)送dump協(xié)議
mysql master收到dump請求俗他,開始推送binary log給slave(也就是canal)
canal解析binary log對象(原始為byte流)
官網(wǎng)文檔/源碼(可谷歌右鍵翻譯屎媳,有詳細的接入案例):https://github.com/alibaba/canal
網(wǎng)上好的學習鏈接:http://www.reibang.com/p/6299048fad66
http://www.reibang.com/p/6299048fad66
源碼結(jié)構(gòu)解析:http://www.tianshouzhi.com/api/tutorials/canal/380
偏日志解析的文章:https://blog.csdn.net/varyall/article/details/79208574
配置文件解析:https://blog.csdn.net/my201110lc/article/details/80765356
架構(gòu)模型:https://blog.csdn.net/nuaazhaofeng/article/details/80513174
源碼啟動時序圖:http://www.reibang.com/p/d7d1b42242f1
parser
整個parser過程大致可分為幾步:
Connection獲取上一次解析成功的位置(如果第一次啟動秽梅,則獲取初始制定的位置或者是當前數(shù)據(jù)庫的binlog位點)
Connection建立連接,發(fā)生BINLOG_DUMP命令
Mysql開始推送Binary Log
接收到的Binary Log通過Binlog parser進行協(xié)議解析剿牺,補充一些特定信息
傳遞給EventSink模塊進行數(shù)據(jù)存儲企垦,是一個阻塞操作,直到存儲成功
存儲成功后晒来,定時記錄Binary Log位置
sink
說明:
- 數(shù)據(jù)過濾:支持通配符的過濾模式钞诡,表名,字段內(nèi)容等
- 數(shù)據(jù)路由/分發(fā):解決1:n (1個parser對應多個store的模式)
- 數(shù)據(jù)歸并:解決n:1 (多個parser對應1個store)
- 數(shù)據(jù)加工:在進入store之前進行額外的處理湃崩,比如join
Maxwell
官網(wǎng):http://maxwells-daemon.io/
好的文章:https://blog.csdn.net/wwwdc1012/article/details/88388552
canal 由Java開發(fā)荧降,分為服務端和客戶端,擁有眾多的衍生應用攒读,性能穩(wěn)定朵诫,功能強大;canal 需要自己編寫客戶端來消費canal解析到的數(shù)據(jù)薄扁。
maxwell相對于canal的優(yōu)勢是使用簡單剪返,它直接將數(shù)據(jù)變更輸出為json字符串,不需要再編寫客戶端邓梅。
建議使用maxwell脱盲。
Databus
Databus是一種低延遲變化捕獲系統(tǒng),已成為LinkedIn數(shù)據(jù)處理管道不可或缺的一部分日缨。Databus解決了可靠捕獲钱反,流動和處理主要數(shù)據(jù)更改的基本要求。Databus提供以下功能:
源與消費者之間的隔離
保證按順序和至少一次交付具有高可用性
從更改流中的任意時間點開始消耗匣距,包括整個數(shù)據(jù)的完全引導功能面哥。
分區(qū)消費
源一致性保存
阿里云的數(shù)據(jù)傳輸服務DTS
數(shù)據(jù)傳輸服務(Data Transmission Service,簡稱DTS)是阿里云提供的一種支持 RDBMS(關(guān)系型數(shù)據(jù)庫)毅待、NoSQL尚卫、OLAP 等多種數(shù)據(jù)源之間數(shù)據(jù)交互的數(shù)據(jù)流服務。DTS提供了數(shù)據(jù)遷移恩静、實時數(shù)據(jù)訂閱及數(shù)據(jù)實時同步等多種數(shù)據(jù)傳輸能力焕毫,可實現(xiàn)不停服數(shù)據(jù)遷移、數(shù)據(jù)異地災備驶乾、異地多活(單元化)邑飒、跨境數(shù)據(jù)同步、實時數(shù)據(jù)倉庫级乐、查詢報表分流疙咸、緩存更新、異步消息通知等多種業(yè)務應用場景风科,助您構(gòu)建高安全撒轮、可擴展、高可用的數(shù)據(jù)架構(gòu)贼穆。
優(yōu)勢:數(shù)據(jù)傳輸(Data Transmission)服務 DTS 支持 RDBMS题山、NoSQL、OLAP 等多種數(shù)據(jù)源間的數(shù)據(jù)傳輸故痊。它提供了數(shù)據(jù)遷移顶瞳、實時數(shù)據(jù)訂閱及數(shù)據(jù)實時同步等多種數(shù)據(jù)傳輸方式。相對于第三方數(shù)據(jù)流工具愕秫,數(shù)據(jù)傳輸服務 DTS 提供更豐富多樣慨菱、高性能、高安全可靠的傳輸鏈路戴甩,同時它提供了諸多便利功能符喝,極大得方便了傳輸鏈路的創(chuàng)建及管理。
個人理解:就是一個消息隊列甜孤,會給你推送它包裝過的sql對象协饲,可以自己做個服務去解析這些sql對象。
阿里文檔快速入口:https://help.aliyun.com/product/26590.html
免去部署維護的昂貴使用成本缴川。DTS針對阿里云RDS(在線關(guān)系型數(shù)據(jù)庫)囱稽、DRDS等產(chǎn)品進行了適配,解決了Binlog日志回收二跋,主備切換战惊、VPC網(wǎng)絡切換等場景下的訂閱高可用問題。同時扎即,針對RDS進行了針對性的性能優(yōu)化吞获。出于穩(wěn)定性、性能及成本的考慮谚鄙,推薦使用各拷。