溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

發(fā)布時間:2020-04-03 17:11:24 來源:網(wǎng)絡(luò) 閱讀:1629 作者:ygqygq2 欄目:MySQL數(shù)據(jù)庫

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識


學(xué)習(xí) mycat mysql



  • Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

  • 1. Mycat是什么

  • 2. Mycat與其他中間件的區(qū)別

    • 2.1 Mango

    • 2.2 Cobar

    • 2.3 Heisenberg

    • 2.4 Atlas

    • 2.5 Ameoba

  • 3. Mycat能解決的問題

  • 4. Mycat核心概念

    • 4.2.1 分片表

    • 4.2.2 非分片表

    • 4.2.3 ER表

    • 4.2.4 全局表

    • 4.1 邏輯庫(schema)

    • 4.2 邏輯表(table)

    • 4.3 分片節(jié)點(dataNode)

    • 4.4 節(jié)點主機(dataHost)

  • 5. Mycat文件夾以及文件介紹


1. Mycat是什么

Mycat是一個徹底開源的面向企業(yè)應(yīng)用開發(fā)的大數(shù)據(jù)庫集群,支持事務(wù)、ACID,是可以替代MySQL的加強版數(shù)據(jù)庫。Mycat被視為MySQL集群的企業(yè)級數(shù)據(jù)庫,用來替代昂貴的Oracle集群,它是融合了內(nèi)存緩存技術(shù)、NoSQL技術(shù)、HDFS大數(shù)據(jù)的新型SQL Server,是結(jié)合了傳統(tǒng)數(shù)據(jù)庫和新型分布式數(shù)據(jù)倉庫的新一代的企業(yè)級數(shù)據(jù)庫產(chǎn)品,也是一個優(yōu)秀的數(shù)據(jù)庫中間件。

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

2. Mycat與其他中間件的區(qū)別

目前的數(shù)據(jù)庫中間件有很多。

2.1 Mango

Mango的中文名是“芒果”,它是一個輕量級的極速數(shù)據(jù)層訪問框架,目前已有十多個大型線上項目在使用它。據(jù)稱,某一支付系統(tǒng)利用Mango承載了每秒12萬的支付下單請求,其超高的性能及超快的響應(yīng)速度幾乎相當(dāng)于直接使用JDBC。它采用接口與注解的形式定義DAO,完美地結(jié)合了db與cache操作;支持動態(tài)SQL,可以構(gòu)造任意復(fù)雜的SQL語句;支持多數(shù)據(jù)源、分表、分庫、事務(wù);內(nèi)嵌“函數(shù)式調(diào)用”功能,能將任意復(fù)雜的對象映射到數(shù)據(jù)庫的表中。但是從整體上看Mango是一個Java Dao Framework,是一個jar包,它的運行依賴于應(yīng)用系統(tǒng)的項目代碼和服務(wù)器,采用了JDBC Shard思想,與TDDL是同款產(chǎn)品。

2.2 Cobar

Cobar是阿里巴巴研發(fā)的關(guān)系型數(shù)據(jù)的分布式處理系統(tǒng)(Amoeba的升級版,該產(chǎn)品成功替代了原先基于Oracle的數(shù)據(jù)存儲方案,目前已經(jīng)接管了3000多個MySQL數(shù)據(jù)庫的scheme,平均每天處理近50億次的SQL執(zhí)行請求。

2.3 Heisenberg

Heisenberg源于Cobar,結(jié)合了Cobar和TDDL的優(yōu)勢,讓其分片策略變?yōu)榉謳旆直聿呗裕?jié)約了大量的連接。優(yōu)點是分庫分表與應(yīng)用脫離,分庫分表如同使用單庫表一樣,減少了db連接數(shù)的壓力,采用熱重啟配置,可水平擴容,并遵循 MySQL原生協(xié)議,采用讀寫分離,無語言限制。MySQL Client、C、Java等都可以使用Heisenberg服務(wù)器通過管理命令查看和調(diào)整連接數(shù)、線程池、節(jié)點等。Heisenberg采用velocity的分庫分表腳本進行自定義分庫分表,相當(dāng)靈活。

2.4 Atlas

Atlas是由奇虎360的Web平臺部基礎(chǔ)架構(gòu)團隊開發(fā)維護的一個基于MySQL協(xié)議的數(shù)據(jù)庫中間層項目。它在MySQL-proxy 0.8.2版本的基礎(chǔ)上進行了優(yōu)化,增加了一些新的功能和特性。奇虎360內(nèi)部使用Atlas運行的MySQL業(yè)務(wù),每天承載的讀寫請求數(shù)達幾十億條。Atlas位于應(yīng)用程序與MySQL之間,實現(xiàn)了MySQL的客戶端與服務(wù)端協(xié)議,作為服務(wù)端與應(yīng)用程序通信,同時作為客戶端與MySQL通信。它對應(yīng)用程序屏蔽了db的細(xì)節(jié),同時為了降低MySQL的負(fù)擔(dān),維護了連接池。

2.5 Ameoba

Ameoba是一個以MySQL為底層數(shù)據(jù)存儲,并對應(yīng)用提供MySQL協(xié)議接口的Proxy。它集中響應(yīng)應(yīng)用的請求,依據(jù)用戶事先設(shè)置的規(guī)則,將SQL請求發(fā)送到特定的數(shù)據(jù)庫上執(zhí)行,基于此可以實現(xiàn)負(fù)載均衡、讀寫分離、高可用性等需求。與MySQL官方的MySQL Proxy相比,Ameoba的作者強調(diào)的是Amoeba配置的便捷性(基于XML的配置文件,用SQLJEP語法書寫規(guī)則,比基于Lua腳本的MySQL Proxy簡單)。

Mycat與以上中間件的對比如下表所示。

對比項目MycatMangoCobaHeisenbergAtlasAmoeba
數(shù)據(jù)切片支持支持支持支持支持支持
讀寫分離支持支持支持支持支持支持
宕機自動切換支持不支持支持不支持半支持,影響寫不支持
MySQL協(xié)議前后端支持JDBC前端支持前后端支持前后端支持JDBC
支持的數(shù)據(jù)庫MySQL、Oracle、MongoDB、PostgreSQLMySQLMySQLMySQLMySQLMySQL、MongoDB
社區(qū)活躍度活躍停滯中等停滯
文檔資料極豐富較齊全較齊全缺少中等缺少
是否開源開源開源開源開源開源開源
是否支持事務(wù)弱XA支持單庫強一致、分布式弱事務(wù)單庫強一致、多庫弱事務(wù)單庫強一致、分布式弱事務(wù)不支持

3. Mycat能解決的問題

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識










4. Mycat核心概念

4.1 邏輯庫(schema)

業(yè)務(wù)開發(fā)人員通常在實際應(yīng)用中并不需要知道中間件的存在,只需要關(guān)注數(shù)據(jù)庫,所以數(shù)據(jù)庫中間件可以被當(dāng)作一個或多個數(shù)據(jù)庫集群構(gòu)成的邏輯庫。 
在云計算時代,數(shù)據(jù)庫中間件可以以多租戶的形式為一個或多個應(yīng)用提供服務(wù),每個應(yīng)用訪問的可能是一個獨立或者共享的物理庫。

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

4.2 邏輯表(table)

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

4.2.1 分片表

分片表是將指數(shù)據(jù)量很大的表切分到多個數(shù)據(jù)庫實例中,所有分片組合起來構(gòu)成了一張完整的表。

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

4.2.2 非分片表

并非所有的表在數(shù)據(jù)量很大時都需要進行分片,某些表可以不用分片。非分片表是相對于分片表而言的不需要進行數(shù)據(jù)切片的表。

4.2.3 ER表

關(guān)系型數(shù)據(jù)庫是基于實體關(guān)系模型(Entity Relationship Model)的,Mycat中的ER表便來源于此?;诖怂枷?,Mycat提出了基于E-R關(guān)系的數(shù)據(jù)分片策略,子表的記錄與其所關(guān)系的父表的記錄存放在同一個數(shù)據(jù)分片上,即子表依賴于父表,通過表分組(Table Group)保證數(shù)據(jù)關(guān)聯(lián)查詢不會跨庫操作。 
表分組(Table Group)是解決跨分片數(shù)據(jù)關(guān)聯(lián)查詢的一種很好的思路,也是數(shù)據(jù)切分的一條重要規(guī)則。

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

4.2.4 全局表

在一個真實的業(yè)務(wù)場景中往往存在大量類似的字典表,這些字典表中的數(shù)據(jù)變動不頻繁,而且數(shù)據(jù)規(guī)模不大,很少有超過數(shù)十萬條的記錄。 
當(dāng)業(yè)務(wù)表因為規(guī)模進行分片后,業(yè)務(wù)表這些附屬的字典表之間的關(guān)聯(lián)查詢就成了比較棘手的問題,所以在Mycat中通過數(shù)據(jù)冗余來解決這類表的關(guān)聯(lián)查詢,即所有分片都復(fù)制了一份數(shù)據(jù),我們把這些冗余數(shù)據(jù)的表定義為全局表。 
數(shù)據(jù)冗余是解決跨分片數(shù)據(jù)關(guān)聯(lián)查詢的一種很好的思路,也是數(shù)據(jù)切分規(guī)劃的另一條重要規(guī)則。

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

4.3 分片節(jié)點(dataNode)

將數(shù)據(jù)切分后,一個多大個被分到不同的分片數(shù)據(jù) 庫上,每個表分片所在的數(shù)據(jù)庫就是分片節(jié)點。

4.4 節(jié)點主機(dataHost)

將數(shù)據(jù)切分后,每個分片節(jié)點不一定會獨占一臺機器,同一臺機器上可以有多個分片數(shù)據(jù)庫,這樣一個或多個分片節(jié)點所在的機器就是節(jié)點主機。為了規(guī)避單節(jié)點主機并發(fā)數(shù)量的限制,盡量將讀寫壓力高的分片節(jié)點均勻地放在不同的節(jié)點主機上。

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

5. Mycat文件夾以及文件介紹

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

Mycat學(xué)習(xí)實戰(zhàn)-Mycat初識

參考資料: 
[1] http://mycat.io/ 
[2] 《分布式數(shù)據(jù)庫架構(gòu)及企業(yè)實踐——基于Mycat中間件》 
[3] 龍哥官方課程課件


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI