當前位置:
首頁 > 最新 > 淺談MySQL分散式中間件MYCAT

淺談MySQL分散式中間件MYCAT

在應用系統用戶量不斷增加之後,帶來性能上的瓶頸,此時通過在應用的服務端添加負載均衡即可提升性能,但是系統訪問數量還在不斷增加,有一天發現再增加應用層的負載均衡已經達不到預期的效果了,此時的性能瓶頸很可能在資料庫,單台資料庫已經達到了性能上限,但是將資料庫進行負載均衡是非常麻煩的,此時應該考慮使用資料庫的分散式中間件產品MYCAT,它為資料庫訪問量不斷增大時出現性能瓶頸提供了解決問題思路。

Amoeba是阿里在2008年推出的,當時正好是在阿里去IOE的浪潮中,Amoeba提供了負載均衡,SQL過濾等功能,在2012年隨著阿里業務量增長,Amoeba也越來越不適應當時不斷增長的需求,同年在Amoeba的基礎上阿里開源了替代Amoeba的產品Cobar,不過後來就沒進行維護了,Cobar本身也存在不少問題,在2013年阿里推出了開源產品MYCAT,MYCAT在Cobar系統的基礎上進行了升級和改造,修復了很多問題。MYCAT是基於Java的一個分散式資料庫系統中間層,為高並發下資料庫的分散式提供解決方案。

MYCAT的主要作用是什麼?尚學堂?百戰程序員陳老師指出資料庫中間層是位於前端應用和後端資料庫之間的一個層。傳統Java項目使用資料庫連接池的形式連接資料庫,這樣多個項目連接同一個資料庫,冗餘的連接會隨著項目的增加而出現線性增長,這不利於資料庫連接數量的控制,但是當使用中間層之後,前端應用統一通過中間層獲取連接,將不用自己維護連接池,可避免連接數不斷增加的問題。資料庫中間層還可以屏蔽後端資料庫的一些變更,使前台應用不受影響,例如對資料庫進行了水平或者垂直切分。

MYCAT原生實現了對MySQL的支持,也可以通過jdbc形式連接其它關係型資料庫 如 Oracle,Sqlserver,也可以連接非關係型資料庫 如 mongodb,這個功能其他同類型產品沒有。可實現資料庫的讀寫分離,在後端的主從複製資料庫集群中,通過MYCAT配置,將前台的寫操作路由到主資料庫中,將讀操作路由到從資料庫上。

MYCAT可以實現讀寫分離下的讀操作負載均衡,將大量的讀操作均衡到不同的從庫上,主要出現在一主多從情形下。

MYCAT可實現資料庫的高可用,在資料庫主節點可用的情況下,配置一台可寫從節點,這兩個節點都配置在MYCAT中,當主節點宕機時,MyCAT會自動將寫操作路由到備用節點上,但並不支持在切換之後的繼續主從同步。

當讀寫分離已經不能滿足持續增加的訪問量時,MYCAT可實現資料庫的垂直拆分,將所有的資料庫表按照模塊劃分,不同類型的表拆分到不同的資料庫伺服器。

隨著業務量的增長,垂直拆分之後如果又出現了資料庫性能問題,則需要進行水平切分,這就是俗稱的分庫分表。將數據量很大的表數據切分到不同的伺服器庫中,表結構是一樣的,而使用MYCAT實現水平切分,對前端應用是完全透明的,不用調整前台邏輯。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 科技大咖匯 的精彩文章:

淺談SpringMVC和MyBatis在應用方面的優勢

TAG:科技大咖匯 |