C++分布式實時應用框架——系統管理模塊
一個分布式實時系統集群動輒上百臺機器,集群的規模已經限定這將是一個”封閉“的系統。你不可能再一臺臺去操作上百臺機器,傳統的人工運維方式早已不能滿足當下需要,所有對集群或者集群中某個節點的操作都必需通過系統提供接口來完成。對於一個商用的分布式實時系統來說,如何應對突然出現的業務高峰;及時檢測出集群中的故障節點並進行善後處理;對於集群內處理能力不同的節點進行負載均衡調節;系統因過大壓力崩潰前進行過載保護;測試容器與運營容器同網測試的灰度發布能力等等。這些都是系統管理模塊需要去解決的問題,也是一個系統能否商用,足夠智能的關鍵指標。
系統管理模塊分為服務(SmartService)和管理(SmartManger)兩部分。SmartService基於RESTful的接口,來對外提供各類對集群的查詢和操作接口,可以方便和各類管理終端(PC、iOS、Android)對接,實現界面管理。完善的框架還提供輕松的二次開發接口,方便定制系統專屬接口。如:調整日誌級別、單號碼日誌跟蹤、集群配置管理、集群實時拓撲數據查詢等等。幾百臺機器的集群,人工維護已不再現實,自動檢測和自主運維已成為關鍵,SmartManger的自動負載管理功能就是用來完成這部分功能的。另外,系統管理模塊是與狀態中心、通訊平臺相互配合工作的,三者缺一不可。
下面將詳細介紹各個特色功能:
一、自動負載管理
根據業務容器節點為上報的時延、類型、流量等信息,綜合集群所有節點的信息,判斷集群目前是否存在如下情況,並根據情況做出相應的應對動作。
1. 某個容器存在故障,不能正常處理業務——故障節點退網
2. 某個容器處理能力不足,存在業務處理超時情況——對節點流量控制
3. 某類容器處理能力不足,這類容器存在業務處理超時情況——對這類容器進行擴容器操作
4. 某類容器處理能力富余,這類容器的流量滿足縮容條件——對這類容器進行縮容操作
5. 集群處理能力已達極限,可能出現系統崩潰的狀況——對集群進行過載保護
二、故障節點自動退網
在業務節點遇到不可恢復的故障不再能正常處理業務,系統管理模塊將自動檢出,並將故障節點退出業務集群,以保證集群正常運行。
三、節點流量控制
當某個節點處理能力不足時,如這個節點在做日誌跟蹤時,系統管理模塊可以根據節點處理能力減少發往該節點的消息數,做實時負載均衡。
四、動態擴縮容
當某類型業務容器處理能力不夠時,系統可以自動進行在線擴容,擴容期間業務不受影響。當處理能力富余時,系統也會自動進行在線縮容,以讓出資源給需要業務。
五、節點過載保護
當整個集群的處理能力已經達到極限時(不能再進行擴容操作),為了防止系統崩潰,可以根據業務的情況進行過載保護,如:對初始鑒權請求進行丟棄處理。
六、灰度發布
系統支持灰度發布能力,可以讓測試點節和正常業務節點同網運行,將讓測試號碼路由到測試節點進行處理,而不影響其它正常的號碼。
C++分布式實時應用框架——系統管理模塊