Mycat原理、應用場景


Mycat原理

Mycat的原理並不復雜,復雜的是代碼,如果代碼也不復雜,那么早就成為一個傳說了。
Mycat的原理中最重要的一個動詞是“攔截”,它攔截了用戶發送過來的SQL語句,首先對SQL語句做了一些特定的分析:如分
片分析、路由分析、讀寫分離分析、緩存分析等,然后將此SQL發往后端的真實數據庫,並將返回的結果做適當的處理,最終再
返回給用戶。

上述圖片里,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權威指南,感謝作者


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM