Databus 分布式資料庫同步系統

2021-08-14 21:42:10 字數 1682 閱讀 9173

社群wiki主頁:

乙個大型分布式系統往往存在多種的儲存系統,mysql,tair,redis,memcache,hbase等等。一些重要的或者需要事務支援的資料操作,通常都會放到mysql處理。但是,為了滿足高效能的訪問需求或者做一些服務定製化的查詢,業務上通常又會把mysql的資料再寫到tair或者redis等外部儲存中乙份。

以業務將tair作為mysql的快取記憶體為例,通常業務在**中會有這麼一段邏輯,讀取tair,資料不存在,從mysql讀取資料,然後寫入tair。使用者變更mysql,然後會同時重新整理tair,或者將tair資料刪除。為了降低客戶端複雜度並且防止快取穿透,常會引入mq進行非同步同步,如下圖所示:

但是無論客戶端同步方式還是mq方式,其實都會存在資料一致性問題,這些場景,如果沒有乙個強一致協議(比如兩階段提交,paxos等)是很難解決掉的。

現在,有了databus,上面提到的這些一致性問題就都沒有了,並且,那些冗長的雙寫邏輯也可以去掉了。

databus是乙個實時的、可靠的、支援事務的、保持一致性的資料變更抓取系統。 2023年在linkedin正式進入生產系統,2023年開源。

databus通過挖掘資料庫日誌的方式,將資料庫變更實時、可靠的從資料庫拉取出來,業務可以通過定製化client實時獲取變更。

databus的傳輸層端到端延遲是微秒級的,每台伺服器每秒可以處理數千次資料吞吐變更事件,同時還支援無限回溯能力和豐富的變更訂閱功能。

低延遲、支援多種訂閱機制:資料來源變更完成後,databus能在微秒級內將事務提交給消費者。同時,消費者使用databus中的伺服器端過濾功能,可以只獲取自己需要的特定資料。

無限回溯:這是databus最具創新性的元件之一,對消費者支援無限回溯能力。當消費者需要產生資料的完整拷貝時(比如新的搜尋索引),它不會對資料庫產生任何額外負擔,就可以達成目的。當消費者的資料大大落後於**資料庫時,也可以使用該功能。

databus概要結構:

圖中顯示:search index和read replicas等系統是databus的消費者。當主資料庫發生寫操作時,連線其上的中繼系統會將資料拉到中繼中。簽入在search index或是快取中的databus消費者客戶端,就會從中繼中拉出資料,並更新索引或快取。

上圖中介紹了databus系統的構成,包括中繼relay、bootstrap服務和客戶端庫。bootstrap服務中包括bootstrap producer和bootstrap server。快速變化的消費者直接從relay中取事件。如果乙個消費者的資料更新大幅落後,它要的資料就不在relay的日誌中,而是在 bootstrap producer裡面,提交給它的,將會是自消費者上次處理變更之後的所有資料變更快照。

在linkedin,databus支援的系統有:

個人介紹:

高廣超:多年一線網際網路研發與架構設計經驗,擅長設計與落地高可用、高效能、可擴充套件的網際網路架構。

分布式資料庫

網路選課系統中分布式資料庫設計 何翠雙王巧雲張麗麗 摘要 關鍵字 選課 分布式 資料庫 distributed system of on line course choosing abstract key words course choosing distributed database 隨著學校...

分布式資料庫

1 背景 我們知道資料是乙個公司的命脈,隨著業務越做越大,資料量也會越來越大,計算也會越來越複雜,效能,可靠性,可擴充套件性的需求就會越來越強烈,這個時候乙個集中式的資料庫顯然已經滿足不了需求了。對於技術決策者來說有兩條路可以走,第一 按照現有的大型資料庫的解決方案,比如sql server clu...

分布式資料庫

一 分布式資料庫的出現的場景 網際網路 軟體國產化 o2o 五新 新零售 新製造,新金融 新資源 新技術 等主題接連提出來,並且在各個行業落地,給資料庫帶來了巨大機會,具體包含3個方向 1.遠超單機資料庫容量的資料儲存和訪問峰值 2.實時資料分析檢索 oltp兼顧olap 3.更高階別的容災需求。這...