内容简介:EMQ X 3.0-beta.1 版本发布,版本别名: The Promise of Tomorrow。兼容 MQTT-3.1.1 协议的同时, 完整支持 MQTT-5.0 协议。此外还增加了很多实用的功能特性,重构了核心组件,提升了系统的伸缩性和扩展能力。EMQ X 3.0 版本实现了大多数的 MQTT-5.0 特性,主要的 MQTT-5.0 新特性一览:MQTT-5.0 里新增加了一个 AUTH 类型的报文,用来实现相对复杂的认证交互流程。
EMQ X 3.0-beta.1 版本发布,版本别名: The Promise of Tomorrow。兼容 MQTT-3.1.1 协议的同时, 完整支持 MQTT-5.0 协议。此外还增加了很多实用的功能特性,重构了核心组件,提升了系统的伸缩性和扩展能力。
全面支持 MQTT-5.0
EMQ X 3.0 版本实现了大多数的 MQTT-5.0 特性,主要的 MQTT-5.0 新特性一览:
-
增加了新的 MQTT 控制报文类型: AUTH
MQTT-5.0 里新增加了一个 AUTH 类型的报文,用来实现相对复杂的认证交互流程。
-
Session 过期机制
之前版本的 "Clean session flag" 现在拆分成了两个字段: "Clean Start Flag","Session Expiry Interval"。
-
Message 过期机制
MQTT-5.0 里,在发布消息时允许设置一个消息过期时间。
-
所有的 ACK 都可携带 Reason Code
MQTT-5.0 里,所有的回复报文都包含 Reason Code 字段。现在终端可以知道一个请求失败的原因了。
-
所有的 ACK 都可携带 Reason String
除了 Reason Code 之外,所有的回复报文都可包含一个 Reason String。
-
Server 端主动断开
MQTT-5.0 里,Server 端可以主动断开一个连接了。
-
Payload format and content type
MQTT-5.0 里发消息的时候,可以指定 Payload 类型和一个 MIME 风格的 content type。
-
Request/Response 模式
增加了几个 property,来规范使用 MQTT 协议做 Request/Response 模式的交互。
-
共享订阅
EMQ X 2.x 支持单节点的共享订阅。 现在 EMQ X 3.0 支持了整个集群范围内的共享订阅。
-
订阅 ID
有了这个订阅 ID,终端可以获知某条消息是由哪个订阅来的。
-
Topic 别名
Topic 现在可以有一个整型的别名,这可以降低 MQTT 由于长 Topic 导致的网络交互损耗。
-
用户自定义的 User properties
MQTT-5.0 里,多数报文都可以携带 User properties。
-
报文大小限制
EMQ X 2.x 里可以配置 Broker 端的最大报文限制,过大的报文会被丢弃,然后 Broker 会将连接断开。MQTT-5.0 里,通过 CONNECT/CONNECT ACK 报文,客户端和 Broker 端都可以指定最大报文限制。
-
可选的 Server 端能力通知 (TODO)
Broker 端可以定义不支持的特性,并将其通知给终端。
-
订阅选项
MQTT-5.0 提供了一些订阅选项,主要是为了桥接的应用。 比如 nolocal,和 retained 消息处理相关的选项。
-
Will delay
MQTT-5.0 允许指定一个时延,定义从连接断开到遗嘱消息被发送出去之前的延时。这样可以避免在短暂的网络断开和波动时发出遗嘱消息。
-
Broker 端的保活设置
MQTT-5.0 里,Broker 端可以指定一个期望终端使用的保活时间。
-
Assigned ClientID
MQTT-5.0 里,如果 ClientID 是 Broker 分配的,服务端需要返回这个 ClientID 给终端。
-
Server reference
MQTT-5.0 里,Broker 可以指定一个另外一个 Broker 让终端使用。可以用来做连接重定向。
集群架构演进
EQM X 3.0 引入了伸缩性较强的 RPC 机制,分离集群控制通道与 MQTT 数据转发通道。
引入 Ekka 以实现集群的自动建立和自动恢复。目前支持以下几种集群建立方式:
-
manual: 手动加入集群;
-
static: 使用预置的节点列表自动组建集群;
-
mcast: 使用广播自动建立集群;
-
dns: 使用 DNS A 记录自动建立集群;
-
etcd: 使用 etcd 自动建立集群;
-
k8s: 使用 k8s 自动建立集群。
消息速率限制
3.0 引入了消息速率限制,以增加 Broker 的可靠性。在 MQTT TCP 或 SSL 监听器配置里,可以配置:
-
并发连接数量: max_connections
-
连接速率限制: max_conn_rate
-
连接流量限制: rate_limit
-
发布速率限制: max_publish_rate
改进与问题修复
-
升级 esockd 库;
-
改用 cowboy 以提升 HTTP 连接的性能;
-
重构了 ACL 缓存机制;
-
增加本地和远程 MQTT 桥接功能;
-
配置文件引入 "zone" 的概念,不同的 "zone" 可以使用不同的配置;
-
重构了 session 模块,减少了节点间的内存拷贝,提升了节点间通信效率;
-
改进了 OpenLDAP 的 Access Control;
-
增加了延时发布功能;
-
增加了支持 Prometheus 的新的监控和统计功能;
-
改进了 Hook 机制。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Programming Python
Mark Lutz / O'Reilly Media / 2006-8-30 / USD 59.99
Already the industry standard for Python users, "Programming Python" from O'Reilly just got even better. This third edition has been updated to reflect current best practices and the abundance of chan......一起来看看 《Programming Python》 这本书的介绍吧!