文/陈威宇
皮基站(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架构导致读写之间会有延迟,因此网管系统的一致性模型为最终一致性。在皮基站设备的维护管理应用中,系统优先保证前端应用的可用性,而数据保证最终一致性的方式是可以接受的。
本网管系统设计,提高了设备的接入并发性和前端应用的实时性,并且具有灵活的业务需求扩充性,为皮基站设备的实时有效监控和管理提供有力支持。