Mycat原理
Mycat的原理并不復(fù)雜,復(fù)雜的是代碼,如果代碼也不復(fù)雜,那么早就成為一個傳說了。 Mycat的原理中最重要的一個動詞是“攔截”,它攔截了用戶發(fā)送過來的SQL語句,首先對SQL語句做了一些特定的分析:如分 片分析、路由分析、讀寫分離分析、緩存分析等,然后將此SQL發(fā)往后端的真實數(shù)據(jù)庫,并將返回的結(jié)果做適當(dāng)?shù)奶幚?,最終再 返回給用戶。
上述圖片里,Orders表被分為三個分片datanode(簡稱dn),這三個分片是分布在兩臺MySQL Server上(DataHost),即 datanode=database@datahost方式,因此你可以用一臺到N臺服務(wù)器來分片,分片規(guī)則為(sharding rule)典型的字符串枚舉 分片規(guī)則,一個規(guī)則的定義是分片字段(sharding column)+分片函數(shù)(rule function),這里的分片字段為prov而分片函數(shù)為字 符串枚舉方式。 當(dāng)Mycat收到一個SQL時,會先解析這個SQL,查找涉及到的表,然后看此表的定義,如果有分片規(guī)則,則獲取到SQL里分片字 段的值,并匹配分片函數(shù),得到該SQL對應(yīng)的分片列表,然后將SQL發(fā)往這些分片去執(zhí)行,最后收集和處理所有分片返回的結(jié)果 數(shù)據(jù),并輸出到客戶端。以select * from Orders where prov=?語句為例,查到prov=wuhan,按照分片函數(shù),wuhan返回 dn1,于是SQL就發(fā)給了MySQL1,去取DB1上的查詢結(jié)果,并返回給用戶。 如果上述SQL改為select * from Orders where prov in (‘wuhan’,‘beijing’),那么,SQL就會發(fā)給MySQL1與MySQL2去 執(zhí)行,然后結(jié)果集合并后輸出給用戶。但通常業(yè)務(wù)中我們的SQL會有Order By 以及Limit翻頁語法,此時就涉及到結(jié)果集在 Mycat端的二次處理,這部分的代碼也比較復(fù)雜,而最復(fù)雜的則屬兩個表的Jion問題,為此,Mycat提出了創(chuàng)新性的ER分片、全 局表、HBT(Human Brain Tech)人工智能的Catlet、以及結(jié)合Storm/Spark引擎等十八般武藝的解決辦法,從而成為目前業(yè)界 最強大的方案,這就是開源的力量!
應(yīng)用場景 Mycat發(fā)展到現(xiàn)在,適用的場景已經(jīng)很豐富,而且不斷有新用戶給出新的創(chuàng)新性的方案,以下是幾個典型的應(yīng)用場景: 單純的讀寫分離,此時配置最為簡單,支持讀寫分離,主從切換 分表分庫,對于超過1000萬的表進(jìn)行分片,最大支持1000億的單表分片 多租戶應(yīng)用,每個應(yīng)用一個庫,但應(yīng)用程序只連接Mycat,從而不改造程序本身,實現(xiàn)多租戶化 報表系統(tǒng),借助于Mycat的分表能力,處理大規(guī)模報表的統(tǒng)計 替代Hbase,分析大數(shù)據(jù) 作為海量數(shù)據(jù)實時查詢的一種簡單有效方案,比如100億條頻繁查詢的記錄需要在3秒內(nèi)查詢出來結(jié)果,除了基于主鍵的查 詢,還可能存在范圍查詢或其他屬性查詢,此時Mycat可能是最簡單有效的選擇 Mycat長期路線圖 強化分布式數(shù)據(jù)庫中間件的方面的功能,使之具備豐富的插件、強大的數(shù)據(jù)庫智能優(yōu)化功能、全面的系統(tǒng)監(jiān)控能力、以及方 便的數(shù)據(jù)運維工具,實現(xiàn)在線數(shù)據(jù)擴容、遷移等高級功能 進(jìn)一步挺進(jìn)大數(shù)據(jù)計算領(lǐng)域,深度結(jié)合Spark Stream和Storm等分布式實時流引擎,能夠完成快速的巨表關(guān)聯(lián)、排序、分組 聚合等 OLAP方向的能力,并集成一些熱門常用的實時分析算法,讓工程師以及DBA們更容易用Mycat實現(xiàn)一些高級數(shù)據(jù)分 析處理功能。 不斷強化Mycat開源社區(qū)的技術(shù)水平,吸引更多的IT技術(shù)專家,使得Mycat社區(qū)成為中國的Apache,并將Mycat推到Apache 基金會,成為國內(nèi)頂尖開源項目,最終能夠讓一部分志愿者成為專職的Mycat開發(fā)者,榮耀跟實力一起提升。 依托Mycat社區(qū),聚集100個CXO級別的精英,眾籌建設(shè)親親山莊,Mycat社區(qū)+親親山莊=中國最大IT O2O社區(qū)
收錄于:Mycat權(quán)威指南,感謝作者
|