最后更新:2022-06-26 23:39:30 手机定位技术交流文章
MQTT(Message Queuing Telemetry Transport,消息队列遥感传输协议),基于发布/订阅模式的轻量通信协议。该协议建立在TCP/IP协议上,它于199年由IBM发行。MQTT最大的优点是,具有最小代码和有限的带宽,为远程设备连接提供实时可靠消息服务。作为一种低成本、低宽带、即时消息协议,它在互联网、小型设备、移动应用等领域有着广泛的应用。
使用MQTT协议的应用程序或设备,并且总是与服务器连接。 用户可以:
MQTT服务器,称为“消息经纪人”,可以是一个应用程序或设备,它位于消息发布者和订阅者之间。它可以:
由于IoT环境非常特殊,MQTT遵循以下设计原则:
(一)无需增加功能的简化;
(二)提供/分发模式,便利传感器之间的消息传输,并分离客户端/服务器模式,其优点是无需事先知道另一个(ip/port)的存在,并不能同时运行;
(三)允许用户以零维成本动态创建主题(无需预创建);
(四)降低输送量至最低,提高输送效率;
(五)考虑低带宽、高延迟、不稳定的网络等因素;
(六)支持持续的对话维护和控制(心跳);
(七)了解客户计算能力可能很低;
(8)服务质量(quality of service level:QoS)管理
(9)不要强迫数据的类型和格式,但保持灵活性(即应用程序级业务数据)。
MQTT协议广泛应用于IoT、移动互联网、智能硬件、汽车网络、电力等领域。
实现MQTT协议需要完成客户端和服务器双方的通信,在通讯过程中,MQTT协议有三个身份:发布者、经纪人和订阅者。其中,消息的发布者和订阅者是客户端,消息代理是服务器,消息发布者可以同时成为订阅者。
MQTT传输信息分为两个部分:主题和载荷:
MQTT协议定义了一系列方法(也称为操作)来指示在定义资源上执行的操作。 该资源可以代表现有的数据或动态生成数据,取决于服务器的实现。 资源通常指的是服务器上的文件或输出。
MQTT协议规定服务质量,它保证在不同网络环境中传输消息的可靠性,QoS设计是MQTT协议的重点.作为一种专门为Internet of Things场景设计的协议,MQTT运行场景不仅仅是一个PC,更广泛的带宽网络和低功率设备,如果能在协议一级解决传输质量问题,它将为物体互联网应用的发展提供极大的便利。
MQTT设计了三个 QoS评级。
QoS0:多少次?消息发布完全依赖于基础的TCP/IP网络。消息将被丢失或重复。这个级别可以在下列情况下使用:环境传感器数据,丢掉一次阅读记录并不重要,因为很快就会有第二个。这种方法主要用于APP传送,如果您的智能设备在发送消息时没有连接,推送过去没收到,再次, 网络不再可用.
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EgEIe7u6-1656158766013)(images/4.png)]](http://static.wangsu123.cn/article/image/20220626/5ea7e9166297058f161fc34ba405877e.png)
QoS1:至少一次,确保消息到达,但可能出现消息的重复。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xs92blpA-1656158766014)(images/5.png)]](http://static.wangsu123.cn/article/image/20220626/4499379270c55d25f84233df0dc95f46.png)
QoS2“只一次”,确保消息到达一次。在一些更严格的充电系统中,可以使用此级别。在计费系统中,重复或丢失的消息可能导致错误的结果。该优质新闻发布服务也可用于转发即时通讯类应用,确保用户只接收一次.
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JOKZMyPW-1656158766014)(images/6.png)]](http://static.wangsu123.cn/article/image/20220626/9b39787d3ea4a9c4723a373f234d876c.png)
MQTT QoS在发布和订阅操作中具有不同的含义,发布 QoS表示消息发送到服务端时使用的 QoS,订阅 QoS表示服务端发送消息给自己时使用的最大 QoS。
下面的表显示了客户在不同情况下接收到的消息的质量:
| 发布消息的 QoS | 主题订阅的 QoS | 接收消息的 QoS |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 0 | 2 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
| 1 | 2 | 1 |
| 2 | 0 | 0 |
| 2 | 1 | 1 |
| 2 | 2 | 2 |
层级分隔符:/
/是用来分开主题树的每个层,并为主题空间提供层次结构。 当主题中出现两个匹配时,使用主题层次分离器是很重要的。
多层通配符:#
多层坐标有可以超过0的层。 因此,爱/#也可以与一个单一的爱相匹配,其中#代表0的层。
多层匹配必须是主题树中的最后一个字符。
单层通配符:+
只匹配主题的一层。
注意事项
EMQ X是开放源代码社区中最受欢迎的MQTT消息服务器。
EMQ网站: https://ww.emq.orgEmqx.cn/
EMQ X提供三个主要版本:开放源代码、企业和平台。每个产品可以在网站的主页产品导航中查看,主要反映了支持的连接数目、产品功能和商业服务的差异。
为什么选择EMQ X?
从支持MQTT5.考虑0,稳定性,扩展,集群能力等,EMQX的性能应该是最好的。
EMQ X是一个开源的百万级分布式MQTT消息经纪人。支持各种类型的标准MQTT协议的设备,从设备到服务器执行消息传输,以及从服务器到设备发送设备控制信息。从而实现IoT设备的数据采集,以及设备的操作和控制。
与其他MQTT服务器相比,EMQ X具有下列主要功能:
经过100+版本的迭代后,EMQ X已成为开放源代码社区中最受欢迎的MQTT消息中间体,并在客户严格的生产环境中进行了严格的测试;
EMQ X支持丰富的Internet of Things协议,包括MQTT、MQTT-SN、CoAP、LwM2M、LoRaWAN和WebSocket;
优化的架构设计支持大规模设备连接。企业版本的单机可以支持数百万的MQTT连接;集群可以支持数百万的MQTT连接;
易于安装和使用;
灵活的可扩展性,支持一些企业定制的场景;
中国本地技术支援服务,通过维博、QQ及其他网上渠道迅速响应客户的需求;
基于Apache 2.0许可证,完全开放源代码。EMQ X的代码存储在Github,用户可以查看所有源代码。
EMQ X 3.0支持MQTT 5.0协议,是第一个支持5.0协议规范消息服务器的开放源代码社区,它完全符合MQTT V3.1和V3.1.1协议。除了 MQTT协议之外,EMQ X 也支持其他事物互联网协议
单元支持数百万连接,集群支持数百万连接;信息传输的毫秒。EMQ X使用多种技术实现上述功能。
扩展模块和插件,EMQ X提供灵活的扩展机制,实现私人协议、认证认证、数据持久性、桥梁传输和管理控制面板扩展
接口:EMQ X可以与其他消息系统通信,例如EMQ X的Enterprise版本支持向Kafka、RabbitMQ或其他EMQ节点传输消息
共享订阅:共享订阅通过负载平衡来支持多个订阅者之间分发MQTT消息。例如,数据采集场景,如物体网络,更多的设备将发送数据,通过共享订阅,您可以在订阅端设置多个订阅者来实现这些多个订阅者之间的工作负荷平衡
安装有很多不同的方法,并且有一个自由的选择:
壳牌脚本安装,包管理器安装,二进制包安装,ZIP压缩包安装,Homebrew安装,运行和安装多克,帮助安装,源编译安装
运行和安装多克
在EMQ X Broker下载页面上直接提供基于多cker的安装说明
1:首先拍摄emqx的图像
多克容器使用多克命令运行
EMQX经纪人提供一个 dashboard,以方便用户管理设备和监控相关指标。在启动后,我们会在服务端口进入18083端口
进入桌面查看启动效果!
输入用户名 admin, 密码公开, 并输入管理接口
通过不同的安装方法获得的EMQ X目录结构将不同,具体如下:
| 描述 | 与ZIP压缩包安装(与多克) | 使用二进制包安装 |
|---|---|---|
| 可执行文件目录 | ./bin | /usr/lib/emqx/bin |
| 数据文件 | ./data | /var/lib/emqx/data |
| Erlang虚拟机文件 | ./erts-* | /usr/lib/emqx/erts-* |
| 配置文件目录 | ./etc | /etc/emqx |
| 依赖项目录 | ./lib | /usr/lib/emqx/lib |
| 日志文件 | ./log | /var/log/emqx |
| 启动相关脚本和架构文件 | ./releases | /usr/lib/emqx/releases |
在上面的目录中,用户经常联系和使用bin、etc、data、log目录。
bin 目录
emqx、emqx.cmd:EMQ X可执行文件
emqx_ctl、emqx_ctl.cmd:管理命令的EMQ X可执行文件
etc 目录
EMQ X 通过etc在目录下配置文件,主要配置文件包括:
| 配置文件 | 说明 |
|---|---|
| emqx.conf | EMQ X配置文件 |
| acl.conf | EMQ X默认ACL规则配置文件 |
| plugins/*.conf | EMQ X插件配置文件 |
| certs/* | EMQ X SSL证书文件 |
| emqx.lic | EMQ X Enterprise限定的许可证文件 |
data 目录
EMQ X将存储运行数据在data该目录的主要文件如下:
configs/app. .config
EMQ X 读取etc/emqx.conf和etc/plugins/*.conf在安装配置后,转换为Erlang原始配置文件格式,并在运行时读取配置。
loaded_plugins
loaded_plugins该文件记录了EMQ X默认启动插件的列表,可以修改以添加或删除默认启动插件。
mnesia
Mnesia数据库是一个分布式数据库系统,可以直接存储各种数据结构。
EMQ X使用Mnesia数据库存储自己的运行数据,如警报日志、规则引擎创建的资源和规则、Dashbaord用户信息等。mnesia因此,在目录下,一旦目录被删除,EMQ X将失去所有业务数据。
本文由 在线网速测试 整理编辑,转载请注明出处。