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