這篇文章主要介紹分散式系統中的集中式結構,以及我們經常使用的三種基於集中式結構的解決方案:Google Borg、Kubernetes和Mesos。 ...
集中式結構
什麼是集中式結構?
集中式結構就是由一臺或多台伺服器組成的中央伺服器,系統內的所有數據都存儲在中央伺服器中,系統內所有的業務都先由中央伺服器處理。多個節點伺服器與中央伺服器連接,並將自己的信息彙報給中央伺服器,由中央伺服器統一進行資源和任務調度:中央伺服器根據這些信息,將任務下達給節點伺服器;節點伺服器並行任務,並將結果反饋給中央伺服器。
集中式結構最大的特點,就是部署結構簡單。
本文會描述下麵3種經典的集中式結構:
- Google Borg
- Kubernetes
- Mesos
Google Borg
Borg是Google內部使用的集群管理系統,採用了典型的集中式結構。在Borg中一個集群被稱為一個Cell,每個Cell裡面有一個Leader,稱為BorgMaster,還有一系列的節點,稱為Borglet。
BorgMaster包含兩個進程:
- 主進程:處理客戶端的RPC請求,同時管理系統中所有實體的狀態,並負責和Borglet通信。
- scheduler:負責任務調度,通過任務對資源的需求以及當前Borglet所在伺服器的資源情況進行匹配,為任務尋找一個合適的節點伺服器執行。
Borglet是運行在每個節點機器上的agent,負責任務的拉起、停止、重啟等,並管理和收集本伺服器資源,將任務的狀態、伺服器狀態等信息上報給BorgMaster,而BorgMaster會周期性的輪詢每個Borglet,以獲取節點伺服器的狀態和資源信息等。
Borg可以運行各種各樣的任務,這些任務分為兩類:
- 長服務:長時間運行不停止的服務,並且要求能夠處理短暫的、延遲敏感的請求。
- 批處理任務:通常需要幾秒到幾天的時間來完成的批處理Job。
Borg的三個優點:
- 開發者只需要關註應用,不需要關註底層資源管理。
- 高可靠性和可用性,支持多種應用。
- 支持上千伺服器的管理和運行。
Kubernetes
Kubernetes也是典型的集中式結構,它主要由Master節點和Slave節點組成,以及客戶端命令行工具kubectl和其他附加項。
Master節點運行在中心伺服器上,它由API Server、Scheduler、Cluster State Store和Control Manager Server組成:
Worker節點是真正的工作節點,運行在從節點伺服器,包括kubelet和kube-proxy核心組件,負責運行業務應用的容器。
Kubernetes在容器管理方面的優勢:
- 自動化容易得部署和複製
- 將容器組織為組,彈性伸縮
- 榮期間負載均衡
- 基於版本控制與滾動更新。
Mesos
在Mesos中,一個集群包括Mesos Master和多個Mesos Agent。
Mesos Master負責收集和管理所有Agent所在伺服器的資源和狀態,並且對接Spark、Hadoop等框架,將集群中伺服器的資源告知給這些框架,以便這些框架進行任務資源匹配和調度。
Mesos Agent複雜任務的拉起、停止、重啟等,負責收集所在伺服器的資源信息和狀態,並上報給Mesos Master。
Mesos的優勢在於:
- 效率
- 可擴展性
- 模塊化