LinkedIn開源低延時變化數據捕獲系統Databus
LinkedIn于2月26日開源了其低延時變化數據捕獲系統Databus,該系統可以在MySQL以及Oracle數據源上捕獲數據,當下LinkedIn只開源了Oracle上的連接器。Databus作為LinkedIn生態系統中的一致性保障組件,在低延時的情況下仍然具有高有效性;而其最大的特點莫過于無限制lookback能力及豐富的subscription功能。
以下為LinkedIn上Databus簡述譯文:
何為Databus
LinkedIn擁有一個針對數據儲存和服務系統的多樣化生態系統。首要的OLTP數據存儲是針對于寫和讀操作開發。其它的專業系統則聚焦于復雜查詢以及通過緩存對查詢進行加速。舉個例子:通過Search Index系統來服務搜索查詢,這會需要系統不間斷給主數據庫數據做索引。
這將導致對可靠性的特殊需求,事務一致性需求將貫穿整個系統 —— 從主數據源中捕獲變化數據并發送給派生數據系統。針對這個需求,LinkedIn建立了Databus,添為LinkedIn數據處理管道的重要組成部分。Databus傳輸層實現了毫秒級終端到終端的數據傳輸,在具備無限制的lookback(還原)能力及豐富subscription(截取)的功能同時,還保障了單服務器每秒數以萬計的改變事件(change event)。

如上圖所述,類似于Search Index及Read Replica這些作為Databus的Consumer(類節點)使用的將是Client Library(客戶端庫)。當對一個主OLTP數據庫做寫操作時,連接了這個數據庫的Relay們將會把改變存入Relay中;Databus這些被嵌入內存或者索引的Consumer將會把它從Relay或Bootstrap(引導程序)中取出,并且根據情況修改索引或者緩存,這就做到了根據源數據庫的狀態實時的更新索引。
Databus工作原理簡述
Databus重要特性如下:
數據源獨立:Databus支持從多樣的數據源中捕捉變化數據,包括Oracle及MySQL。Oracle轉接器已經被開源,不久后也將會開源MySQL轉接器。
可擴展和高有效性:在保證高有效性的同時,Databus可以擴展到上萬個Consumer和事務型源數據庫上。
事務有序的進行交付:Databus為源數據庫保存了事務保障,并且根據源提交順序分組的對改變事務進行交付。
低延時以及豐富的subscription功能:一旦數據源發生改變,Databus可以在幾毫秒內將事務交付到Consumer。Consumer同樣可以使用Databus服務器端的篩選對數據流的指定部分進行檢索。
無限制的lookback:Databus中最革新的部分就是Consumer可以無限制的lookback。Consumer對完整數據做拷貝時(比如說一個新的搜索索引)不會給主OLTP數據庫帶來額外的負載,這一點在Consumer性能大幅度下降時同樣會有所幫助。

如上圖所示,Databus系統由Relay、Bootstrap Service和Client Library組成。Relay從源數據庫中捕獲改變內容,并將事件儲存在一個高性能的日志存儲中。Bootstrap Service會通過Relay改變流申請為源數據庫儲存一個流動的快照。應用程序使用Databus Client Library從Relay或者Bootstrap中抽取改變流,并且通過Consumer(實現了庫內定義的回調API)對改變事件進行處理。
快速的從Databus Relay中轉移Consumer需要的檢索事件。如果一個Consumer的性能下降到它所請求的事件已經不再保存在Relay的日志里,這個Consumer需要交付一個快照 —— 保存了該Consumer上一次處理完成至今所發生的改變合集;如果一個新的(沒有之前版本數據集)Consumer建立,這樣新加入的Consumer可以快速的保持一致。