一、EMQ X Broker简介
EMQ X Broker是一个开源的分布式物联网(MQTT)消息服务器,它支持千万级别的并发客户端连接。EMQ X Broker是纯 Erlang/OTP 实现的,具有高度可伸缩性,并提供Webhooks、MQTT协议处理、WebSocket支持等多种功能。以下是EMQ X Broker的一些最重要的功能。
1.支持重连
MQTT客户端和服务器之间的连接可能会断开。EMQ X Broker支持MQTT客户端的自动重连。这使得EMQ X Broker得以在网络不稳定的环境下,通过自动重新连接的方式,确保消息发送和接收的可靠性。
2.支持QoS
EMQ X Broker支持MQTT的三种服务质量(QoS):至多一次(At most once)、至少一次(At least once)和刚好一次(Exactly once)。此外,EMQ X Broker还支持多会话,MQTT客户端可以拥有多个并发传输流,支持保留消息。
3.支持WebSocket
EMQ X Broker支持WebSocket,可以轻松地通过Web浏览器连接到EMQ X Broker。这使得在Web浏览器上实现即时通讯(IoT)应用程序成为可能。
二、EMQ X Broker安装和使用
1.安装EMQ X Broker
1.1 在Linux系统上安装EMQ X Broker
$ wget https://www.emqx.io/downloads/broker/v4.3.7/emqx-ubuntu20.04-v4.3.7.zip $ unzip emqx-ubuntu20.04-v4.3.7.zip && cd emqx $ ./bin/emqx start
1.2 在Docker上安装EMQ X Broker
$ docker run -d --name emqx -p 1883:1883 -p 8081:8081 emqx/emqx:latest
2.使用EMQ X Broker
2.1 使用EMQ X Dashboard管理EMQ X Broker
EMQ X Dashboard是EMQ X Broker的Web管理页面。可以通过以下URL访问:
http://localhost:18083
2.2 使用EMQ X Broker API
EMQ X Broker提供了REST API,通过以下方式可以调用API:
$ curl -X POST -d '{"action":"subscribe", "topic":"test"}' "http://localhost:8080/api/v4/mqtt" $ curl -X POST -d '{"action":"publish", "topic":"test", "payload":"hello world"}' "http://localhost:8080/api/v4/mqtt"
三、EMQ X Broker配置和扩展
1.EMQ X Broker配置
EMQ X Broker的配置文件在etc目录下。以下是一些常用配置参数的解释:
1.1 listeners.tcp.default 应用的默认TCP监听器配置
1.2 mqtt.message.max_size 消息最大大小
1.3 plugins.emqx_auth_username 基于用户名和密码的授权插件
2.EMQ X Broker扩展
EMQ X Broker提供了钩子机制,可以在消息传输前或传输后做一些处理。
-module(hook_publisher). -export([message_publish/3]). message_publish(ClientId, Message, Packet) -> io:format("Hooked message from ~p: ~p~n", [ClientId, Message]), ok.
将模块 hook_publisher 加载到 EMQ X Broker 中:
hooks.publisher = hook_publisher
四、EMQ X Broker高可用性
在分布式系统中,为了确保可靠性和高可用性,需要将EMQ X Broker配置为Master和Slave的方式运行。
以下是一些常用的EMQ X Broker高可用性配置参数:
1.EMQ X配置文件中添加HA配置
config.emqx.enterprise = true config.emqx.enterprise.mode = slave config.emqx.manager.enable = true config.emqx.manager.slave_api_port = 5362
2.EMQ X Broker启动
开始启动主服务器,使用以下命令启动:
. ./bin/emqx start
启动后,使用主服务器管理员的凭据登录至EMQ X Dashboard。
使用以下命令启动从服务器:
./bin/emqx_ctl start_slave
五、EMQ X Broker监控
EMQ X Broker提供了EMQ X Management插件,这个插件提供了一个RESTful管理接口,使得可以使用命令行或Web界面对EMQ X Broker进行监控和管理。
可以通过以下URL访问EMQ X Management插件的Web界面:
http://localhost:18083/api-docs/management.html
六、EMQ X Broker的性能测试
EMQ X Broker具有优秀的性能和可伸缩性,可以支持千万级别的并发客户端连接。
可以使用EMQ X Broker提供的MQTT Load Generator(mqtt-load)工具进行性能测试。
1.安装MQTT Load Generator(mqtt-load)工具
可以通过以下方式进行安装:
$ sudo apt-get install python3-pip $ sudo pip3 install mqtt-load
2.基本使用方法
以下是一些常用的MQTT Load Generator参数:
2.1 -h: MQTT Broker hostname
2.2 -t: MQTT topic name (default: mqtt-bench), -T: topic count
2.3 -u: MQTT username, -P: MQTT password
2.4 -c: MQTT client count, -n: message count per client
例如,使用以下命令运行性能测试:
$ mqtt-load -h localhost -p 1883 -t test -m publish -c 1000 -n 10000 -q 1 -F 10 --no-random --fix-payload
七、EMQ X Broker的应用场景
EMQ X Broker可以应用于各种物联网场景,包括:
1.智能家居:EMQ X Broker可以在智能家居环境中提供可靠的通信服务。
2.工业自动化:EMQ X Broker可以在工业自动化场景中支持实时监控和控制。
3.智能农业:EMQ X Broker可以在智能农业场景中提供可靠的数据传输服务。
4.智慧城市:EMQ X Broker可以在智慧城市场景中支持物联网设备的数据传输和处理。
结论
本文阐述了EMQ X Broker的功能、安装和使用、配置和扩展、高可用性、监控、性能测试以及应用场景。EMQ X Broker是一个稳定、可靠、高效的MQTT消息服务器,可以应用于各种物联网场景,并且具有广泛的可扩展性和可定制性。