一、产品概览
EMQX 是一款大规模可弹性伸缩的云原生分布式物联网(IoT) 消息传递系统,专为大规模物联网应用而设计。
作为全球最具扩展性的 MQTT 消息服务器,EMQX 提供了高效可靠海量物联网设备连接,能够高性能实时移动与处理消息和事件流数据,帮助您快速构建关键业务的物联网平台与应用。
1、产品优势
- 开放源码:基于 Apache 2.0 许可证完全开源,自 2013 年起 200+ 开源版本迭代。
- MQTT 5.0:100% 支持 MQTT 5.0 和 3.x 协议标准,更好的伸缩性、安全性和可靠性。
- 海量连接:单节点支持 500 万 MQTT 设备连接,集群可扩展至 1 亿并发 MQTT 连接。
- 高性能:单节点支持每秒实时接收、移动、处理与分发数百万条的 MQTT 消息。
- 低时延:基于 Erlang/OTP 软实时的运行时系统设计,消息分发与投递时延低于 1 毫秒。
- 高可用:采用 Masterless 的大规模分布式集群架构,实现系统高可用和水平扩展。
2、功能概览
2.1:连接
- 完整支持 MQTT v3.1、v3.1.1 和 v5.0 协议规范
- QoS 0、QoS 1、QoS 2 消息支持
- 持久会话和离线消息支
原文链接:https://www.dqzboy.com 持 - 保留消息(Retained Message)支持
- 遗嘱消息(Will Message)支持
- 共享订阅支持
$SYS/
系统主题支持
- MQTT 支持 4 种传输协议
- TCP
- TLS
- WebSocket
- QUIC(实验性)
- HTTP 消息发布接口
- 网关
- CoAP
- LwM2M
- MQTT-SN
- Stomp
- GB/T 32960(企业版)
- JT/T 808(企业版)
更多 MQTT 扩展支持:
- 延迟发布
- 代理订阅
- 主题重写
2.2:安全
- 基于用户名/密码的身份认证,支持使用内置数据库、Redis、MySQL、PostgreSQL、MongoDB 作为数据源,也支持使用 HTTP Server 提供认证服务
- 基于 JWT 的身份认证与权限控制,支持 JWKs
- MQTT 5.0 增强认证
- PSK 身份验证
- 基于 Client ID、IP 地址,用户名的访问控制,支持使用内置数据库、Redis、MySQL、PostgreSQL、MongoDB 作为数据源,也支持使用 HTTP Server 提供授权服务
- 客户端黑名单支持
2.3:可伸缩性
- 多节点集群 (Cluster)
- 支持手动、mcast、dns、etcd、k8s 集群发现方式集群
- 多服务器节点桥接 (Bridge)
2.4:数据集成
- SQL 语法数据集成,实时提取、过滤、丰富和转换 MQTT 消息或内部事件为用户所需格式,并将其发送到外部数据平台
- 通过 MQTT 与其他 Broker 或物联网平台进行双向数据桥接(如 EMQX Cloud,AWS IoT Core,Azure IoT Hub)
- 通过 Webhook 与其他应用集成
2.5:可靠性
- 过载保护
- 消息速率限制
- 连接速率限制
2.5:可观测性
- 客户端在线状态查询
- 集群状态与指标查询
- Prometheus/StatsD 集成
- 自动网络分区恢复
- 在线日志追踪(
Log Trace
) - Erlang 运行时追踪工具
2.5:可扩展性
- 插件
- 钩子
- gRPC 钩子扩展
- gRPC 协议扩展
二、集群部署
1、集群介绍
- EMQX 由
Erlang/OTP
驱动,是高度可扩展的分布式平台。
1.1:Erlang/OTP
Erlang/OTP 最初是一个由爱立信为电信设备开发而设计的编程语言平台。
电信设备(路由器、接入网关)通常是一个分布式的系统,通过背板连接主控制板和多个业务板。
1.2:分布式Erlang
Erlang/OTP 平台的分布式程序是由分布,互联的 Erlang 运行时系统组成。 每个 Erlang 运行时系统被称为一个节点。 节点通过 TCP 相互连接,形成一个网络(或在此背景下的一个集群)。
Erlang 节点由一个唯一的节点名称来识别,该名称由两部分组成 用 @
分隔。
1.3:EMQX 分布式集群设计
- EMQX 分布的基本功能是转发和发布消息到订阅者,如下图所示。
2、集群规划
节点名称(主机名) | 节点IP | 节点用途 |
emqx-lb | 192.168.66.100 | mqx集群负载,统一入口;LB使用NginxE |
emqx-cluster01 | 192.168.66.21 | Emqx集群节点 |
emqx-cluster02 | 192.168.66.22 | Emqx集群节点 |
3、安装部署
3.1:下载解压
#emqx集群所有节点执行
mkdir -p /opt/soft
cd /opt/soft/
wget https://www.emqx.com/zh/downloads/broker/5.0.8/emqx-5.0.8-el7-amd64.rpm
#安装部署
yum install emqx-5.0.8-el7-amd64.rpm
3.2:修改配置
- 一个节点名由两部分组成,节点部分和主机部分,用
@
分隔 - 注意:配置里节点名格式为
Name@Host
,Host 必须是 IP 地址或 FQDN (主机名。域名)
[root@emqx-cluster01 soft]# vim /etc/emqx/emqx.conf
3.3:启动服务
#RPM包安装的服务会自动生成systemd服务配置,直接通过systemd服务管理启动
systemctl start emqx.service
systemctl status emqx.service
#加入开机自启
systemctl enable emqx.service
3.4:加
- 集群节点2,执行下面的命令加入到emqx集群
[root@emqx-cluster02 ~]# emqx_ctl cluster join [email protected]
[root@emqx-cluster02 ~]# emqx_ctl cluster status
3.5:访问面板
- 输入节点IP加18083端口进行访问
- User:admin
- Passwd:public
- 修改默认
admin
用户密码
- 检查集群状态
如果本文对您有所帮助,请点赞并留言支持,这将是对我们最大的鼓励和肯定!感谢您的阅读。
感谢分享,学习了