1. 程式人生 > >Openstack trove探究(2)——Trove的當前架構

Openstack trove探究(2)——Trove的當前架構

     負責配置資料庫虛擬機器例項,管理資料庫虛擬機器例項的生命週期和執行這對資料庫虛擬機器例項的各種操作.監聽訊息佇列伺服器的RPC service,程式原始碼入口在trove/cmd/taskmanage.py。需要特別注意:trove-taskmanager是一個有狀態的服務,它負責組織複雜的業務流程。如果在有狀態的處理流程當中,taskmanager掛了,則任務就被認為失敗。

trove-guestagent

運行於資料庫虛擬機器例項的內部,負責管理和實際執行對資料庫管理程式的任務。guestagent在訊息總線上監聽RPC訊息,執行要求的操作。程式原始碼入口在trove/cmd/guest.py。每一種資料庫都有與之對應的不同的guestagent,顯而易見,redis的guestagent和mysql的guestagent的行為不可能是一樣的。

trove-conductor

      負責從guestagents收集狀態資訊然後將其寫入Trove的後端資料庫,其與guestagent互動基於RPC實現。這個元件的引入就是為了實現這樣的目的,即db instance內的gusestagent不應直接與trove的後端資料庫相連。程式原始碼入口在trove/cmd/conductor.py。從目前的程式碼看,這個元件就兩個功能函式:
  • def heartbeat(self, context, instance_id, payload, sent=None)
     上報DBinstance的心跳和狀態資訊,如NEW to BUILDING to ACTIVE
  • def update_backup(self, context, instance_id, backup_id, sent=None, **backup_fields)
     更新當前backup的狀態資訊,如當前狀態,已備份的大小,型別和校驗情況

規劃中的改進


    將Trove-conductor作為訪問trove後端資料庫的唯一入口,所有模型的資料庫CRDU操作都依靠他來完成。openstack很多服務元件都有這樣的設計傾向,如nova,都想將db的操作隔離出來,就我目前的瞭解,這樣做的好處是可以將服務的後端DB與應用層隔離,後端DB可以執行在另一個網路中,實現網路隔離,除conductor外的所有元件都不能直接訪問到DB所在的網路。

參考連結