- 概述
我公司的XMQ-MQTT服务器软件系统是完全实现和兼容MQTT V3.1.1版本协议,并根据现实业务需求做了适当的扩展。支持MQTT发布消息的实时消息鉴权、订阅匹配、快速转发,同时集成本公司的内存数据库系统和脚本引擎系统。已成功应用于多个MQTT系统。发布的版本包括标准版、企业版、超大规模集群版本。本文档主要介绍超大规模集群版本的产品特性。
本文主要介绍超大规模设备(账户)接入的单点转发系统,即支持千万级别设备(账户)接入的场景下,单点系统产品结构、主要功能、性能指标、技术特点。
多点系统的组网和转发参考其他文档。
- 1 MQTT协议
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,它是一种轻量级的、基于代理的“发布/订阅”模式的消息传输协议。目前已经成为物联网通信协议的事实标准和首选。
MQTT协议具有以下特点:
- 基于订阅/发布消息模式,提供一对多的消息发布。
- 业务负载数据透明传输。
- 基于TCP/IP协议,同时提出对传输安全性的要求,需要支持SSL/TLS。
- 有3种发布服务质量要求。
- 最多一次,消息发布会重复或丢失。
- 至少一次,消息确保到达,可能会重复
- 只有一次,消息确保只到达一次。
5、小型传输,开销很很小,降低网络流量。
6、使用 Last Will特性(遗嘱消息)通知有关客户端异常中断的机制。
7、支持保留(Retained)消息的存储和订阅匹配发布
- 2 5G时代对MQTT服务器软件现实要求
5G网络具备3大特点:
1、网速更快,5G网络的网速最快是4G网络的100倍。
2、时延更低,从4G的10毫秒降低到5G的1毫秒。
3、连接设备密度更大,设备更多,每平方公里可达100万设备。
物联网的建设在5G网络下的业务场景也会要求MQTT服务器软件系统充分利用5G网络的特点,支持超大规模设备接入,转发速度更快,延迟更低。
- 3 我司MQTT服务器应用场景
- 车联网、单车租赁出行
2、工业物联网
3、智慧家庭
4、消防监控
5、空气监控
6、水资源监控
7、智慧社区
其他非物联网应用场景:
- 视频直播弹屏消息推送
- 手机APP消息推送服务
- IM实时聊天(一对一模式,、群组模式)
- 交易数据订阅推送。
5、应用系统消息总线。
2 XMQ-MQTT服务器软件介绍
2.1 系统总体设计特点(单点系统)
- 我司MQTT服务器的设计的总体特点是采用设备多点接入。
- 单点转发,只需要一个核心的转发模块进行消息的转发。
- 单点(登录、订阅、发布)鉴权
- 账户信息、订阅信息、会话信息集中单点保存处理。
以上的设计特点使我方系统,支持海量设备接入、系统转发效率高、系统运行稳定、系统数据保持绝对一致性。
2.2 千万设备接入MQTT组网图(单点转发)
MQTT服务器软件由以下模块构成:
- 多个设备接入网关模块(TcpServer)
2、单个消息转发网关模块(switch)
3、单个鉴权模块(auth)
4、单个保留消息处理模块(Retain)
5、管理服务器
6、综合管理工具
2.3 MQTT服务器软件各模块介绍
2.3.1 设备接入网关模块(TcpServer)
该模块是MQTT服务器的设备接入模块,接收来自MQTT客户端的TCP连接。对来自设备的上行MQTT消息进行协议分析,打包转发给转发网关模块,并接收来自转发网关模块的下行消息,进行协议分析,路由到对应的设备账户的发送消息队列进行下行发送。
1、单个设备接入网关可最大支持百万设备账户接入,需要采用linux操作系统。
2、单个设备接入网关可连接多个消息转发网关,上行发布消息根据账户ID进行自动路由到设备归属的转发网关模块。
3、设备可接入任意一个设备接入网关,且切换接入网关模块时会话信息不丢失,可轻松实现负荷分担和网络失效转移。
4、支持TCP协议、SSL/TLS接入、WebSocket(SSL/TLS)
2.3.2 消息转发网关模块(Switch)
Switch模块是MQTT服务器的核心模块,接收来自MQTT账户的消息,交由鉴权模块进行消息鉴权和主题(Topic)匹配,然后把消息路由到匹配到1个或多个订阅账户。终端账户可以直接接入Switch或者终端接入网关接入switch,终端再接入终端接入网关。在接入海量设备的情况下,终端不直连switch,而是接入终端接入网关。
Switch模块核心功能如下。
- Switch启动时加载归属自己账户信息和会话信息。
- Switch的每个账户下可建立1个或多个接口,可接收来自外部的连接,也可主动连接外部的其他MQTT服务器。
- 通过控制账户的流入速度、流出速度、滑动窗口设置可实现对账户消息的流速和并发进行控制。
4、Switch支持对账户接口的握手检测和超时处理,也可主动周期性的向其他MQTT服务器发送握手。
- 支持账户的会话,可保存和删除会话。
- 支持遗嘱消息机制。
7、对终端的登录/退出指令,路由给登录鉴权模块处理,并把鉴权结果返回给终
端账户。
8、对终端的订阅/退订指令,路由给订阅鉴权模块处理,并把鉴权结果返回给终
端账户。
9、对终端的消息发布指令,路由给发布鉴权模块处理。
10、Switch对外提供HTTP/XML的管理接口,从而实现对Switch的管理。
2.3.3 鉴权模块(auth)
1、此模块集中保存和加载账户登录鉴权信息、账户订阅关系。
2、完成账户的登录/登出鉴权、账户订阅/退订鉴权、账户发布消息鉴权等。
3、系统部署时可分开部署为:登录鉴权模块、订阅鉴权模块、发布鉴权模块。
2.3.4 保留消息模块(Retain)
该模块是用于处理保留消息的模块。当账户发布保留消息时,Switch模块把该保留消息转发到Retain模块,Retain模块保存该保留消息,Retain模块默认采用内存数据库进行保存。当MQTT账户通过MQTT订阅指令订阅时,Retain模块根据订阅规则把匹配到的保留消息转发给订阅客户。
2.3.5 管理服务器
管理工具通过访问管理服务器来管理各个功能模块,管理服务器对管理工具开放HTTPS/WWW/XML访问接口,各个功能模块对外也是提供WWW/XML访问接口。
2.3.6 综合管理工具
管理器实现对MQTT服务器的管理,通过管理器可完成以下功能的管理。综合管理工具通过HTTP/SSL和管理服务器通讯。
- 服务器管理
通过管理器可以增加、删除账号、修改服务器节点信息。
- 账号管理
通过管理器可以增加账号、删除账号、修改账号信息。
- 接口管理
通过管理器可以增加接口、删除接口、修改接口信息。
- 路由管理
通过管理器可以为某账号增加、删除路由。
- 订阅关系管理
通过管理器可以为某账号增加、删除、修改订阅关系。还可以查询和匹配订阅关系。
- 发布许可规则管理
实现对发布许可规则的增加、删除、修改。
- 订阅许可规则管理
实现对订阅许可规则的增加、删除、修改。
- 协议跟踪
1、管理器可跟踪所有账户的协议消息,可显示每个消息的详细内容,包括
传输方向、传输时间、接口名称、命令字、指令名称、消息概要。
2、维测台实现对账号跟踪,维测台可以跟踪该账号下所有网络接口的消息,包
括登录、退出、握手、发布、订阅、退订以及对应的应答消息。
3、同时跟踪账号的数量没有限制。
4、 跟踪消息过滤,可以只跟踪指定的发布主题(Topic)和账户(ClientID)的消
息。
5、可以查看每个消息的协议字段的消息信息。
- 计数器跟踪
可以实时查看每个模块的系统计数器信息和每个账户的计数器信息。直观展示系统的运行情况。
- 日志跟踪
可以实时跟踪模块生成的系统日志。
2.4 核心业务流程
- 终端设备登录流程
- 终端设备订阅流程
- 下行1对1的消息转发流程
- 下行1对多的消息转发流程
- 终端Will(遗嘱)消息发布流程
3 与用户业务系统集成方案
- MQTT客户账户管理方案
- MQTT服务器启动时通可过HTTP接口从业务系统中加载账户信息。业务系统只需按规范实现该HTTP接口。
- 客户登录鉴权由MQTT服务器完成。系统启动时已经加载账户信息,后续的客户登录鉴权只需由MQTT完成即可,登录鉴权主要是针对ClientID、用户名、密码、客户登录侧IP。
3、账户的变动(增加、删除、修改)同步
1)业务系统调用MQTT服务器提供的账户管理接口完成对MQTT服务器账
户的变动管理。
2)MQTT服务器提供的接口有HTTP/XML同步操作方案和MQTT的异步
通知方案。
- MQTT订阅关系管理方案
1、MQTT服务器启动时auth模块通过HTTP接口从业务系统中加载客户的订阅关系。业务系统只需按规范实现该HTTP接口。
3、订阅关系变动(增加、删除、修改)同步
1)业务系统调用MQTT服务器提供的订阅关系管理接口完成对MQTT服务器订阅关系的变动管理。
2)MQTT服务器提供的接口有HTTP/XML同步操作方案。
- 用户系统采用MQTT协议对接MQTT服务器
用户的业务系统可采用MQTT3.X协议接入到MQTT服务器,服务器侧可为业务系统新开多个(种)账户,业务系统使用这些账户,发送和接收应用消息。
- 用户采用HTTP协议对接服务器
- 用户系统接收MQTT服务器的通知消息
用户业务系统可以采用以上的MQTT/HTTP方式接入MQTT服务器,用以接收MQTT发送的通知消息,通知消息报告:客户账户登录、退出通知消息,握手请求、握手超时通知消息、终端设备订阅/退订通知消息、以及其他通知消息。
4 通讯协议支持
- 支持TCP协议协议承载MQTT。
- 支持TCP/SSL/TLS协议承载MQTT。
- 支持TCP/WebSocket协议协议承载MQTT。
- 支持SSL/TLS的WebSocket协议承载MQTT。
- 支持自定义的HTTP协议。
5 产品开发特点
- 系统完全采用C/C++开发,没采用任何第三方的插件、控件、SDK等,完全自主知识产权,技术和风险可控。(除去SSL/TLS,SSL/TLS采用OpenSSL),系统运行时不依赖任何第三方中间件平台。
2. 系统的鉴权模块产品模块采用我司独立知识产权的内存数据库系统和脚本引擎技术,通过内存数据库和脚本引擎实现登录鉴权、订阅/ 退订、发布鉴权和订阅关系匹配。
3. 各个功能模块的HTTP侧功能采用我司独立知识产权的嵌入WWW模块,支持HTTP1.1协议。
4. 设备接入网关和消息网关的WebSocket接入功能侧采用我司独立知识产权的嵌入Websocket模块。
5、自主研发的MQTT订阅规则匹配目录树数据结构,支持主题匹配规则和规则匹配发布主题,支持海量订阅规则和订阅主题。
6.系统内部采用的高效数据结构(Trie树、avl树、多级树、模糊匹配树、消息缓存队列、内存管理、Xml解析、Json解析、超大数组、定时器管理等)都是自主研发,拥有独立知识产权,所有这些基础功能模块的功能和执行效率都优于任何第三方的相应产品。
- 7.整个系统的各个功能模块采用模块化、搭积木的方式进行开发,保证产品的稳定性。
6 产品技术特点
- 支持海量终端接入,在目前主流的系统配置下,单点转发网关可支持252个设备接入网关,共1千万的设备接入。
- 转发速度快,非常适合要求实时转发的应用系统。
1)每秒可转发10~40万条消息。
2)以上转发速度是在海量设备接入的情况下的。
3)由于系统是由消息转发网关(Switch)负责完成。
3、支持海量订阅规则,仍可保持高效的发布主题到订阅规则匹配性能。
1)系统总共可支持上千万的订阅关系,随着硬件设备的逐步提高,可以加载更多的订阅关系
2)每个MQTT账户订阅关系数量没有限制。
4、系统稳定可靠,无内存泄漏,系统可长时间运行,整体系统的稳定性取决于操作系统、服务器硬件性能、网络情况。
5、容易部署、容易管理,可操作性强。
6、协议跟踪功能,易于终端账户接入调试。
7、全中文图形操作界面,适合中国技术人员使用特点
8、系统提供和客户业务系统对接的接口,方便MQTT服务器和客户业务系统进行对接和集成。
10、系统对外提供HTTP/XML的管理接口,客户方便对系统进行功能调用。基于系统提供的管理接口可实现以下管理和控制。
1)账户管理(增删改查)
2)接口管理(增删改查)
3) 订阅关系管理(增删改查)
4) 获取系统计数器和账户计数器信息。
11、组网灵活
1)可以增加终端接入网关,进行终端接入扩容。
2) 消息转发网关可以部署多个,每个终端接入网关可以连接多个消息转发网关,轻松实现多点系统。
3) 多个消息转发网关之间可以相互转发消息。
4) 多个消息转发网关可以多级级联,实现消息的广播发送,具体可参考《XMQ-MQTT服务器系统组网图汇总》。
12、终端设备可以登录任意一个接入网关,实现设备接入网关故障转移。
7 系统主要技术指标
- 最多支持1千万设备账户接入。
- 部署单转发节点,每秒可支持10万~40万条消息转发。
- 系统支持加载的的订阅关系没有数量限制。
- 每个账户(ClientID)的订阅关系没有数量限制。
- 单次发布匹配订阅关系数量没有限制,即单次发布消息匹配的目的账户数量没有限制。
- 最大支持负载为64,000字节(Payload的长度)消息的实时转发。
- 订阅规则(Filter)和主题(Topic)最大支持255个字节。
- 订阅规则和主题支持最大127层目录。
- 支持订阅规则的#(匹配任意层目录)和+(匹配单个目录)的定义,支持订阅规则中出现多个#和+的匹配符。
8 系统配置要求
- 支持window7及以上版本的64位操作系统
- 支持window 2008及以上版本的64位操作系统
- 支持linux(CentOS 6.x以上)64位操作系统
- 硬件最低配置:内存4G,双核CPU、磁盘200G、百/千兆网卡
更多推荐
千万设备接入MQTT服务器系统-XMQ产品介绍
发布评论