EMQ百万级MQTT消息服务(介绍和搭建)

先上节了解完MQTT之后我们需要选择一个MQTT服务端,在MQTT官方推荐下找了找最后选择了使用EMQ来进行服务端实现,EMQ有什么优势可以在官方推荐的那么多的服务器实现中脱颖而出,本章就来和大家一起慢慢了解EMQ相关的特性

附上:

喵了个咪的博客:w-blog.cn EMQ官方地址:http://emqtt.com/ EMQ中文文档:http://emqtt.com/docs/v2/guide.html

1.EMQ

EMQ (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。Erlang/OTP 是出色的软实时(Soft-Realtime)、低延时(Low-Latency)、分布式(Distributed) 的语言平台。MQTT 是轻量的(Lightweight)、发布订阅模式(PubSub) 的物联网消息协议。

EMQ 项目设计目标是承载移动终端或物联网终端海量 MQTT 连接,并实现在海量物联网设备间快速低延时消息路由:

  • 稳定承载大规模的 MQTT 客户端连接,单服务器节点支持50万到100万连接。
  • 分布式节点集群,快速低延时的消息路由,单集群支持1000万规模的路由。
  • 消息服务器内扩展,支持定制多种认证方式、高效存储消息到后端数据库。
  • 完整物联网协议支持,MQTT、MQTT-SN、CoAP、WebSocket 或私有协议支持。

当笔者要选择一个服务端的时候考虑了如下几点:

  • 能够集群化来应对大量的设备
  • 能够进行精细的权限控制(MQTT不管是对于服务器和终端来说都是发布和订阅所以需要进行权限的限制不是所有人都能给设备发送消息)
  • 社区完善有团队持续支持
  • 有可视化dashboard管理能够对链接状态消费情况进行监控

2.安装EMQ

这里使用的是Centos.7.4版本(如果是其他系统可以去官方文档寻找对应的软件包)

> yum -y install unzip
> mkdir -p /app/install && cd /app/install
> wget http://emqtt.com/static/brokers/emqttd-centos7-v2.3.5.zip
> unzip emqttd-centos7-v2.3.5.zip && mv emqttd /usr/local

配置系统环境变量

> vim /etc/profile

# emqtt
export EMQPATH=/usr/local/emqttd
export PATH=$EMQPATH/bin:$PATH

> source /etc/profile

检查emq是否正常

> emqttd console
## 如下输出代表正常
starting emqttd on node '[email protected]'
emqttd ctl is starting...[ok]
emqttd hook is starting...[ok]
emqttd router is starting...[ok]
emqttd pubsub is starting...[ok]
emqttd stats is starting...[ok]
emqttd metrics is starting...[ok]
emqttd pooler is starting...[ok]
emqttd trace is starting...[ok]
emqttd client manager is starting...[ok]
emqttd session manager is starting...[ok]
emqttd session supervisor is starting...[ok]
emqttd wsclient supervisor is starting...[ok]
emqttd broker is starting...[ok]
emqttd alarm is starting...[ok]
emqttd mod supervisor is starting...[ok]
emqttd bridge supervisor is starting...[ok]
emqttd access control is starting...[ok]
emqttd system monitor is starting...[ok]
emqttd 2.3.5 is running now
Eshell V9.0  (abort with ^G)
([email protected])1> Load emq_mod_presence module successfully.
dashboard:http listen on 0.0.0.0:18083 with 4 acceptors.
mqtt:tcp listen on 127.0.0.1:11883 with 4 acceptors.
mqtt:tcp listen on 0.0.0.0:1883 with 64 acceptors.
mqtt:ws listen on 0.0.0.0:8083 with 4 acceptors.
mqtt:ssl listen on 0.0.0.0:8883 with 16 acceptors.
mqtt:wss listen on 0.0.0.0:8084 with 4 acceptors.
mqtt:api listen on 0.0.0.0:8080 with 4 acceptors.

启动EMQ服务

> emqttd start
emqttd 2.3.5 is started successfully!

> emqttd_ctl status
Node '[email protected]' is started
emqttd 2.3.5 is running

3.使用EMQ

当我们启动了EMQ之后就可以使用客户端进链接了,端口如下

  • 1883 MQTT 协议端口
  • 8883 MQTT/SSL 端口
  • 8083 MQTT/WebSocket 端口
  • 8080 HTTP API 端口
  • 18083 Dashboard 管理控制台端口

通过IP访问18083端口可以通过Dashboard在线观察EMQ的运行状态等参数

默认用户: admin,密码:public (可在平台中配置用户)

3 总结

走到这一步已经初步啃上了EMQ,但是如果要使用EMQ承载百万级别的用户连接还需要有一段路需要走,我们下一节再见

注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!

猜你喜欢

转载自my.oschina.net/wenzhenxi/blog/1793020