前言
最近小鹹兒學習到了多租戶的知識,但是在學習的時候第一個接觸的就是MYCAT,接下來就看一下MYCAT是什麼。
什麼是MYCAT
- 一個徹底開源的,面向企業應用開發的大數據庫集羣
- 支持事務、ACID、可以替代MySQL的加強版數據庫
- 一個可以視爲MySQL集羣的企業級數據庫,用來替代昂貴的Oracle集羣
- 一個融合內存緩存技術、NoSQL技術、HDFS大數據的新型SQL Server
- 結合傳統數據庫和新型分佈式數據倉庫的新一代企業級數據庫產品
- 一個新穎的數據庫中間件產品
簡單來說,就是在程序和數據庫中間添加了一箇中間件,可以通過配置致使程序去訪問不同的數據庫。
優勢
基於阿里開源的Cobar產品而研發,Cobar的穩定性、可靠性、優秀的架構和性能以及衆多成熟的使用案例使得MYCAT一開始就擁有一個很好的起點,站在巨人的肩膀上,我們能看到更遠。業界優秀的開源項目和創新思路被廣泛融入到MYCAT的基因中,使得MYCAT在很多方面都領先於目前其他一些同類的開源項目,甚至超越某些商業產品。
MYCAT背後有一支強大的技術團隊,其參與者都是5年以上資深軟件工程師、架構師、DBA等,優秀的技術團隊保證了MYCAT的產品質量。
MYCAT並不依託於任何一個商業公司,因此不像某些開源項目,將一些重要的特性封閉在其商業產品中,使得開源項目成了一個擺設。
MYCAT高可用方案
MYCAT關鍵特性
- 支持SQL92標準
- 支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常見SQL語法
- 遵守MySQL原生協議,跨語言,跨平臺,跨數據庫的通用中間件代理
- 基於心跳的自動故障切換,支持讀寫分離,支持MySQL主從,以及galera cluster集羣
- 支持Galera for MySQL集羣,Percona Cluster或者MariaDB cluster
- 基於Nio實現,有效管理線程,解決高併發問題
- 支持數據的多片自動路由與聚合,支持sum,count,max等常用的聚合函數,支持跨庫分頁
- 支持單庫內部任意join,支持跨庫兩表join,甚至基於caltlet的多表join
- 支持通過全局表,ER關係的分片策略,實現了高效的多表join查詢。
- 支持多租戶方案 ------------重點使用(小鹹兒項目)
- 支持分佈式事務(弱xa)
- 支持XA分佈式事務(1.6.5)
- 支持全局序列號,解決分佈式下的主鍵生成問題
- 分片規則豐富,插件化開發,易於擴展
- 強大的web,命令行監控
- 支持前端作爲MySQL通用代理,後端JDBC方式支持Oracle、DB2、SQL Server、MongoDB、巨杉
- 支持密碼加密
- 支持服務降級
- 支持IP白名單
- 支持SQL黑名單、SQL注入攻擊攔截
- 支持prepare預編譯指令(1.6)
- 支持非堆內存(Direct Memory)聚合計算*(1.6)
- 支持PostgreSQL的native協議(1.6)
- 支持MySQL和Oracle存儲過程,out參數、多結果集返回(1.6)
- 支持zookeeper協調主從切換、zk序列、配置zk化(1.6)
- 支持庫內分表(1.6)
- 集羣基於Zookeeper管理,在線升級,擴容,智能優化,大數據處理(2.0開發版)