天天看點

認識分布式資料庫中間件

傳統的架構模式就是 應用連接配接資料庫直接對資料進行通路,這種架構特點就是簡單友善。

但是随着目前資料量不斷的增大我們就遇到了問題:

  • 單個表資料量太大
  • 單個庫資料量太大
  • 單台資料量伺服器壓力很大
  • 讀寫速度遇到瓶頸

中間件與讀寫分離

很多人都會把中間件認為是讀寫分離,其實讀寫分離隻是中間件可以提供的一種功能,最主要的功能還是在于他可以 分庫分表 ,下面是一個讀寫分離的

認識分布式資料庫中間件

上面的圖可以看出,紅線代表寫請求,綠線代表讀請求。這就是一個簡單的讀寫分離。

中間件與分庫分表

認識分布式資料庫中間件

按照中間件分庫分表算法,此SQL将發送到DB1節點,由DB1這個MySQL負責解析和擷取id=1的資料,并通過中間件傳回給用戶端。而在讀寫分離結構中并沒有這些分庫分表規則, 他隻能在衆多讀節點中load balance随機進行分發,它要求各個節點都要存放一份完整的資料。

各資料庫中間件認識

Cobar:

阿裡巴巴B2B開發的關系型分布式系統,管理将近3000個MySQL執行個體。 在阿裡經受住了考驗,後面由于作者的走開的原因cobar沒有人維護 了,阿裡也開發了tddl替代cobar。

MyCAT:

社群愛好者在阿裡cobar基礎上進行二次開發,解決了cobar當時存 在的一些問題,并且加入了許多新的功能在其中。目前MyCAT社群活 躍度很高,目前已經有一些公司在使用MyCAT。總體來說支援度比 較高,也會一直維護下去,

OneProxy:

資料庫界大牛,前支付寶資料庫團隊上司樓總開發,基于mysql官方 的proxy思想利用c進行開發的,OneProxy是一款商業收費的中間件, 樓總舍去了一些功能點,專注在性能和穩定性上。有朋友測試過說在 高并發下很穩定。

Vitess:

這個中間件是Youtube生産在使用的,但是架構很複雜。 與以往中間件不同,使用Vitess應用改動比較大要 使用他提供語言的API接口,我們可以借鑒他其中的一些設計思想。

Kingshard:

Kingshard是前360Atlas中間件開發團隊的陳菲利用業務時間 用go語言開發的,目前參與開發的人員有3個左右, 目前來看還不是成熟可以使用的産品,需要在不斷完善。

Atlas:

360團隊基于mysql proxy 把lua用C改寫。原有版本是支援分表, 目前已經放出了分庫分表版本。在網上看到一些朋友經常說在高并 發下會經常挂掉,如果大家要使用需要提前做好測試。

MaxScale與MySQL Route:

這兩個中間件都算是官方的吧,MaxScale是mariadb (MySQL原作者維護的一個版本)研發的,目前版本不支援分庫分表。

MySQL Route是現在MySQL 官方Oracle公司釋出出來的一個中間件。

這兩個中間件後面也會跟進測試下,看下效果如何。

4. 結語

這裡主要是簡單介紹了下各種中間件由來和特點,後面文章會陸續介紹各個中間件更詳細的特性,優缺點,性能測試結果。

繼續閱讀