MQTT服务器介绍
MQTT 发布订阅模式简述
MQTT 是基于发布(Publish)/订阅(Subscribe)模式来进⾏通信及数据交换的,与 HTTP 的请求(Request)/应答(Response)的模式有本质的不同。
订阅者(Subscriber)会向消息服务器(Broker)订阅⼀个主题(Topic)。成功订阅后,消息服务器会将该主题下的消息转发给所有的订阅者。
主题(Topic)以 ‘/’ 为分隔符区分不同的层级。包含通配符 ‘+’ 或 ‘#’ 的主题⼜称为主题过滤器(Topic Filters),不含通配符的称为主题名(Topic Names)。例如:
sensor/1/temperature
sensor/1/#
sensor/+/temperature
MQTT Broker 简介
MQTT Broker 定义及其作⽤
MQTT Broker 也称为 MQTT 消息服务器,它可以是运⾏了 MQTT 消息服务器软件的⼀台服务器或⼀个服务器集。MQTT Broker 负责接收来⾃客户端的⽹络连接,并处理客户端的订阅/取消订阅(Subscribe/Unsubscribe)、消息发布(Publish)请求,同时也会将客户端发布的消息转发给其他订阅者。
MQTT Broker ⼴泛应⽤于:电⼒、新能源、智慧城市、智能家居、智能抄表、车联⽹、⾦融与⽀付、运营商等⾏业。
常见开源 MQTT Broker
- EMQ X 基于 Erlang/OTP 平台开发,是开源社区中最流⾏的 MQTT 消息服务器。除了 MQTT 协议之外,EMQ X 还⽀持 MQTT-SN、CoAP、LwM2M、STOMP 等协议。
⽬前,EMQ X 在全球市场已有 5000+ 企业⽤户,20+ 世界五百强合作伙伴。
- Mosquitto 是开源时间较早的 MQTT Broker,它包含了⼀个C/C ++的客户端库,以及⽤于发布和订阅的mosquitto_pub、mosquitto_sub命令⾏客户端。Mosquitto ⽐较轻量,适合在从低功耗单板计算机到完整服务器的所有设备上使⽤。
- VerneMQ 基于 Erlang/OTP 平台开发,是⾼性能的分布式 MQTT 消息代理。它可以在硬件上⽔平和垂直扩展,以⽀持⼤量并发客户端,同时保持较低的延迟和容错能⼒。
- HiveMQ CE 是基于 Java 的开源 MQTT 消息服务器,它完全⽀持 MQTT 3.x 和 MQTT 5,是 HiveMQ 企业版消息连接平台的基础。
MQTT Broker 实现的主要功能
协议接⼊
完整的 MQTT V3.1/V3.1.1 及 V5.0 协议规范⽀持;
MQTT-SN 、CoAP、lwM2M 等物联⽹协议接⼊⽀持。
集部署
多服务器节点集,且⽀持节点的⾃动发现。相对于单服务器,集能通过多台服务器之间的协作带来以下优势:
⾼可⽤性。单台或少量的服务器故障并不会导致整个消息服务中断,其余的正常⼯作的节点可以继续提供服务;
负载均衡。通过负载均衡机制,集可以把负载平均的分布在各个节点;
更⾼的整体性能。相⽐单机部署,多节点的集能够成倍的提升整个系统的连接和消息处理能⼒;
可扩展性。可以通过在集中添加新节点的⽅式来完成扩容⽽⽆需停机。
接⼊安全
SSL、WSS 加密连接,及单/双向安全认证⽀持;
客户端 ID、IP 地址、⽤户名密码、LDAP 及浏览器 Cookie 认证⽀持;
基于客户端 ID、IP 地址、⽤户名的访问控制(ACL);
消息速率、连接速率限制。
数据持久化
emqx broker
数据持久化的主要使⽤场景包括将客户端上下线状态,订阅主题信息,消息内容,消息抵达后发送消息回执等操作记录到 Redis、MySQL、PostgreSQL、MongoDB、Cassandra 等各种数据库中。
其他功能
HTTP 消息发布接⼝⽀持,使上层应⽤能更⽅便的通过 REST API 给设备发送消息;
MQTT Broker 桥接,⽀持不同 MQTT Broker 或不同集之间的消息桥接。桥接可以很⽅便的将消息桥接到云服务、流式服务、或其他 MQTT 消息服务器。桥接可以完成⼀些单纯使⽤集⽆法实现的功能:跨 VPC 部署、⽀持异构节点、提⾼单个应⽤的服务上限;
⽀持共享订阅。共享订阅是⼀种机制,允许将订阅组的消息分发均匀地分发给订阅组成员。在共享订
阅中,订阅同⼀主题的客户机依次接收此主题下的消息。同⼀消息不会发送给多个订阅客户端,从⽽实现多个订阅客户端之间的负载均衡;
规则引擎⽀持,⽤于配置消息流与设备事件的处理、响应规则。规则描述了数据从哪⾥来、如何筛选并处理数据、处理结果到哪⾥去三个配置,即⼀条可⽤的规则包含三个要素:触发事件(满⾜某个条件时触发)、处理规则(从上下⽂信息中过滤和处理数据)、响应动作(如持久化到数据库、重新发布处理后的消息、转发消息到消息队列等)。
MQTT Broker 的使⽤
为了⽅便测试,我们使⽤提供的线上版 Broker,该 Broker 版本包含了 EMQ X Enterprise 的所有功能。
Broker 地址: qx.io
Broker 端⼝: 1883、8883(SSL)、8083(Websocket)、8084(WSS)
连接客户端我们使⽤ EMQ 提供的线上版 Websocket ⼯具:。
MQTT Broker 的连接
使⽤浏览器打开地址,点击左下⾓的 New Connection 按钮,并在右侧框⾥填写链接信息,填写好必填字段后点击 Connect 按钮创建链接并连接⾄ Broker。
消息发布
连接成功后,点击右下⾓的 Write a message 弹出消息发布框,填写好 Topic 及 Payload 后点击发送图标即可发布消息。
主题订阅
订阅普通主题
在中间的 Subscriptions 模块⾥,订阅 hello 主题。此时给 hello 主题发送消息的话,消息列表⾥会收到该消息(左侧为接收到的消息)。
订阅通配符主题
订阅通配符主题 testtopic/#,并给 testtopic/1 主题发送消息,此时消息列表⾥会接收到该消息。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。