您的位置:

EMQ X Broker详解

一、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消息服务器,可以应用于各种物联网场景,并且具有广泛的可扩展性和可定制性。