物联网亿万级通信一站式解决方案EMQ

      最后更新:2022-06-26 23:39:30 手机定位技术交流文章

      物体网络(IoT)百万级通信的单站解决方案 EMQ

      • 1. MQTT
        • 1.1 MQTT的介绍
          • 1.1.什么是MQTT
          • 1.1.2设计原则
          • 1.1.3 应用
        • 1.2与MQTT协议有关的概念
          • 1.2.1 MQTT协议的实施方法
          • 1.2.2 MQTT协议中的方法
        • 1.3消息服务质量质素 QoS
          • 1.3.1消息服务质素 QoS三个层次
          • 1.3.2发布和订阅 QoS
        • 1.4字符串匹配的主题匹配规则
      • 2. EMQX
        • 2.1 EMQ X 简介
        • 2.2环境建设与配置
          • 2.2.1 安装
          • 2.2.2目录结构

      1. MQTT

      1.1 MQTT的介绍

      1.1.什么是MQTT

      MQTT(Message Queuing Telemetry Transport,消息队列遥感传输协议),基于发布/订阅模式的轻量通信协议。该协议建立在TCP/IP协议上,它于199年由IBM发行。MQTT最大的优点是,具有最小代码和有限的带宽,为远程设备连接提供实时可靠消息服务。作为一种低成本、低宽带、即时消息协议,它在互联网、小型设备、移动应用等领域有着广泛的应用。

      在这里插入图片描述
      使用MQTT协议的应用程序或设备,并且总是与服务器连接。 用户可以:

      • (一)公布其他客户可订阅的资料;
      • (二)订阅其他客户发行;
      • (三)递交或删除申请的讯息;
      • (四)从服务器中切断。

      MQTT服务器,称为“消息经纪人”,可以是一个应用程序或设备,它位于消息发布者和订阅者之间。它可以:

      • (一)接受客户网络连接;
      • (二)接受客户公布的申请资料;
      • (三)处理客户订阅和撤销的请求;
      • (四)向订阅者发送应用程序消息。

      1.1.2设计原则

      由于IoT环境非常特殊,MQTT遵循以下设计原则:

      • (一)无需增加功能的简化;

      • (二)提供/分发模式,便利传感器之间的消息传输,并分离客户端/服务器模式,其优点是无需事先知道另一个(ip/port)的存在,并不能同时运行;

      • (三)允许用户以零维成本动态创建主题(无需预创建);

      • (四)降低输送量至最低,提高输送效率;

      • (五)考虑低带宽、高延迟、不稳定的网络等因素;

      • (六)支持持续的对话维护和控制(心跳);

      • (七)了解客户计算能力可能很低;

      • (8)服务质量(quality of service level:QoS)管理

      • (9)不要强迫数据的类型和格式,但保持灵活性(即应用程序级业务数据)。

      1.1.3 应用

      MQTT协议广泛应用于IoT、移动互联网、智能硬件、汽车网络、电力等领域。

      • 物體網路 M2M通訊,物體網路大數據收集
      • Android消息传送网络消息传送
      • 移动即时消息,如Facebook Messenger
      • 智能硬件、智能家庭和智能电器
      • 网络通信、电车站堆集
      • 智能城市、远程医学、远程教育
      • 电力、石油和能源市场

      1.2与MQTT协议有关的概念

      1.2.1 MQTT协议的实施方法

      实现MQTT协议需要完成客户端和服务器双方的通信,在通讯过程中,MQTT协议有三个身份:发布者、经纪人和订阅者。其中,消息的发布者和订阅者是客户端,消息代理是服务器,消息发布者可以同时成为订阅者。

      MQTT传输信息分为两个部分:主题和载荷:

      • (一)主题,可以理解为用户在主题消息内容(收费)之后收到的邮件类型;
      • (二)支付载荷,可以理解为消息内容,是指订阅者特别想使用的内容。

      1.2.2 MQTT协议中的方法

      MQTT协议定义了一系列方法(也称为操作)来指示在定义资源上执行的操作。 该资源可以代表现有的数据或动态生成数据,取决于服务器的实现。 资源通常指的是服务器上的文件或输出。

      • (1)连接:客户端连接到服务器
      • CONNACK:连接确认
      • (三)发布:公告
      • (4)PUBACK:发布确认
      • (五)PUBREC:获发消息
      • (六)PUBREL:发布消息已经发布
      • (7)PUBCOMP:发布完成
      • (8)SUBSCRIBE:订阅请求
      • (9)SUBACK:订阅确认
      • (十)联储:退会
      • (11)UNSUBACK:退会订阅确认书
      • (12)PINGREQ:客户发送心跳
      • (13)PINGRESP:服务端心跳响应
      • (14)折扣:切断连接
      • (15)AUTH:身份验证

      1.3消息服务质量质素 QoS

      MQTT协议规定服务质量,它保证在不同网络环境中传输消息的可靠性,QoS设计是MQTT协议的重点.作为一种专门为Internet of Things场景设计的协议,MQTT运行场景不仅仅是一个PC,更广泛的带宽网络和低功率设备,如果能在协议一级解决传输质量问题,它将为物体互联网应用的发展提供极大的便利。

      1.3.1消息服务质素 QoS三个层次

      MQTT设计了三个 QoS评级。

      • QoS 0: 消息最多被发送一次,如果客户端不使用,则消息丢失。
      • QoS1:消息至少被发送一次。
      • QoS2:消息只发送一次。

      QoS0:多少次?消息发布完全依赖于基础的TCP/IP网络。消息将被丢失或重复。这个级别可以在下列情况下使用:环境传感器数据,丢掉一次阅读记录并不重要,因为很快就会有第二个。这种方法主要用于APP传送,如果您的智能设备在发送消息时没有连接,推送过去没收到,再次, 网络不再可用.

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EgEIe7u6-1656158766013)(images/4.png)]

      QoS1:至少一次,确保消息到达,但可能出现消息的重复。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xs92blpA-1656158766014)(images/5.png)]

      QoS2“只一次”,确保消息到达一次。在一些更严格的充电系统中,可以使用此级别。在计费系统中,重复或丢失的消息可能导致错误的结果。该优质新闻发布服务也可用于转发即时通讯类应用,确保用户只接收一次.

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JOKZMyPW-1656158766014)(images/6.png)]

      1.3.2发布和订阅 QoS

      MQTT QoS在发布和订阅操作中具有不同的含义,发布 QoS表示消息发送到服务端时使用的 QoS,订阅 QoS表示服务端发送消息给自己时使用的最大 QoS。

      • 当问题 QoS 的客户端 A 比订阅 QoS 的客户端 B 更大时,服务端发送消息时使用的 QoS 是订阅 QoS 的客户端 B 。
      • 当客户A的 QoS问题小于客户B的订阅 QoS问题时,服务结束时发送消息给客户B时使用的 QoS问题是客户A的 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

      1.4字符串匹配的主题匹配规则

      层级分隔符:/

      /是用来分开主题树的每个层,并为主题空间提供层次结构。 当主题中出现两个匹配时,使用主题层次分离器是很重要的。

      多层通配符:#

      多层坐标有可以超过0的层。 因此,爱/#也可以与一个单一的爱相匹配,其中#代表0的层。

      多层匹配必须是主题树中的最后一个字符。

      单层通配符:+

      只匹配主题的一层。

      注意事项

      2. EMQX

      2.1 EMQ X 简介

      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使用多种技术实现上述功能。

        • 使用Erlang/OTP平台实现实时、高耦合、误差容忍(长期在电信中测试过的语言)
        • 全异步架构
        • 连接 、 对话 、 路由 、 集群的单独设计
        • 消息机和控制机的分离等.
      • 扩展模块和插件,EMQ X提供灵活的扩展机制,实现私人协议、认证认证、数据持久性、桥梁传输和管理控制面板扩展

      • 接口:EMQ X可以与其他消息系统通信,例如EMQ X的Enterprise版本支持向Kafka、RabbitMQ或其他EMQ节点传输消息

      • 共享订阅:共享订阅通过负载平衡来支持多个订阅者之间分发MQTT消息。例如,数据采集场景,如物体网络,更多的设备将发送数据,通过共享订阅,您可以在订阅端设置多个订阅者来实现这些多个订阅者之间的工作负荷平衡

      2.2环境建设与配置

      2.2.1 安装

      安装有很多不同的方法,并且有一个自由的选择:

      壳牌脚本安装,包管理器安装,二进制包安装,ZIP压缩包安装,Homebrew安装,运行和安装多克,帮助安装,源编译安装

      运行和安装多克

      在EMQ X Broker下载页面上直接提供基于多cker的安装说明

      1:首先拍摄emqx的图像

      多克容器使用多克命令运行

      EMQX经纪人提供一个 dashboard,以方便用户管理设备和监控相关指标。在启动后,我们会在服务端口进入18083端口

      进入桌面查看启动效果!
      在这里插入图片描述
      输入用户名 admin, 密码公开, 并输入管理接口

      2.2.2目录结构

      通过不同的安装方法获得的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

      在上面的目录中,用户经常联系和使用binetcdatalog目录。

      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.confetc/plugins/*.conf在安装配置后,转换为Erlang原始配置文件格式,并在运行时读取配置。

      loaded_plugins

      loaded_plugins该文件记录了EMQ X默认启动插件的列表,可以修改以添加或删除默认启动插件。

      mnesia

      Mnesia数据库是一个分布式数据库系统,可以直接存储各种数据结构。

      EMQ X使用Mnesia数据库存储自己的运行数据,如警报日志、规则引擎创建的资源和规则、Dashbaord用户信息等。mnesia因此,在目录下,一旦目录被删除,EMQ X将失去所有业务数据。
      在这里插入图片描述

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/28572.html

          热门文章

          文章分类