讀古今文學網 > OpenStack系統架構設計實戰 > 10.2 Trove總體構架 >

10.2 Trove總體構架

Trove作為OpenStack的核心項目之一,功能已逐步完善。Trove主要由下面幾個模塊組成:

·API服務器

·消息總線

·任務管理器

·Guest Agent

·Conductor

其中,每個模塊封裝相對獨立的功能,並與其他模塊進行消息交互,完成對數據庫的統一管理、配置和監控。

1.API服務器

API服務器是一個HTTP協議的Web服務器,它提供了支持Json和XML的RESTful API,通過這些接口接收外部的數據庫訪問和管理指令。

API服務器和兩個Trove模塊直接發生交互。它通過任務管理器來處理複雜的、異步的任務,如創建一個數據庫實例。同時可以直接通過Guest Agent來處理簡單的任務,如查詢MySQL的用戶、查詢一條數據等,這些任務都是同步的。API服務器根據接收到的指令類型進行相應操作,將複雜的異步指令轉發給任務管理器,再由任務管理器協調各個模塊共同完成任務;如果是簡單的同步指令,則直接轉發給Guset Agent,由Guset Agent觸發數據庫完成,並返迴響應的處理結果。

2.消息總線

消息隊列在OpenStack其他模塊中經常使用,Trove也同樣沿用這個技術來完成Trove向其他各個模塊的消息傳遞。一個消息隊列在API服務器、任務管理器和Guest Agent之間傳遞消息。雲控制器的通信則通過多個API服務器的HTTP請求來完成。

3.任務管理器

任務管理器處理數據庫中相對複雜的任務,如配置實例、管理實例的生命週期、操作實例等。它從API服務器獲取請求信息,根據請求的類型,分解出任務並下發到響應的模塊,完成爭取請求任務的調度,最終將響應結果返回給API服務器。複雜的任務包括改變數據庫大小、創建數據庫實例、刪除數據庫實例等。

4.Guest Agent

Guest Agent和實例端部署一起部署運行,負責管理和執行操作數據存儲。每個數據存儲的實例都有一個Guest Agent負責完成特定任務。

5.Conductor

Conductor負責接收各個實例的狀態變更信息,並更新到本地,從而實現數據庫實例的監控。Conductor和Guest Agent類似,監聽消息隊列,從消息隊列中獲取各數據庫實例的狀態信息。

Trove的總體架構和內部交互如圖10-2所示。

圖10-2 Trove總體架構和內部交互