文/陳威宇
皮基站(Pico Site),是一種小型企業級基站,單載波發射功率在100~500mW,覆蓋范圍在20~50米,可以為用戶實現移動通信信號精確深度覆蓋,提升用戶體驗。5G時代因為頻率更高的原因,5G的信號傳輸距離和穿透效果將明顯弱于4G,皮基站也將會是增強網絡覆蓋的重要角色。因此,皮基站網管系統需要支持高并發設備接入、高實時性信息查詢,來支撐設備的管理和維護。
CQRS本身只是一個讀寫分離的思想,即命令查詢職責分離。命令和查詢的分離可以更好地理解哪些操作會改變系統的狀態,從而使系統具有更好的擴展性,提高系統可用性,還可以為其提供緩存,從而改進查詢的性能。
CQRS架構適用的幾種場景:
(1)應用的寫模型和讀模型差別比較大時;
(2)需要對系統的查詢性能和寫入性能分開進行優化時,尤其是讀寫比非常高的系統,分離讀寫是必須的;
(3)系統需要同時滿足高并發的寫、高并發的讀的時候;因為基于CQRS架構的系統可以在命令端做到最大化的寫,在查詢端容易提供可擴展的讀模型。
(4)在實踐領域模型時。
寫模式主要處理單個設備的數據上報;讀模式主要性能要求體現在批量獲取設備的配置信息、告警信息、統計信息等數據,比如獲取所有設備的當前活躍告警,獲取所有設備的性能參數統計曲線。因此,皮基站網管系統的讀寫模式差別較大。
按照設備心跳狀態消息上報周期為5分鐘,前端應用更新設備狀態一般為30秒,也就是說設備心跳消息上報會產生1次寫入操作,前端應用在兩次心跳消息間隔會產生10次查詢操作,即讀寫比達到10倍。系統中每次心跳上報也會涉及設備查詢操作,所以實際讀寫比會更大。
網管系統的寫入性能主要體現在設備上報消息的并發處理能力,消息處理都會對產生設備信息的寫操作。按5分鐘心跳上報機制,一臺設備每天會上報288條心跳消息。通常一個省部署一套網管系統,全省皮基站設備部署會達到10W臺,即系統需要每秒處理344條心跳消息。分離的寫操作,可以采用命令并發處理、事件消息緩存等方式來單獨優化寫入效率,提高系統并發能力。
在前端需要保證業務查詢操作的可擴展性。設備上報參數涉及狀態參數、配置參數、告警參數、性能參數等,相應的業務查詢操作會千變萬化,比如:設備在線狀態、當前告警信息、歷史告警信息、性能統計等等。通過分離讀寫并結合消息訂閱方式,網管系統可以提供易擴展的讀模式。
本網管系統的實現結合了事件溯源模式,采用數據存儲讀寫分離的方式:命令端負責數據存儲,查詢端負責數據讀取,查詢端的數據通過命令端產生的事件來同步。系統主要處理流程如圖1所示。
設備消息上報處理的主要流程:
(1)皮基站設備通過CWMP(用戶終端設備廣域網管理協議)協議向網管系統上報消息;
(2)CWMP服務端,解析處理CWMP協議消息,產生相應設備上報消息收到命令,并將該條命令交到命令處理總線;
(3)命令處理總線隊列緩存收到的命令,然后并發調用命令處理程序處理命令;命令處理程序找到命令對應的設備聚合,交由設備聚合將上報消息收到命令轉換為上報消息收到事件,并持久化該條事件;
(4)一條事件被持久化后,事件將發送到事件隊列,由訂閱該事件的處理程序處理;
(5)各個處理程序在收到訂閱事件后,根據業務需求獲取信息,并更新到對應的設備視圖數據,包括設備狀態信息、設備告警信息、設備性能統計信息等等;
(6)將生產的設備視圖數據,持久化到視圖數據庫,供API接口服務查詢使用;

圖1:系統主要處理流程
(7)API接口服務,基于HTTP協議向前端應用提供數據。
設備操作指令下發處理的主要流程:
(1)前端應用通過HTTP協議向API接口服務發送操作指令,例如設備重啟操作;
(2)API接口服務,解析指令內容,產生相應的設備操作命令,并將該條命令交給命令處理總線;
(3)命令處理總線隊列緩存收到的命令,然后并發調用命令處理程序處理命令;命令處理程序找到命令對應的設備聚合,交由設備聚合將設備操作命令轉換為設備操作事件,并持久化該條事件;
(4)后臺CWMP服務端收到訂閱事件后,生產CWMP協議消息,并下發給設備。
CQRS架構導致讀寫之間會有延遲,因此網管系統的一致性模型為最終一致性。在皮基站設備的維護管理應用中,系統優先保證前端應用的可用性,而數據保證最終一致性的方式是可以接受的。
本網管系統設計,提高了設備的接入并發性和前端應用的實時性,并且具有靈活的業務需求擴充性,為皮基站設備的實時有效監控和管理提供有力支持。