ump
(unified mysql platform)是由阿里集團核心系統資料庫團隊設計與實現的,提供低成本和高效能的mysql雲資料服務。
ump系統架構
先不用著急看圖,後面介紹各個元件後再來看就比較清楚了。
(1)mnesia:分布式資料庫管理系統
mnesia支援事務、提供透明的資料分片、利用兩階段鎖來實現分布式事務、具有線性擴充套件性(可擴充套件到至少50個節點)。
mnesia的資料庫模式可在執行時動態重配置,錶可被遷移或複製至多節點來實現高容錯性。
(2)rabbitmq:工業級的訊息佇列產品
rabbitmq作為訊息傳輸中介軟體來使用,能實現可靠的訊息傳送。
ump集群中各節點的通訊不需要建立專門的連線,而是通過讀寫訊息佇列來實現的。
(3)zookeeper:協同工作系統
zookeeper提供如統一命名、狀態同步、集群管理和分布式應用配置項的管理等服務,用於構建分布式應用或減輕分布式應用程式所承擔的協調任務。
在ump系統中,zookeeper主要用來:
作全域性配置伺服器;
選出集群總管(提供分布式鎖);
監控所有mysql例項。
(4)lvs:linux虛擬伺服器
它主要用於實現ump系統中集群內部的負載均衡,主要採用兩種技術:ip負載均衡技術和基於內容請求分發技術,這裡暫時不對這兩種技術作深入。
(5)controller伺服器:為ump集群提供各種管理服務(成員管理、元資料儲存、mysql例項管理、故障恢復、備份、遷移、擴容等)
cotroller伺服器上執行了一組mnesia分布式資料庫服務,其中儲存了各種系統元資料(集群成員、使用者的配置資訊與狀態資訊、使用者名稱到mysql例項位址的對映關係【路由表】等)。
其他伺服器元件需要獲取使用者資料時,可向controller伺服器傳送請求。
ump系統中部署了多台controller伺服器來避免單點故障、保證系統的高可用性。這時,zookeeper將出馬幫忙選出乙個「總管」。
(6)web控制器:向使用者提供系統管理介面
(7)proxy伺服器:完全實現了mysql服務,向使用者提供訪問mysql資料庫的服務
(8)agent伺服器:它部署在執行mysql程序的機器上,用來管理每台物理機上的mysql例項
(9)日誌分析伺服器:儲存和分析proxy伺服器傳入的使用者訪問日誌,支援實時查詢一段時間內的慢日誌和統計報表
(10)資訊統計伺服器:定期將採集到的使用者連線數、qps(每秒查詢次數)數值及mysql例項的程序狀態等資訊進行統計展示在web介面上,或將結果作為以後資源分配等的依據。
(11)愚公系統:用於做資料遷移,可在不停機的情況下動態擴容、縮容和遷移。
下面再來看這張圖:
右上角的mysql集群,負責具體的資料儲存。
controller伺服器用來管理各個集群,並且為了避免單點故障,往往有多個。
但一般情況下,只會讓乙個生效、其他備用,這就是由zookeeper伺服器來幫忙實現的。同時zookeeper伺服器還會進行整個集群配置檔案的管理和監控mysql集群的總體執行狀態,一旦探測到故障,馬上向controller匯報。
proxy伺服器可以看到是用來連線使用者和整個雲資料庫的,使用者通過它來進行資料的查詢訪問。
整個集群通過lvs來實現負載均衡。使用者能通過web控制台查詢各個元件執行的狀態資訊。各個元件之間傳遞訊息是通過rabbitmq來實現的。
有的部分在介紹元件時已經闡述,以上是對ump系統架構乙個全域性的認識,可以幫助了解乙個具體的雲資料庫是如何架構的。
Angular 2 之一 系統架構
angular 2系統架構中元件是最核心的概念,元件由元資料 metadata 元件類 component 和模板 template 組成,其中 元件類和模板通過資料繫結關聯 通過屬性繫結 perperty binding 在模板檢視中顯示屬性值,使用者操作模板檢視觸發事件通過事件繫結 event ...
一 系統設定
開啟輕點來點按和應用expose兩選項,其餘預設即可 把dock放在左邊,使其自動隱藏,取消為開啟的應用開啟指示燈並且移除所有應用程式。這一點是因為我們後面要做鍵盤流的配置,dock並沒有什麼用處。左上角留空,左下角啟動臺,右上角通知中心,右下角桌面 開啟訪達的偏好設定,設定只勾選 顯示所有副檔名 ...
C 打造乙個開源webgis(一)系統架構
想不到當初起了個前言,時隔一年半之後才開始寫,因為已經轉行不做gis了 決定把它寫完,只是不想留下個爛尾樓 如果文章內容有所錯漏,望建議補充 搭建乙個gis系統,為了能同時適應c s和b s架構,建議是做成自己的地圖服務api方式,這樣,乙個或多個系統,就能通過統一的地圖服務介面提供,而通訊可以採用...