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 'emq@127.0.0.1'
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)
(emq@127.0.0.1)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 'emq@127.0.0.1' 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承载百万级别的用户连接还需要有一段路需要走,我们下一节再见

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据之美

浅谈用户行为分析之用户身份识别:cookie 知多少?

对于数据统计分析或者数据挖掘而言,用户是个非常重要的维度,也是统计分析能落地的基础。一般而言,咱们追踪或者识别一个用户的首选方案是 userID,大多数公司的产...

1.2K6
来自专栏IT笔记

SpringBoot开发案例从0到1构建分布式秒杀系统

最近,被推送了不少秒杀架构的文章,忙里偷闲自己也总结了一下互联网平台秒杀架构设计,当然也借鉴了不少同学的思路。俗话说,脱离案例讲架构都是耍流氓,最终使用Spri...

65812
来自专栏码匠的流水账

2017年终总结

又到了写年终总结的时候了。每当这个时候思绪总是翻江倒海,因为太久没有反思和总结的缘故,一年才总结一次,确实是有点久,欠的账的太多,梳理起来有点费劲。这里依旧还是...

2681
来自专栏社区的朋友们

Amazon Aurora 深度探索(一)

本文对 Aurora 系统的实现从整体架构、存储、事务处理三个方面进行深入探讨,基于其论文和相关资料讨论具体实现细节,又跳出其外、从数据库内核技术实现的角度对 ...

2.2K2
来自专栏伪君子的梦呓

小白教程--快速安装Python 3.X

简要介绍 C语言是TIOBE指数中2017年最快的上升者,因此被宣布为年度编程语言。C语言在2017年增长了1.69%。一般说来,这还不足以成为今年的语言,但是...

3467
来自专栏个人分享

一次极限项目管理,设计,开发,联调与测试

     什么是All In? 是你不知道全力做这件事情会得到什么。但你只想把它做好的感觉。

1411
来自专栏SDNLAB

Unikernel初体验

引言: 2016年1月21日,应用容器引擎 Docker 宣布收购了英国的 unikernel 实现初创企业 Unikernel System,但具体交易金额并...

4396
来自专栏IT笔记

SpringBoot开发案例从0到1构建分布式秒杀系统

2596
来自专栏SDNLAB

数据中心网络虚拟化 主流平台产品介绍

为了对数据中心网络虚拟化有个初步的认识,本文将对当前比较主流的几款商业平台进行介绍,包括VMware公司的网络虚拟化技术,IBM公司的Dove及开源的OpenD...

3605
来自专栏企鹅号快讯

小程序的新功能你知道吗

“为了帮助用户更便捷地使用小程序,微信在主界面新增了小程序任务栏的功能。小程序菜单进行了升级,并提供小程序间快速切换的功能。同时,开放了小游戏开发文档和开发者工...

22410

扫码关注云+社区

领取腾讯云代金券