Cobar 基於MySQL的分布式資料庫服務中介軟體

2022-04-13 15:56:56 字數 1142 閱讀 5912

cobar是阿里巴巴研發的關係型資料的分布式處理系統,是提供關係型資料庫(mysql)分布式服務的中介軟體,該產品成功替代了原先基於oracle的資料儲存方案,它可以讓傳統的資料庫得到良好的線性擴充套件,並看上去還是乙個資料庫,對應用保持透明。

cobar的核心功能:

分布式:

cobar的分布式主要是通過將表放入不同的庫來實現:

要強調的是,cobar不支援將一張表,例如test表拆分成test_1, test_2, test_3…..放在同乙個庫中,必須將拆分後的表分別放入不同的庫來實現分布式。

ha

在使用者配置了mysql心跳的情況下,cobar可以自動向後端連線的mysql傳送心跳,判斷mysql執行狀況,一旦執行出現異常,cobar可以自動切換到備機工作。需要強調的是:

cobar的功能約束

cobar邏輯層次圖

cobar支援的資料庫結構(schema)的層次關係具有較強的靈活性,使用者可以將表自由放置不同的datanode,也可將不同的datasource放置在同一mysql例項上。在實際應用中,需要通過配置檔案(schema.xml)來定義我們需要的資料庫伺服器和表的分布策略。

cobar的實現原理

cobar的前、後端模組都實現了mysql協議;當接受到sql請求時,會依次進行解釋(sql parser)和路由(sql router)工作,然後使用sql executor去後端模組獲取資料集(後端模組還負責心跳檢測功能);如果資料集來自多個資料來源,cobar則需要把資料集進行組合(result merge),最後返回響應。

cobar採用了主流的reactor設計模式來處理請求,並使用nio進行底層的資料交換,這大大提公升系統的負載能力。其中,nioacceptor用於處理前端請求,nioconnector則用於管理後端的連線,nioprocessor用於管理多執行緒事件處理,nioreactor則用於完成底層的事件驅動機制,就是看起來和mina和netty的網路模型比較相似。

參考文件:

**:

基於Mysql實現分布式鎖

可以保證在分布式部署的應用集群中,同乙個方法在同一時間只能被一台機器上的乙個執行緒執行。這把鎖要是一把可重入鎖 避免死鎖 這把鎖最好是一把阻塞鎖 根據業務需求考慮要不要這條 這把鎖最好是一把公平鎖 根據業務需求考慮要不要這條 有高可用的獲取鎖和釋放鎖功能 獲取鎖和釋放鎖的效能要好 create ta...

基於FATFS的磁碟分布

本文主要採用fat32檔案系統的磁碟各個部分是如何劃分的 如包含兩個分割槽的磁碟整體分布如下 圖 帶有兩個分割槽的磁碟分布 圖 mbr的高層檢視 主引導記錄 mbr 位於裝置物理起始位置上的乙個或多個扇區。1.mbr 的引導區包含 dos引導引導程式 該 會在裝置格式化後被寫入 否則不會被動態 c ...

乙個關於Cobar 的釋疑

在測試 cobar 的過程中發現了乙個問題,就是當乙個 session 執行了lock table write後,其他session 包括該session 都查詢不了其他表了,直到有乙個 session 執行了unlock tables 簡例如下 session1 mysql create tabl...