【轉(zhuǎn)】UMP認(rèn)識(shí):(一)系統(tǒng)架構(gòu)
UMP認(rèn)識(shí):(一)系統(tǒng)架構(gòu)
夕望有你
IP屬地: 湖南
0.3122016.12.29 13:49:46字?jǐn)?shù) 1,159閱讀 6,438
UMP(Unified MySQL Platform)是由阿里集團(tuán)核心系統(tǒng)數(shù)據(jù)庫(kù)團(tuán)隊(duì)設(shè)計(jì)與實(shí)現(xiàn)的,提供低成本和高性能的MySQL云數(shù)據(jù)服務(wù)。
UMP系統(tǒng)架構(gòu)
先不用著急看圖,后面介紹各個(gè)組件后再來(lái)看就比較清楚了。
(1)Mnesia:分布式數(shù)據(jù)庫(kù)管理系統(tǒng)
Mnesia支持事務(wù)、提供透明的數(shù)據(jù)分片、利用兩階段鎖來(lái)實(shí)現(xiàn)分布式事務(wù)、具有線性擴(kuò)展性(可擴(kuò)展到至少50個(gè)節(jié)點(diǎn))。
Mnesia的數(shù)據(jù)庫(kù)模式可在運(yùn)行時(shí)動(dòng)態(tài)重配置,表可被遷移或復(fù)制至多節(jié)點(diǎn)來(lái)實(shí)現(xiàn)高容錯(cuò)性。
(2)RabbitMQ:工業(yè)級(jí)的消息隊(duì)列產(chǎn)品
RabbitMQ作為消息傳輸中間件來(lái)使用,能實(shí)現(xiàn)可靠的消息傳送。
UMP集群中各節(jié)點(diǎn)的通信不需要建立專門的連接,而是通過(guò)讀寫消息隊(duì)列來(lái)實(shí)現(xiàn)的。
(3)Zookeeper:協(xié)同工作系統(tǒng)
Zookeeper提供如統(tǒng)一命名、狀態(tài)同步、集群管理和分布式應(yīng)用配置項(xiàng)的管理等服務(wù),用于構(gòu)建分布式應(yīng)用或減輕分布式應(yīng)用程序所承擔(dān)的協(xié)調(diào)任務(wù)。
在UMP系統(tǒng)中,Zookeeper主要用來(lái):
作全局配置服務(wù)器;
選出集群總管(提供分布式鎖);
監(jiān)控所有MySQL實(shí)例。
(4)LVS:Linux虛擬服務(wù)器
它主要用于實(shí)現(xiàn)UMP系統(tǒng)中集群內(nèi)部的負(fù)載均衡,主要采用兩種技術(shù):IP負(fù)載均衡技術(shù)和基于內(nèi)容請(qǐng)求分發(fā)技術(shù),這里暫時(shí)不對(duì)這兩種技術(shù)作深入。
(5)Controller服務(wù)器:為UMP集群提供各種管理服務(wù)(成員管理、元數(shù)據(jù)存儲(chǔ)、MySQL實(shí)例管理、故障恢復(fù)、備份、遷移、擴(kuò)容等)
Cotroller服務(wù)器上運(yùn)行了一組MNesia分布式數(shù)據(jù)庫(kù)服務(wù),其中存儲(chǔ)了各種系統(tǒng)元數(shù)據(jù)(集群成員、用戶的配置信息與狀態(tài)信息、用戶名到MySQL實(shí)例地址的映射關(guān)系【路由表】等)。
其他服務(wù)器組件需要獲取用戶數(shù)據(jù)時(shí),可向Controller服務(wù)器發(fā)送請(qǐng)求。
UMP系統(tǒng)中部署了多臺(tái)Controller服務(wù)器來(lái)避免單點(diǎn)故障、保證系統(tǒng)的高可用性。這時(shí),Zookeeper將出馬幫忙選出一個(gè)“總管”。
(6)Web控制器:向用戶提供系統(tǒng)管理界面
(7)Proxy服務(wù)器:完全實(shí)現(xiàn)了MySQL服務(wù),向用戶提供訪問(wèn)MySQL數(shù)據(jù)庫(kù)的服務(wù)
(8)Agent服務(wù)器:它部署在運(yùn)行MySQL進(jìn)程的機(jī)器上,用來(lái)管理每臺(tái)物理機(jī)上的MySQL實(shí)例
(9)日志分析服務(wù)器:存儲(chǔ)和分析Proxy服務(wù)器傳入的用戶訪問(wèn)日志,支持實(shí)時(shí)查詢一段時(shí)間內(nèi)的慢日志和統(tǒng)計(jì)報(bào)表
(10)信息統(tǒng)計(jì)服務(wù)器:定期將采集到的用戶連接數(shù)、QPS(每秒查詢次數(shù))數(shù)值及MySQL實(shí)例的進(jìn)程狀態(tài)等信息進(jìn)行統(tǒng)計(jì)展示在Web界面上,或?qū)⒔Y(jié)果作為以后資源分配等的依據(jù)。
(11)愚公系統(tǒng):用于做數(shù)據(jù)遷移,可在不停機(jī)的情況下動(dòng)態(tài)擴(kuò)容、縮容和遷移。
下面再來(lái)看這張圖:
右上角的MySQL集群,負(fù)責(zé)具體的數(shù)據(jù)存儲(chǔ)。
Controller服務(wù)器用來(lái)管理各個(gè)集群,并且為了避免單點(diǎn)故障,往往有多個(gè)。
但一般情況下,只會(huì)讓一個(gè)生效、其他備用,這就是由ZooKeeper服務(wù)器來(lái)幫忙實(shí)現(xiàn)的。同時(shí)Zookeeper服務(wù)器還會(huì)進(jìn)行整個(gè)集群配置文件的管理和監(jiān)控MySQL集群的總體運(yùn)行狀態(tài),一旦探測(cè)到故障,馬上向Controller匯報(bào)。
Proxy服務(wù)器可以看到是用來(lái)連接用戶和整個(gè)云數(shù)據(jù)庫(kù)的,用戶通過(guò)它來(lái)進(jìn)行數(shù)據(jù)的查詢?cè)L問(wèn)。
整個(gè)集群通過(guò)LVS來(lái)實(shí)現(xiàn)負(fù)載均衡。用戶能通過(guò)Web控制臺(tái)查詢各個(gè)組件運(yùn)行的狀態(tài)信息。各個(gè)組件之間傳遞消息是通過(guò)RabbitMQ來(lái)實(shí)現(xiàn)的。
有的部分在介紹組件時(shí)已經(jīng)闡述,以上是對(duì)UMP系統(tǒng)架構(gòu)一個(gè)全局的認(rèn)識(shí),可以幫助了解一個(gè)具體的云數(shù)據(jù)庫(kù)是如何架構(gòu)的。
最后編輯于 :2017.12.05 04:08:03