我是靠谱客的博主 温暖酒窝,最近开发中收集的这篇文章主要介绍高性能MQTT服务器(XMQ-标准版)发布,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

联系方式:

手机:18025323007

QQ: 723273055

e-mail: 723273055@qq.com

 

  1.  概述

保定恩待软件开发有限公司发布的MQTT服务器软件系统是完全实现和兼容MQTT V3.X版本协议,并根据实际需求做了适当的扩展。支持MQTT发布消息的实时消息鉴权、订阅匹配、快速转发,同时集成本公司的内存数据库系统和脚本引擎系统。已成功应用于多个MQTT应用系统。发布的版本包括标准版、企业版、集群版。本文档主要介绍单机版本的产品结构、主要功能、性能指标、技术特点。

 

  1.  MQTT协议

 

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,它是一种轻量级的、基于代理的“发布/订阅”模式的消息传输协议。其具有协议简洁、小巧、可扩展性强、省流量等优点,而且已经有PHP,JAVA,Python,C/C++,C#,Go等多个语言版本,基本可以使用在任何平台上,MQTT协议适合用来当做物联网的通信协议,或者其他适合的应用场景。

 

  1.  我司产品应用场景

 

  • 车联网
  • 工业物联网
  • 智能家居、智慧城市、医疗医护
  • 视频直播弹幕
  • IM 实时聊天 (一对一聊天,群组聊天)
  • 手机APP推送服务
  • 金融交易数据订阅推送

 

  1.  MQTT服务器软件介绍
  2.  MQTT平台组网图

 

 

 

 

 

 

MQTT服务器软件由以下模块构成:

 

  1. 核心转发网关模块(switch)

Switch是系统的核心模块,支持MQTT客户端和其他类型账户的接入,进行消息的接收、鉴权、订阅匹配/路由、转发下一级账户。

  1. 保留消息处理模块

用于处理客户账户发布的保留消息,当其他客户订阅某主题规则时,把保留消息转发给订阅客户。

 

  1. 话单入库、统计模块

用于把switch模块生成的客户提交的发布记录、转发到目的账户转发记录导入到关系数据库(MSSQL、MYSQL)。

 

  1. 综合管理工具

用于管理MQTT服务器的模块的可视化管理工具。

 

  1.  MQTT服务器软件各模块介绍
  2.  转发网关模块(Switch)

Switch模块是MQTT服务器的核心模块,接收来自MQTT客户端的连接,并对客户账户发布的消息进行鉴权处理、订阅匹配、存储转发。

 

Switch模块基本功能如下。

 

  1. Switch启动时加载所有的账户信息,用来对客户登录鉴权。
  2. Switch的每个账户下可建立1个或多个接口,可接收来自外部的连接,也可主动连接外部的其他MQTT服务器。
  3. 通过控制账户的流入速度、流出速度、滑动窗口设置可实现对账户消息的流速进行控制。

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的管理。

  1.  综合管理工具

管理器实现对MQTT服务器的管理,通过管理器可完成以下功能的管理。

  1.  账号管理

通过管理器可以增加账号、删除账号、修改账号信息。

 

  1.  接口管理

通过管理器可以增加接口、删除接口、修改接口信息。

 

  1.  路由管理

通过管理器可以为某账号增加、删除路由。

 

  1.  订阅关系管理

通过管理器可以为某账号增加、删除、修改订阅规则。还可以查询和匹配订阅规则。

 

  1.  发布许可规则管理

实现对发布许可规则的增加、删除、修改。

  1.  订阅许可规则管理

实现对订阅许可规则的增加、删除、修改。

 

  1.  MQTT协议跟踪

1、管理器可跟踪MQTT协议账户,可显示每个消息的详细内容,包括

传输方向、传输时间、接口名称、命令字、指令名称、消息概要。

 

2、维测台实现对账号跟踪,维测台可以跟踪该账号下所有网络接口的消息,包

括登录、退出、握手、发布、订阅、退订以及对应的应答消息。

  1. 同时跟踪账号的数量没有限制。

4、 跟踪消息过滤,可以只跟踪指定的发布主题(Topic)和账户(ClientID)的消

息。

5、可以查看每个MQTT消息的协议字段的消息信息。

 

 

  1.  转发记录入库模块

记录入库模块用于把switch模块生成的转发记录文件导入到磁盘数据库,例如:MS SQL Server、MYSQL。

 

  1.  支持MQTT .X协议的功能

 

  1.  支持账户登录、退出
  1. 支持客户账户以ClientID、用户名、密码登录。
  2. 支持客户以空ClientID、用户名、密码登录,MQTT客户自动分配临时ClienID给客户。
  3. 客户账户登录和退出时,MQTT服务器都通过通知接口通知业务系统,业务系统收到通知事件做相应的处理。

 

  1.  支持消息有序转发

MQTT服务器支持按照客户账户收到的消息顺序进行鉴权、匹配订阅客户账户,并把消息投递到目的账户的消息FIFO队列,MQTT服务器转发消息时,也保证先到先转发的原则,保证消息的转发顺序。

 

  1.  支持账户订阅/退订流程

系统支持客户账户发送订阅(Subscribe)和退订(Ununsubcribe)指令。当客户发送订阅指令时,MQTT服务器会自动生成相应的订阅关系;当客户发送退订指令时,MQTT服务器会自动删除相应的订阅关系。每次客户账户成功订阅和退订时MQTT服务器都通过通知接口通知业务系统,业务系统收到通知事件做相应的处理。

 

  1.  支持保留消息

当客户账户发布保留(Retain)消息时,MQTT服务器会保存保留消息,当其他客户账号订阅时,会从保留服务器获取匹配的保留消息,并推送给订阅客户账户。

  1.  支持遗嘱(Will)消息

当客户账户登录成功后,如果网络出现异常,导致客户账户不能正确安全退出,MQTT服务器会判断客户账户登录时是否启用了遗嘱消息,如果启用则发布遗嘱消息,订阅该遗嘱消息主题的账户会收到此遗嘱消息。

 

  1.  支持QoS 0、1、2发布

系统支持QoS为0、1、2:

 

0:“至多一次”,消息发布完全依赖底层TCP网络。会发生消息丢失或重复。

 

1:“至少一次”,确保消息到达,但消息重复可能会发生。

 

2:“只有一次”,确保消息到达一次。

 

  1.  支持握手检测

MQTT服务器支持握手机制。当客户账户登录MQTT服务器成功后,要根据服务器要求,周期性的发送握手(Ping)请求,服务器即时返回握手应答,如果服务器在规定的时间内没有收到客户账户发送的握手请求,则主动关闭网络连接,并告警和发送通知消息到用户的业务系统。

 

如果MQTT服务器作为客户端登录其他MQTT服务器时,登录成功后,也会周期性的发送握手,并等待应答。

 

  1.  MQTT软件扩展功能

 

  1.  每个账户支持多个接口同时接入

MQTT标准协议每个账户同时只允许一个连接登录,但是在某些应用场景,支持多个并发连接会更方便程序部署。我司MQTT服务器软件通过修改配置可以使账户支持多个并发连接。每个连接可以发送和接收消息,支持保留消息和QoS(0、1、2),每个连接异常关闭都可以单独发布遗嘱(Will)消息。

 

 

如上图所示,有6个接口同时成功登录到nDare账户。

 

  1.  接口支持发送、接收、发送接收类型

如果设置账户支持多个并发连接,通过扩展MQTT协议的CONNECT指令每个接口可以指定接口类型:发送接口、接收接口、发送接收接口。

1)发送接口

       只可以发送消息,不能接收消息。

 

2)接收接口

       只可以接收消息,不能发送消息。

 

3)发送接收接口

       即可以接收消息,也可以发送消息。

 

 

如上图所示,有6个接口同时成功登录到nDare账户,其中有2个接收发送接口,2个接收接口,2个发送接口。

 

  1.  主动连接其他MQTT服务器系统

MQTT服务器除了被动接受来自终端客户的主动连接外,也可以主动连接其他MQTT服务器,自身以客户端的方式登录其他MQTT服务器。这种主动接口的属性和功能和被动接口是一样的,支持消息的收发和发送、接收、发送接收接口

类型(MQTT必须也是我司的产品),也可以在一个账户下建立多个接口登录到MQTT服务器(目的服务器必须也支持多个接口才可以)。

 

  1.  支持消息优先级转发

MQTT服务器预设优先级规则,MQTT服务器收到发送账户提交的消息,根据客户账户名称和发布主题匹配优先级规则,得到消息的转发优先级(优先级:0、1、2),转发到目的账户的等待队列,高优先级的消息优先发送。

 

 

  1.  转发消息支持滑动窗口控制

通过控制账户的“滑动窗口”(Max InFlight)设置,可以控制消息发送的并发度,从而控制消息的发送速度和并发。

 

  1.  支持账户消息收发速度控制

Switch的每个账号可设置流入和流出速度,switch根据账号的流速对流入和流出的消息进行流量控制。

 

  1.  支持路由发布

系统除了支持标准的订阅匹配发布之外,也支持根据路由的方式进行消息转发,Switch根据每个账号下的路由可建立消息路由表。路由表包括发送账号、发布主题、目的账户3个字段。

 

从某个账号来的发布消息根据此消息的源账号、发布主题路由到目的账号的等待发送消息队列。路由匹配支持%和?匹配符,根据源账号、发布主题依次进行最大精确匹配。

 

  1.  支持点到点发布

采用标准的MQTT协议,理论上可以通过相互订阅的方式实现点对点通信,但

是逻辑相对复杂。我司MQTT系统通过对发布主题进行特定的约定,就可以实

现两个账户间的点到点发布。

 

  1.  管理客户账户

客户的业务系统可以MQTT的账户的进行管理,执行以下操作:

  1. 增加账户
  2. 删除账户
  3. 修改账户

修改账户的用户名、密码;修改发送、接收速度、发送滑动窗口;启用、禁用账户。

  1. 查询账户

 

MQTT服务器对外提供HTTP/XML的接口,客户的业务系统通过调用以上操作的接口实现对MQTT服务器账户的管理。

 

  1.  管理账户订阅规则

业务系统可以对账户的订阅规则进行管理,执行以下操作:

  1. 增加账户订阅规则
  2. 删除账户订阅规则
  3. 修改账户订阅规则
  4. 查询账户订阅规则
  5. 匹配账户订阅规则

 

MQTT服务器对外提供HTTP/XML的接口,客户的业务系统通过调用以上操作的接口实现对MQTT服务器订阅规则的管理。

 

  1.  控制账户许可订阅的主题过滤规则

通过设置某账户许可订阅的主题规则,就可以控制该客户账户许可接收到其他账户发布的消息。设置订阅许可规则,也可以限制订阅使用的QoS。

 

 

  1.  控制账户许可发布的主题过滤规则

通过设置某账户许可发布的主题规则,就可以控制该客户账户许可发布的消息,可以控制客户账户发布消息的QoS、遗嘱标志、保留消息参数设置。

 

 

  1.  与用户业务系统集成方案

 

  1.  MQTT客户账户管理方案
  1. MQTT服务器启动时通过HTTP接口从业务系统中加载账户信息。业务系统只需按规范实现该HTTP接口,当MQTT服务器启动调用该HTTP接口时,业务系统返回规定格式的账户信息。

 

  1. 客户登录鉴权由MQTT服务器完成。系统启动时已经加载账户信息,后续的客户登录鉴权只需由MQTT完成即可,登录鉴权主要是针对ClientID、用户名、密码、客户登录侧IP。

 

3、账户的变动(增加、删除、修改)同步

   1)业务系统调用MQTT服务器提供的账户管理接口完成对MQTT服务器账

户的变动管理。

 

   2)MQTT服务器提供的接口有HTTP/XML同步操作方案和MQTT的异步

通知方案。

 

  1.  MQTT订阅关系管理方案

 

1、MQTT服务器启动时通过HTTP接口从业务系统中加载客户的订阅关系。业

务系统只需按规范实现该HTTP接口,当MQTT服务器启动调用该HTTP接口时,业务系统返回规定格式的订阅关系信息。

 

  1. 客户账户发布的消息由MQTT服务器完成订阅匹配。

 

3、订阅关系变动(增加、删除、修改)同步

   1)业务系统调用MQTT服务器提供的订阅关系管理接口完成对MQTT服务器订阅关系的变动管理。

 

   2)MQTT服务器提供的接口有HTTP/XML同步操作方案。

 

  1.  用户系统采用MQTT协议对接MQTT服务器

用户的业务系统可采用MQTT3.X协议接入到MQTT服务器,服务器侧可为业务系统新开多个(种)账户,业务系统使用这些账户,发送和接收应用消息。

 

 

  1.  用户采用HTTP协议对接服务器

 

  1.  用户系统接收MQTT服务器的通知消息

用户业务系统可以采用以上的MQTT/HTTP方式接入MQTT服务器,用以接收MQTT发送的通知消息,通知消息报告:客户账户登录、退出通知消息,握手请求、握手超时通知消息、终端设备订阅/退订通知消息、以及其他通知消息。

 

  1.  系统的开放性

1、MQTT服务器所有的管理接口都采用HTTP/XML的方式,客户都可调用。

   1)账户管理:增加、删除、修改、查询

   2) 查询账户计数器

   3)接口管理:增加、删除、修改

   4)订阅关系管理:增加、删除、修改、查询、匹配。

  1.  产品特点
  1. 支持大量终端接入MQTT服务器。
  2. 转发速度快,非常适合要求实时转发的应用系统。
  3. 容易部署、容易管理,可操作性强。
  4. 系统稳定,可用性强。
  5. 协议跟踪功能,易于终端账户接入调试。
  6. 全中文操作界面,适合中国技术人员使用特点。
  7. 支持海量订阅规则,但匹配性能不会下降很多。
  8. 完全兼容MQTT 3.X协议,并进行合理的扩展。
  9. 系统完全采用VC++开发,没采用任何第三方的插件、控件、SDK等,完全自主知识产权,技术和风险可控。

10、系统提供和客户业务系统对接的接口,方便MQTT服务器和客户业务系统进

行对接和集成。

11、系统对外提供HTTP/XML的管理接口,客户方便对系统进行功能调用。

  1.  性能指标
  1. 支持50万以上的账户接入。
  2. 每秒最大可转发10万~20万条消息。
  3. 系统支持加载的的订阅规则没有数量限制。
  4. 每个客户所能订阅的规则没有数量限制。

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

  1.  系统配置要求
  1. 支持window7及以上版本的64位操作系统
  2. 支持window 2008及以上版本的64位操作系统
  3. 硬件最低配置:内存4G,双核CPU、磁盘(d:)100G、百/千兆网卡

最后

以上就是温暖酒窝为你收集整理的高性能MQTT服务器(XMQ-标准版)发布的全部内容,希望文章能够帮你解决高性能MQTT服务器(XMQ-标准版)发布所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部