ZStack 5分鐘 | 淺談核心架構設計特點

ZStack是下一代開源的雲計算IaaS(基礎架構即服務)軟件。它主要面向未來的智能數據中心,通過提供靈活完善的APIs來管理包括計算、存儲和網絡在內的數據中心資源。用戶可以利用ZStack快速構建自己的智能雲數據中心,也可以在穩定的ZStack之上搭建靈活的雲應用場景,例如VDI(虛擬桌面基礎架構)、PaaS(平臺即服務)、SaaS(軟件即服務)等。

ZStack提供了對企業數據中心基礎設施的計算、存儲、網絡等資源的管理,底層支持KVM和VMware虛擬化技術,支持DAS/NAS/SAN/DFS等存儲類型,支持本地存儲、NFS存儲、SAN存儲、分佈式塊存儲,支持VLAN/VXLAN等網絡模型。

ZStack的核心雲引擎,使用消息總線同數據庫MariaDB及各服務模塊進行通信,提供了雲主機管理、物理主機管控、存儲調度、網絡功能、賬號計費、實時監控等功能。ZStack還提供了Java和Python的SDK,且支持RESTful APIs進行資源調度管理。目前已有超過1000家用戶部署在ZStack雲平臺上,基於ZStack打造的雲平臺充分體現了雲計算的4S優勢,即:簡單Simple、健壯Strong、彈性Scalable、智能Smart

在這裏插入圖片描述

本節小課堂爲大家淺談ZStack核心架構

ZStack核心架構設計特點

1. 全異步架構:異步消息、異步方法、異步HTTP調用。
ZStack使用消息總線進行各服務的通信連接,在調用服務時,源服務發消息給目的服務,並註冊一個回調函數,然後立即返回;一旦目的服務完成任務,就會觸發回調函數回覆任務結果。異步消息可以並行處理。
ZStack服務之間採用異步消息進行通信,對於服務內部,一系列相關組件或插件,也是通過異步方法來調用,調用方法與異步消息一致。
ZStack採用的插件機制,給每個插件設置相應的代理程序。ZStack爲每個請求設置了回調URL在HTTP的包頭,任務結束後,代理程序會發送應答給調用者的URL。
基於異步消息、異步方法、異步HTTP調用這三種方式,ZStack構建了一個分層架構,保證了所有組件均能實現異步操作。
基於全異步架構機制,單管理節點的ZStack每秒可併發處理上萬條API請求,還可同時管理上萬臺服務器和數十萬臺雲主機。

2. 無狀態服務:單次請求不依賴其他請求。
ZStack的計算節點代理、存儲代理、網絡服務、控制檯代理服務、配置服務等,均不依賴其他請求,一次請求可包含所有信息,相關節點無須維護存儲任何信息。
ZStack使用一致性哈希環對管理節點、計算節點或者其他資源以UUID爲唯一ID進行認證的哈希環處理,消息發送者無需知道待處理消息的服務實例,服務也無須維護、交換相關的資源信息,服務只需單純的處理消息即可。
ZStack管理節點間共享的信息非常少,兩個管理節點即可滿足高可用性和可擴展性需求。
無狀態服務機制讓系統更爲健壯,重啓服務器不會丟失任何狀態信息,數據中心的彈性擴展和伸縮性維護更爲簡單。

3. 無鎖架構:一致性哈希算法。
一致性哈希算法保證了同一資源的所有消息均被同一個服務實例來處理。這種聚合消息到特定節點的方法,降低了同步與並行的複雜度。
ZStack使用工作隊列來避免競爭鎖的問題,串行任務以工作隊列的方式保存在內存中,工作隊列可對任意資源的任意操作進行並行處理來提高系統並行度。
ZStack基於隊列的無鎖架構,使得任務可以簡單地控制並行度,從而提升系統性能。

4. 進程內微服務:微服務解耦。
ZStack使用消息總線對各服務進行隔離控制,例如,雲主機服務、身份認證服務、快照服務、雲盤服務、網絡服務、存儲服務等。所有的微服務都集合在管理節點的進程內,各服務之間利用消息總線進行交互,所有消息發送到消息總線後,再通過一致性哈希環選擇目的服務進行轉發處理。
進程內微服務,以星狀架構實現各服務獨立運行,將高度集中的控制業務進行解耦,實現了系統的高度自治和高度隔離,任何服務出現故障並不影響其他組件。可靠性與穩定性得到有效保障。

5. 全插件結構:插件支持橫向擴展。
ZStack使用中任何新加入的插件對目前其他的插件沒有任何影響, 均是獨立自主提供服務。
ZStack支持策略模式和觀察者模式進行插件設計。策略插件會繼承父類的接口然後執行具體實現;觀察者插件,會註冊listener進行監控內部的業務邏輯的事件變化,當應用內部發現事件時,插件會對此事件做出自響應,在插件自身的代碼裏執行相應的業務流。
ZStack支持插件的橫向擴展,雲平臺可以快速更迭,而整體系統架構依然健壯。

6. 工作流引擎:順序管理,出錯回滾。
ZStack工作流基於XML對每個工作流程進行清晰定義,在任何步驟出現錯誤均可按照原本執行路徑進行回滾,清理掉執行過程的垃圾資源。
每個工作流還可以包含子工作流用於擴展業務邏輯。

7. 標籤系統:支持業務邏輯變更,增加資源屬性。
ZStack支持利用系統標籤和插件機制對原本的業務邏輯進行擴展變更。
使用標籤機制,可對資源進行分組劃分,支持對指定標籤進行資源搜索。

8. 瀑布流架構:支持資源的級聯操作。
ZStack使用Cascade Framework對資源管理進行瀑布狀的級聯操作,對資源進行卸載或者刪除時,會對相關的資源進行級聯操作。
資源也可以通過插件形式加入到瀑布框架中,加入或者退出瀑布框架,並不影響其他資源。
級聯機制使得ZStack的配置靈活輕便,快速滿足客戶資源配置的變更。

9. 全自動化Ansible部署:Ansible無代理自動部署。
ZStack使用Ansible進行無代理的全自動化安裝依賴、配置物理資源,部署代理程序,全過程對用戶透明,無須額外干預,可透過重連代理程序對代理進行升級。

10. 全API查詢:任意資源的任意屬性均可查詢。
ZStack支持數百萬個條件的資源查詢,支持全API查詢,支持任意組合。

以上,就是本期的架構篇補習啦,對架構感興趣的小夥伴歡迎參考以下步驟自行到官網探索更多ZStack架構相關噢~

產品下載請戳:
https://www.zstack.io/help/product_manuals/maintenance_manual/2.html#c2_1
產品手冊
https://www.zstack.io/help/product_manuals/

Question Time

  1. ZStack的哪個架構特點可以併發處理上萬條API請求?
    A 瀑布流架構 B 全API查詢 C 全異步架構 D 工作流引擎
  2. 支持業務邏輯變更,增加資源屬性的架構特點是什麼?
  3. 使得雲平臺可以快速更迭,且整體系統架構依然健壯的是什麼結構?

問題答案都在今日的小課堂中,補習完成記得帶着答案到ZStack官微後臺回覆噢。我們會隨機抽取5位愛學習的小夥伴送上一點小心意~近期還會有ZStack 3.6.0大版本更新,歡迎申請試用並反饋~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章