目錄
1.MyCat是什麼
Mycat 是數據庫中間件。
1、數據庫中間件
中間件:是一類連接軟件組件和應用的計算機軟件,以便於軟件各部件之間的溝通。例子:Tomcat,web中間件。
數據庫中間件:連接java應用程序和數據庫
2、爲什麼要用Mycat?
① Java與數據庫緊耦合。
② 高訪問量高併發對數據庫的壓力。
③ 讀寫請求數據不一致
3、數據庫中間件對比
① Cobar屬於阿里B2B事業羣,始於2008年,在阿里服役3年多,接管3000+個MySQL數據庫的schema,集羣日處理在線SQL請求50億次以上。由於Cobar發起人的離職,Cobar停止維護。
② Mycat是開源社區在阿里cobar基礎上進行二次開發,解決了cobar存在的問題,並且加入了許多新的功能在其中。青出於藍而勝於藍。
③ OneProxy基於MySQL官方的proxy思想利用c進行開發的,OneProxy是一款商業收費的中間件。捨棄了一些功能,專注在性能和穩定性上。
④ kingshard由小團隊用go語言開發,還需要發展,需要不斷完善。
⑤ Vitess是Youtube生產在使用,架構很複雜。不支持MySQL原生協議,使用需要大量改造成本。
⑥ Atlas是360團隊基於mysql proxy改寫,功能還需完善,高併發下不穩定。
⑦ MaxScale是mariadb(MySQL原作者維護的一個版本) 研發的中間件
⑧ MySQLRoute是MySQL官方Oracle公司發佈的中間件
4、Mycat的官網
2.MyCat能幹什麼
1、讀寫分離
2、數據分片
垂直拆分(分庫)、水平拆分(分表)、垂直+水平拆分(分庫分表)
3、多數據源整合
3.原理
Mycat 的原理中最重要的一個動詞是“攔截”,它攔截了用戶發送過來的 SQL 語句,首先對 SQL 語句做了一些特定的分析:如分片分析、路由分析、讀寫分離分析、緩存分析等,然後將此 SQL 發往後端的真實數據庫,並將返回的結果做適當的處理,最終再返回給用戶。
這種方式把數據庫的分佈式從代碼中解耦出來,程序員察覺不出來後臺使用Mycat 還是MySQL。