Oceanus - 來自 58 同城的數據庫中間件

jopen 9年前發布 | 12K 次閱讀 Oceanus
Oceanus 是 58 同城數據庫中間件。

關于DB中間件

在DB存儲需求中,盡管業務不同,技術難點還是類似的,開源世界有很多DB中間件,解決方案也以通用方案為主,滿足業務需要為前提,支持各種類型的需求。

Oceanus致力于打造一個功能簡單、可依賴、易于上手、易于擴展、易于集成的解決方案,甚至是平臺化系統。擁抱開源,提供各類插件機制集成其他開源項目,新手可以在幾分鐘內上手編程,分庫分表邏輯不再與業務緊密耦合,擴容有標準模式,減少意外錯誤的發生。

Oceanus內部名詞定義

  • datanode:數據源節點。為一個數據源命名,配置鏈接屬性、報警實現

  • namenode:數據源的簇。為一組數據源命名,指定這組數據源的負載方式、訪問模式、權重

  • table:映射表。匹配解析sql中的table名稱,命中table標簽的name屬性值后,會執行約定的路由邏輯

  • bean:實體。由其他標簽引用,實體類必須有無參的構造函數

  • tracker:監控埋點。涉及到計算和IO的功能點都有監控點,自定義一個埋點實現類,當功能耗時超出預期時會執行其中的回調函數,便于監控和優化系統

為什么說Oceanus是非常易用的

Oceanus在設計時非常注重使用者的評價,配置結構近乎于和使用者交流約定業務規則,便于不同的人看同一套配置,互相理解流程。當配置文件編 寫 完成后,編碼就變得更加簡單,只調用Oceanus客戶端的幾個方法就可以實現數據庫操作,不再關心HA、報警、負載均衡、性能監控等問題。良好的用戶視 覺減少了分庫分表在業務場景中的耦合度,對于編碼者就像只對一個table操作,Oceanus負責進行sql解析、路由、sql重寫。

如提交:    select * from user;

改寫成:    select * from user0;
           select * from user1;
           select * from user2;
           select * from user3;

分發給不同的庫(或者同庫)執行,用戶視覺如圖: Oceanus - 來自 58 同城的數據庫中間件

開源集成

“接地氣,擁抱開源” 是Oceanus的設計原則之一,可以很好的集成到mybatis和hibernate中,只要引用其中的插件,編寫Oceanus配置文件,然后改寫各 自的DataSource實現或ConnectionProvider即可做到集成。這樣既用到了熟悉的ORM,又借助Oceanus實現了分庫分表等功 能。

待開發

不得不說Oceanus在設計上非常靈活,使得每一個細小的功能點都有極高的切入價值,比如Cache機制、全局的ID生成規則、資源可視化監控等等,把其中某一個點做得足夠好,都會為整體產品帶來質的提升,簡化實際生產環境中的配套系統研發維護成本。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!