天天看點

Mycat原理、應用場景

Mycat原理

Mycat的原理并不複雜,複雜的是代碼,如果代碼也不複雜,那麼早就成為一個傳說了。

Mycat的原理中最重要的一個動詞是“攔截”,它攔截了使用者發送過來的SQL語句,首先對SQL語句做了一些特定的分析:如分

片分析、路由分析、讀寫分離分析、緩存分析等,然後将此SQL發往後端的真實資料庫,并将傳回的結果做适當的處理,最終再

傳回給使用者。

Mycat原理、應用場景

上述圖檔裡,Orders表被分為三個分片datanode(簡稱dn),這三個分片是分布在兩台MySQL Server上(DataHost),即

datanode=database@datahost方式,是以你可以用一台到N台伺服器來分片,分片規則為(sharding rule)典型的字元串枚舉

分片規則,一個規則的定義是分片字段(sharding column)+分片函數(rule function),這裡的分片字段為prov而分片函數為字

符串枚舉方式。

當Mycat收到一個SQL時,會先解析這個SQL,查找涉及到的表,然後看此表的定義,如果有分片規則,則擷取到SQL裡分片字

段的值,并比對分片函數,得到該SQL對應的分片清單,然後将SQL發往這些分片去執行,最後收集和處理所有分片傳回的結果

資料,并輸出到用戶端。以select * from Orders where prov=?語句為例,查到prov=wuhan,按照分片函數,wuhan傳回

dn1,于是SQL就發給了MySQL1,去取DB1上的查詢結果,并傳回給使用者。

如果上述SQL改為select * from Orders where prov in (‘wuhan’,‘beijing’),那麼,SQL就會發給MySQL1與MySQL2去

執行,然後結果集合并後輸出給使用者。但通常業務中我們的SQL會有Order By 以及Limit翻頁文法,此時就涉及到結果集在

Mycat端的二次處理,這部分的代碼也比較複雜,而最複雜的則屬兩個表的Jion問題,為此,Mycat提出了創新性的ER分片、全

局表、HBT(Human Brain Tech)人工智能的Catlet、以及結合Storm/Spark引擎等十八般武藝的解決辦法,進而成為目前業界

最強大的方案,這就是開源的力量!

應用場景

Mycat發展到現在,适用的場景已經很豐富,而且不斷有新使用者給出新的創新性的方案,以下是幾個典型的應用場景:

單純的讀寫分離,此時配置最為簡單,支援讀寫分離,主從切換

分表分庫,對于超過1000萬的表進行分片,最大支援1000億的單表分片

多租戶應用,每個應用一個庫,但應用程式隻連接配接Mycat,進而不改造程式本身,實作多租戶化

報表系統,借助于Mycat的分表能力,處理大規模報表的統計

替代Hbase,分析大資料

作為海量資料實時查詢的一種簡單有效方案,比如100億條頻繁查詢的記錄需要在3秒内查詢出來結果,除了基于主鍵的查

詢,還可能存在範圍查詢或其他屬性查詢,此時Mycat可能是最簡單有效的選擇

Mycat長期路線圖

強化分布式資料庫中間件的方面的功能,使之具備豐富的插件、強大的資料庫智能優化功能、全面的系統監控能力、以及方

便的資料運維工具,實作線上資料擴容、遷移等進階功能

進一步挺進大資料計算領域,深度結合Spark Stream和Storm等分布式實時流引擎,能夠完成快速的巨表關聯、排序、分組

聚合等 OLAP方向的能力,并內建一些熱門常用的實時分析算法,讓工程師以及DBA們更容易用Mycat實作一些進階資料分

析處理功能。

不斷強化Mycat開源社群的技術水準,吸引更多的IT技術專家,使得Mycat社群成為中國的Apache,并将Mycat推到Apache

基金會,成為國内頂尖開源項目,最終能夠讓一部分志願者成為專職的Mycat開發者,榮耀跟實力一起提升。

依托Mycat社群,聚集100個CXO級别的精英,衆籌建設親親山莊,Mycat社群+親親山莊=中國最大IT O2O社群

                                                                                       收錄于:Mycat權威指南,感謝作者

本文轉自 張沖andy 部落格園部落格,原文連結:   http://www.cnblogs.com/andy6/p/6622324.html,如需轉載請自行聯系原作者