概述
联系方式:
手机:18025323007
QQ: 723273055
e-mail: 723273055@qq.com
- 概述
保定恩待软件开发有限公司发布的MQTT服务器软件系统是完全实现和兼容MQTT V3.X版本协议,并根据实际需求做了适当的扩展。支持MQTT发布消息的实时消息鉴权、订阅匹配、快速转发,同时集成本公司的内存数据库系统和脚本引擎系统。已成功应用于多个MQTT应用系统。发布的版本包括标准版、企业版、集群版。本文档主要介绍单机版本的产品结构、主要功能、性能指标、技术特点。
- MQTT协议
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,它是一种轻量级的、基于代理的“发布/订阅”模式的消息传输协议。其具有协议简洁、小巧、可扩展性强、省流量等优点,而且已经有PHP,JAVA,Python,C/C++,C#,Go等多个语言版本,基本可以使用在任何平台上,MQTT协议适合用来当做物联网的通信协议,或者其他适合的应用场景。
- 我司产品应用场景
- 车联网
- 工业物联网
- 智能家居、智慧城市、医疗医护
- 视频直播弹幕
- IM 实时聊天 (一对一聊天,群组聊天)
- 手机APP推送服务
- 金融交易数据订阅推送
- MQTT服务器软件介绍
- MQTT平台组网图
MQTT服务器软件由以下模块构成:
- 核心转发网关模块(switch)
Switch是系统的核心模块,支持MQTT客户端和其他类型账户的接入,进行消息的接收、鉴权、订阅匹配/路由、转发下一级账户。
- 保留消息处理模块
用于处理客户账户发布的保留消息,当其他客户订阅某主题规则时,把保留消息转发给订阅客户。
- 话单入库、统计模块
用于把switch模块生成的客户提交的发布记录、转发到目的账户转发记录导入到关系数据库(MSSQL、MYSQL)。
- 综合管理工具
用于管理MQTT服务器的模块的可视化管理工具。
- MQTT服务器软件各模块介绍
- 转发网关模块(Switch)
Switch模块是MQTT服务器的核心模块,接收来自MQTT客户端的连接,并对客户账户发布的消息进行鉴权处理、订阅匹配、存储转发。
Switch模块基本功能如下。
- Switch启动时加载所有的账户信息,用来对客户登录鉴权。
- Switch的每个账户下可建立1个或多个接口,可接收来自外部的连接,也可主动连接外部的其他MQTT服务器。
- 通过控制账户的流入速度、流出速度、滑动窗口设置可实现对账户消息的流速进行控制。
4、Switch支持对账户接口的握手检测和超时处理,也可主动周期性的向其他
MQTT服务器发送握手。
5、Switch支持消息的QoS处理,对于QoS为1的消息,可进行重发处理;对于
QoS为2的消息可进行2阶段消息转发处理。
6、支持账户的会话,可保存和删除会话。
7、支持遗嘱消息机制。
8、配合保留消息处理模块,可实现对保留(Retain)消息的处理。
9、Switch启动时加载所有的订阅关系(Subscribe Filter),对客户发布的消息
进行实时匹配,根据消息的主题,匹配到所有符合的订阅客户,并把消息转
发目的客户的消息队列。
10、Switch支持终端客户账户的订阅和退订指令,可生成/删除订阅关系。
11、Switch对外提供HTTP/XML的管理接口,从而实现对Switch的管理。
- 综合管理工具
管理器实现对MQTT服务器的管理,通过管理器可完成以下功能的管理。
- 账号管理
通过管理器可以增加账号、删除账号、修改账号信息。
- 接口管理
通过管理器可以增加接口、删除接口、修改接口信息。
- 路由管理
通过管理器可以为某账号增加、删除路由。
- 订阅关系管理
通过管理器可以为某账号增加、删除、修改订阅规则。还可以查询和匹配订阅规则。
- 发布许可规则管理
实现对发布许可规则的增加、删除、修改。
- 订阅许可规则管理
实现对订阅许可规则的增加、删除、修改。
- MQTT协议跟踪
1、管理器可跟踪MQTT协议账户,可显示每个消息的详细内容,包括
传输方向、传输时间、接口名称、命令字、指令名称、消息概要。
2、维测台实现对账号跟踪,维测台可以跟踪该账号下所有网络接口的消息,包
括登录、退出、握手、发布、订阅、退订以及对应的应答消息。
- 同时跟踪账号的数量没有限制。
4、 跟踪消息过滤,可以只跟踪指定的发布主题(Topic)和账户(ClientID)的消
息。
5、可以查看每个MQTT消息的协议字段的消息信息。
- 转发记录入库模块
记录入库模块用于把switch模块生成的转发记录文件导入到磁盘数据库,例如:MS SQL Server、MYSQL。
- 支持MQTT .X协议的功能
- 支持账户登录、退出
- 支持客户账户以ClientID、用户名、密码登录。
- 支持客户以空ClientID、用户名、密码登录,MQTT客户自动分配临时ClienID给客户。
- 客户账户登录和退出时,MQTT服务器都通过通知接口通知业务系统,业务系统收到通知事件做相应的处理。
- 支持消息有序转发
MQTT服务器支持按照客户账户收到的消息顺序进行鉴权、匹配订阅客户账户,并把消息投递到目的账户的消息FIFO队列,MQTT服务器转发消息时,也保证先到先转发的原则,保证消息的转发顺序。
- 支持账户订阅/退订流程
系统支持客户账户发送订阅(Subscribe)和退订(Ununsubcribe)指令。当客户发送订阅指令时,MQTT服务器会自动生成相应的订阅关系;当客户发送退订指令时,MQTT服务器会自动删除相应的订阅关系。每次客户账户成功订阅和退订时MQTT服务器都通过通知接口通知业务系统,业务系统收到通知事件做相应的处理。
- 支持保留消息
当客户账户发布保留(Retain)消息时,MQTT服务器会保存保留消息,当其他客户账号订阅时,会从保留服务器获取匹配的保留消息,并推送给订阅客户账户。
- 支持遗嘱(Will)消息
当客户账户登录成功后,如果网络出现异常,导致客户账户不能正确安全退出,MQTT服务器会判断客户账户登录时是否启用了遗嘱消息,如果启用则发布遗嘱消息,订阅该遗嘱消息主题的账户会收到此遗嘱消息。
- 支持QoS 0、1、2发布
系统支持QoS为0、1、2:
0:“至多一次”,消息发布完全依赖底层TCP网络。会发生消息丢失或重复。
1:“至少一次”,确保消息到达,但消息重复可能会发生。
2:“只有一次”,确保消息到达一次。
- 支持握手检测
MQTT服务器支持握手机制。当客户账户登录MQTT服务器成功后,要根据服务器要求,周期性的发送握手(Ping)请求,服务器即时返回握手应答,如果服务器在规定的时间内没有收到客户账户发送的握手请求,则主动关闭网络连接,并告警和发送通知消息到用户的业务系统。
如果MQTT服务器作为客户端登录其他MQTT服务器时,登录成功后,也会周期性的发送握手,并等待应答。
- MQTT软件扩展功能
- 每个账户支持多个接口同时接入
MQTT标准协议每个账户同时只允许一个连接登录,但是在某些应用场景,支持多个并发连接会更方便程序部署。我司MQTT服务器软件通过修改配置可以使账户支持多个并发连接。每个连接可以发送和接收消息,支持保留消息和QoS(0、1、2),每个连接异常关闭都可以单独发布遗嘱(Will)消息。
如上图所示,有6个接口同时成功登录到nDare账户。
- 接口支持发送、接收、发送接收类型
如果设置账户支持多个并发连接,通过扩展MQTT协议的CONNECT指令每个接口可以指定接口类型:发送接口、接收接口、发送接收接口。
1)发送接口
只可以发送消息,不能接收消息。
2)接收接口
只可以接收消息,不能发送消息。
3)发送接收接口
即可以接收消息,也可以发送消息。
如上图所示,有6个接口同时成功登录到nDare账户,其中有2个接收发送接口,2个接收接口,2个发送接口。
- 主动连接其他MQTT服务器系统
MQTT服务器除了被动接受来自终端客户的主动连接外,也可以主动连接其他MQTT服务器,自身以客户端的方式登录其他MQTT服务器。这种主动接口的属性和功能和被动接口是一样的,支持消息的收发和发送、接收、发送接收接口
类型(MQTT必须也是我司的产品),也可以在一个账户下建立多个接口登录到MQTT服务器(目的服务器必须也支持多个接口才可以)。
- 支持消息优先级转发
MQTT服务器预设优先级规则,MQTT服务器收到发送账户提交的消息,根据客户账户名称和发布主题匹配优先级规则,得到消息的转发优先级(优先级:0、1、2),转发到目的账户的等待队列,高优先级的消息优先发送。
- 转发消息支持滑动窗口控制
通过控制账户的“滑动窗口”(Max InFlight)设置,可以控制消息发送的并发度,从而控制消息的发送速度和并发。
- 支持账户消息收发速度控制
Switch的每个账号可设置流入和流出速度,switch根据账号的流速对流入和流出的消息进行流量控制。
- 支持路由发布
系统除了支持标准的订阅匹配发布之外,也支持根据路由的方式进行消息转发,Switch根据每个账号下的路由可建立消息路由表。路由表包括发送账号、发布主题、目的账户3个字段。
从某个账号来的发布消息根据此消息的源账号、发布主题路由到目的账号的等待发送消息队列。路由匹配支持%和?匹配符,根据源账号、发布主题依次进行最大精确匹配。
- 支持点到点发布
采用标准的MQTT协议,理论上可以通过相互订阅的方式实现点对点通信,但
是逻辑相对复杂。我司MQTT系统通过对发布主题进行特定的约定,就可以实
现两个账户间的点到点发布。
- 管理客户账户
客户的业务系统可以MQTT的账户的进行管理,执行以下操作:
- 增加账户
- 删除账户
- 修改账户
修改账户的用户名、密码;修改发送、接收速度、发送滑动窗口;启用、禁用账户。
- 查询账户
MQTT服务器对外提供HTTP/XML的接口,客户的业务系统通过调用以上操作的接口实现对MQTT服务器账户的管理。
- 管理账户订阅规则
业务系统可以对账户的订阅规则进行管理,执行以下操作:
- 增加账户订阅规则
- 删除账户订阅规则
- 修改账户订阅规则
- 查询账户订阅规则
- 匹配账户订阅规则
MQTT服务器对外提供HTTP/XML的接口,客户的业务系统通过调用以上操作的接口实现对MQTT服务器订阅规则的管理。
- 控制账户许可订阅的主题过滤规则
通过设置某账户许可订阅的主题规则,就可以控制该客户账户许可接收到其他账户发布的消息。设置订阅许可规则,也可以限制订阅使用的QoS。
- 控制账户许可发布的主题过滤规则
通过设置某账户许可发布的主题规则,就可以控制该客户账户许可发布的消息,可以控制客户账户发布消息的QoS、遗嘱标志、保留消息参数设置。
- 与用户业务系统集成方案
- MQTT客户账户管理方案
- MQTT服务器启动时通过HTTP接口从业务系统中加载账户信息。业务系统只需按规范实现该HTTP接口,当MQTT服务器启动调用该HTTP接口时,业务系统返回规定格式的账户信息。
- 客户登录鉴权由MQTT服务器完成。系统启动时已经加载账户信息,后续的客户登录鉴权只需由MQTT完成即可,登录鉴权主要是针对ClientID、用户名、密码、客户登录侧IP。
3、账户的变动(增加、删除、修改)同步
1)业务系统调用MQTT服务器提供的账户管理接口完成对MQTT服务器账
户的变动管理。
2)MQTT服务器提供的接口有HTTP/XML同步操作方案和MQTT的异步
通知方案。
- MQTT订阅关系管理方案
1、MQTT服务器启动时通过HTTP接口从业务系统中加载客户的订阅关系。业
务系统只需按规范实现该HTTP接口,当MQTT服务器启动调用该HTTP接口时,业务系统返回规定格式的订阅关系信息。
- 客户账户发布的消息由MQTT服务器完成订阅匹配。
3、订阅关系变动(增加、删除、修改)同步
1)业务系统调用MQTT服务器提供的订阅关系管理接口完成对MQTT服务器订阅关系的变动管理。
2)MQTT服务器提供的接口有HTTP/XML同步操作方案。
- 用户系统采用MQTT协议对接MQTT服务器
用户的业务系统可采用MQTT3.X协议接入到MQTT服务器,服务器侧可为业务系统新开多个(种)账户,业务系统使用这些账户,发送和接收应用消息。
- 用户采用HTTP协议对接服务器
- 用户系统接收MQTT服务器的通知消息
用户业务系统可以采用以上的MQTT/HTTP方式接入MQTT服务器,用以接收MQTT发送的通知消息,通知消息报告:客户账户登录、退出通知消息,握手请求、握手超时通知消息、终端设备订阅/退订通知消息、以及其他通知消息。
- 系统的开放性
1、MQTT服务器所有的管理接口都采用HTTP/XML的方式,客户都可调用。
1)账户管理:增加、删除、修改、查询
2) 查询账户计数器
3)接口管理:增加、删除、修改
4)订阅关系管理:增加、删除、修改、查询、匹配。
- 产品特点
- 支持大量终端接入MQTT服务器。
- 转发速度快,非常适合要求实时转发的应用系统。
- 容易部署、容易管理,可操作性强。
- 系统稳定,可用性强。
- 协议跟踪功能,易于终端账户接入调试。
- 全中文操作界面,适合中国技术人员使用特点。
- 支持海量订阅规则,但匹配性能不会下降很多。
- 完全兼容MQTT 3.X协议,并进行合理的扩展。
- 系统完全采用VC++开发,没采用任何第三方的插件、控件、SDK等,完全自主知识产权,技术和风险可控。
10、系统提供和客户业务系统对接的接口,方便MQTT服务器和客户业务系统进
行对接和集成。
11、系统对外提供HTTP/XML的管理接口,客户方便对系统进行功能调用。
- 性能指标
- 支持50万以上的账户接入。
- 每秒最大可转发10万~20万条消息。
- 系统支持加载的的订阅规则没有数量限制。
- 每个客户所能订阅的规则没有数量限制。
4、单次发布匹配订阅规则数量没有限制。
5、最大支持负载为64,000字节(Payload的长度)消息的实时转发。
6、订阅规则(Filter)和主题(Topic)最大支持255个字节。
7、订阅规则和主题支持最大127或更多层次的目录
8、支持订阅规则的#(匹配任意层目录)和+(匹配单个目录)的定义,支持订阅
规则中出现多个#和+的匹配符。
9、支持以下协议
1)TCP
2)TCP(SSL/TLS)
3) WebSocket
4) WebSocket(SSL/TLS)
5) HTTP
- 系统配置要求
- 支持window7及以上版本的64位操作系统
- 支持window 2008及以上版本的64位操作系统
- 硬件最低配置:内存4G,双核CPU、磁盘(d:)100G、百/千兆网卡
最后
以上就是温暖酒窝为你收集整理的高性能MQTT服务器(XMQ-标准版)发布的全部内容,希望文章能够帮你解决高性能MQTT服务器(XMQ-标准版)发布所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复