论文部分内容阅读
随着万物互联的发展和兴起,物联网设备之间的消息传递因其网络环境的不同而成为了一种新的需求。Message Queuing Telemetry Transport(MQTT,消息队列遥测传输)是这类场景最常见的协议之一。MQTT协议数据包小,带宽利用率高,并且采用具有更强去耦能力的发布/订阅模式,更为贴合物联网的应用场景。基于此,本文针对物联网的特定应用场景,研究设计并实现一种基于MQTT的消息推送集群系统。该系统作为公司绿洲物联网平台项目的一部分,目的是服务于物联网线上平台,解决实际应用中发现的问题,优化消息推送系统在具体应用场景的易用性。具体来说,系统负责与外部终端设备建立稳定MQTT连接,处理基于主题的发布订阅请求;与内部应用微服务连接,提供一种基于发布订阅模式的消息传输模式供平台微服务调用。在满足上述功能的基础上,设计集群方案来满足系统对高可用性、可扩展性的要求,以及设计安全方案来保障系统安全和用户数据安全。具体工作内容与技术方案如下:(1)基础推送功能的设计与实现。针对MQTT协议中消息各个字段的含义及消息推送具体过程进行分析,设计其建立连接、发布、订阅等功能的逻辑流程。(2)MQTT Broker的多节点集群方案研究。在对开源项目Mosquitto进行研究的基础上,选择将系统设计为去中心化分布式集群架构,并利用Kubernetes和Docker虚拟化技术对其进行封装和部署,解决系统在集群部署、集群扩容、节点管理方面的问题,以提高对每个节点计算能力的利用率,满足系统在性能上的要求。(3)集群系统的接入安全方案研究。从数据加密、身份认证、权限控制三个方面对接入安全进行保证。首先在MQTT连接建立前先通过SSL/TLS对传输进行加密;其次在连接建立时将客户端通过认证链对身份合法性进行校验;在建立连接后对其发布/订阅的动作根据主题进行ACL权限控制。最后统计集群所有节点的状态、连接数、会话信息等,提供给前端监控服务使用。(4)对整个系统分别进行功能测试和性能测试,以验证研究成果与技术方案实施效果。通过功能测试,对系统主要功能模块的逻辑流程进行检测;通过性能测试,对系统在高并发环境下的表现进行检测。系统在实际应用环境上成功部署,经过一段时间的试运行与应用后,通过运行效果和性能测试表明,消息推送集群系统在性能要求和业务功能要求上达到了预期的效果。但是由于系统服务的线上平台用户种类众多,应用场景复杂多变,系统还需要通过实际业务应用来发现和明确问题,从而在功能上进行完善和补充。