MySQL 中間件 Mycat

介紹

        2013年阿里的Cobar在社區使用過程中發現存在一些比較嚴重的問題,及其使用限制,經過Mycat發起人第一次改良,第一代改良版——Mycat誕生。截至2015年11月,超過300個項目採用Mycat,涵蓋銀行、電信、電子商務、物流、移動應用、O2O的衆多領域和公司。

        從定義和分類來看,它是一個開源的分佈式數據庫系統,是一個實現了MySQL協議的服務器,前端用戶可以把它看作是一個數據庫代理,用MySQL客戶端工具和命令行訪問,而其後端可以用MySQL原生協議與多個MySQL服務器通信,也可以用JDBC協議與大多數主流數據庫服務器通信,其核心功能是分表分庫讀寫分離,即將一個大表水平分割爲N個小表,存儲在後端MySQL服務器裏或者其他數據庫裏。也可以指定多個寫庫多個讀庫。

        MyCat發展到目前的版本,已經不是一個單純的MySQL代理了,它的後端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流數據庫,也支持MongoDB這種新型NoSQL方式的存儲,未來還會支持更多類型的存儲。

        關鍵特性
        1. 支持SQL92標準
        2. 遵守Mysql原生協議,跨語言,跨平臺,跨數據庫的通用中間件代理。
        3. 基於心跳的自動故障切換,支持讀寫分離,支持MySQL主從,以及galera cluster集羣。
        4. 支持Galera for MySQL集羣,Percona Cluster或者MariaDB cluster
        5. 基於Nio實現,有效管理線程,高併發問題。
        6. 支持數據的多片自動路由與聚合,支持sum,count,max等常用的聚合函數。
        7. 支持單庫內部任意join,支持跨庫2表join,甚至基於caltlet的多表join。
        8. 支持通過全局表,ER關係的分片策略,實現了高效的多表join查詢。
        9. 支持多租戶方案。
        10. 支持分佈式事務(弱xa)。
        11. 支持全局序列號,解決分佈式下的主鍵生成問題。   
        12. 分片規則豐富,插件化開發,易於擴展。
        13. 強大的web,命令行監控。
        14. 支持前端作爲mysq通用代理,後端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。
        15. 支持密碼加密
        16. 支持服務降級
        17. 支持IP白名單
        18. 支持SQL黑名單、sql注入攻擊攔截
        19. 支持分表(1.6)
        20. 集羣基於ZooKeeper管理,在線升級,擴容,智能優化,大數據處理(2.0開發版)。


適合公司場景

1. Mycat通過心跳檢測,自主切換數據庫,保證高可用性能,無需手動卻換。
2. 多租戶應用,每個應用一個庫,但應用程序只連接mycat,從而不改造車改造程序本身,實現多租戶化
3. 讀寫分離
  • 事務內的SQL,全部走寫節點,除非某個select語句以註釋/*balance*/開頭
  • 自動提交select語句會走讀節點,並在所有可用讀節點中間隨機負載均衡
  • 當某個主節點宕機,則其全部讀節點都不再被使用,因爲此時,同步失敗,數據已經不是最新的,MyCAT會採用另外一個主節點所對應的全部讀節點來實現select負載均衡。
  • 當所有主節點都失敗,則爲了系統高可用性,自動提交的所有select語句仍將提交到全部存活的讀節點上執行,此時系統的很多頁面還是能出來數據,只是用戶修改或提交會失敗。


資料:
        1. 官網:http://mycat.io/
        2. 開發者的個人博客 http://songwie.com/teachs?searthstr=Mycat&start=0&limit=100 
        4. Mycat在線視頻培訓 地址:鏈接:http://pan.baidu.com/s/1nuR26rZ 密碼:1gr9 (2015

發佈了201 篇原創文章 · 獲贊 96 · 訪問量 77萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章