我是靠谱客的博主 体贴冰淇淋,最近开发中收集的这篇文章主要介绍EMQX以及用MQTT的测试和性能测试,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

产品的概念:

EMQX 是开源百万级分布式 MQTT 消息服务器(MQTT Messaging Broker),用于支持各种接入标准 MQTT 协议的设备,实现从设备端到服务器端的消息传递,以及从服务器端到设备端的设备控制消息转发。从而实现物联网设备的数据采集,和对设备的操作和控制。

优势:

  • 开放源码:基于 Apache 2.0 许可证完全开源,自 2013 年起 200+ 开源版本迭代。

  • MQTT 5.0:100% 支持 MQTT 5.0 和 3.x 协议标准,更好的伸缩性、安全性和可靠性。

  • 海量连接:单节点支持 500 万 MQTT 设备连接,集群可扩展至 1 亿并发 MQTT 连接。

  • 高性能:单节点支持每秒实时接收、移动、处理与分发数百万条的 MQTT 消息。

  • 低时延:基于 Erlang/OTP 软实时的运行时系统设计,消息分发与投递时延低于 1 毫秒。

  • 高可用:采用 Masterless 的大规模分布式集群架构,实现系统高可用和水平扩展。

MQTT 协议与 HTTP 协议相比,有何优点和弱点?

标签: 多协议

HTTP 协议是一个无状态的协议,每个 HTTP 请求为 TCP 短连接,每次请求都需要重新创建一个 TCP 连接(可以通过 keep-alive 属性来优化 TCP 连接的使用,多个 HTTP 请求可以共享该 TCP 连接);而 MQTT 协议为长连接协议,每个客户端都会保持一个长连接。与 HTTP 协议相比优势在于 :

  • MQTT 的长连接可以用于实现从设备端到服务器端的消息传送之外,还可以实现从服务器端到设备端的实时控制消息发送,而 HTTP 协议要实现此功能只能通过轮询的方式,效率相对来说比较低;

  • MQTT 协议在维护连接的时候会发送心跳包,因此协议以最小代价内置支持设备 “探活” 的功能,而 HTTP 协议要实现此功能的话需要单独发出 HTTP 请求,实现的代价会更高;

  • 低带宽、低功耗。MQTT 在传输报文的大小上与 HTTP 相比有巨大的优势,因为 MQTT 协议在连接建立之后,由于避免了建立连接所需要的额外的资源消耗,发送实际数据的时候报文传输所需带宽与 HTTP 相比有很大的优势,参考网上有人做的测评 (opens new window),发送一样大小的数据,MQTT 比 HTTP 少近 50 倍的网络传输数据,而且速度快了将近 20 倍。在网上有人做的另外一个评测显示 (opens new window),接收消息的场景,MQTT 协议的耗电量为 HTTP 协议的百分之一,而发送数据的时候 MQTT 协议的耗电量为 HTTP 协议的十分之一;

  • MQTT 提供消息质量控制(QoS),消息质量等级越高,消息交付的质量就越有保障,在物联网的应用场景下,用户可以根据不同的使用场景来设定不同的消息质量等级;

什么是认证鉴权?使用场景是什么?

认证鉴权指的是当一个客户端连接到 MQTT 服务器的时候,通过服务器端的配置来控制客户端连接服务器的权限。EMQ 的认证机制包含了有三种,

  • 用户名密码:针对每个 MQTT 客户端的连接,可以在服务器端进行配置,用于设定用户名和密码,只有在用户名和密码匹配的情况下才可以让客户端进行连接

  • ClientID:每个 MQTT 客户端在连接到服务器的时候都会有个唯一的 ClientID,可以在服务器中配置可以连接该服务器的 ClientID 列表,这些 ClientID 的列表里的客户端可以连接该服务器

  • 匿名:允许匿名访问

通过用户名密码、ClientID 认证的方式除了通过配置文件之外,还可以通过各类数据库和外部应用来配置,比如 MySQL、PostgreSQL、Redis、MongoDB、HTTP 和 LDAP 等。

功能特性 。多协议支持 MQTT,MQTT-SN,CoAP,LwM2M,WebSocket,STOMPJT/T808 ... MQTT 完整支持-MQTT 3.1.0,3.1.1,5.0多种认证 - username, client-id, mysql, pgsql, mongodb, redis, http,ldap, jwt多种数据后端(企业版)- mysql, pgsql, redis,mongodb,opentsdb,influxdb,dynamo, cassandra. 数据桥接(企业版)- rabbitmq, kafka pulsar, other mqtt brokers 规则引擎(企业版)-实现各种业务逻辑的灵活配置 。编解码(企业版) 支持各种数据的编解码 Edge版 架构特性 高并发-单节点百万级并发连接(200w)0 ·高容错-以电信级的Erang OTP 作为基础 。易扩展-丰富的官方插件,定制开发简单 。易伸缩-可水平扩展的集群

EMQX的安装:

cd /bin
mkdir emqx
cd emqx
wget https://packages.emqx.io/emqx-ce/v4.1.4/emqx-centos7-v4.1.4.zip
cd emqxunzip emqx-centos7-v4.1.4.zip
unzip emqx-centos7-v4.1.4.zip
cd emqx
./bin/emqx start
//查看EMQX的运行状态
./bin/emqx_ctl status
//EMQX停止服务的命令:
./bin/emqx stop

cd etc
cd plugins/

vi emqx_auth_username.conf 
//进行一个账号密码的设定


安装完成后:

访问:服务器地址/本地本机地址 +18083  到达此页面 :  

输入账号:admin  密码: public

可以进入这个页面: 

 

EMQX订阅和发送消息:

 

 

配置订阅

 

 接受消息订阅之后就可以收到发送消息发送的消息:

 

压力测试: 

yum -y install docker-ce docker-ce-cli containerd.io
docker run -itd --name emgtt-bench
faryne/emgtt-bench-tool:latestdocker run -itd --name emgtt-benchfaryne/emgtt-bench-tool:latest

systemctl start docker.service
docker run -itd --name emqtt-bench faryne/emqtt-bench-tool:latest
docker exec -it emqtt-bench ./emqtt_bench conn -h 43.138.126.205 -p 1883 -c -20000


// 43.138.126.205  --服务器的地址  -p 1883 :端口地址   -s 16  :16代表16字节 
 -c:指的是模拟的客户端的数量  -I是指的是每条消息发送的间隔   -I100:就是每条消息发送的间隔为100ms
docker exec -it emqtt-bench ./emqtt_bench pub -t t -h 43.138.126.205 -p 1883 -s 16 -q 1 -c 10000 -I 100

最后

以上就是体贴冰淇淋为你收集整理的EMQX以及用MQTT的测试和性能测试的全部内容,希望文章能够帮你解决EMQX以及用MQTT的测试和性能测试所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部