您的位置 首页 > 科技

mqtt并发测试方法 mqtt与tcp区别?

mqtt并发测试方法

mqtt与tcp区别?

mqtt与tcp区别?

MQTT是建立在TCP协议之上的一层应用层协议,是不同层面的。我想你可能是想问MQTT比socket报文交互好在哪里?这样的话有几点重要原因:
1.最大优点是降低开发复杂度和开发成本,解决了网络编程中重连机制,报文解析中粘包处理,字节流处理,高并发处理,保证数据到达,保证数据唯一到达,等等问题。
使用json作为交互数据格式,便于理解和对接,使得不同系统之间,不同设备和系统之间交互更加简单,降低了开发和沟通复杂度。
3.但在效率上,MQTT还是比不过直接网络编程,用netty开发也难度不高

关于mosquitto怎么用c语言实现消息的订阅和发送(mqtt)?

1.目标:测试Mosquitto使用MQTT协议发消息的相关性能指标,包含发送速度,并发负载能力,资源占用,消息到达率。
协议简介:
  1).建立长连接。客户端发起请求和服务端建立长连接,建立成功后,服务端会返回ACK(CONNACK)
  2).客户端订阅:客户端发起订阅,订阅成功后,服务端会返回ACK(SUBACK)
  3).发消息:发布者会给服务端发消息,服务端在把消息给合适的客户端。
Qos0(服务质量):客户端消息收到后,不会发出ACK给服务端(PUBACK)。
       Qos 1:服务端会发ACK给发布者,客户端收到消息后会发ACK给服务端。
  4).取消订阅:客户端发起取消订阅,服务端返回ACK(UNSUBACK)  
  5)PingreqampPingresp:客户端和服务端会保持心跳。
3.存在问题:
  1. 如何模拟出40W的用户
  2. 如何长连接,订阅,发消息,取消订阅,Pingreq行为如何实现。
4. python开源库 ,解决所有问题
  1. 模拟40W用户
    a)可以使用虚拟机和实现,具体为:一般一台虚拟机最多是6W 的模拟数据(需要修改句柄数,我使用5W),方法是Client_id可以简单的做出5W个来,然后调用Mosquitto里面的connect方法,建立长连接。准备8台虚拟机就可以实现40W客户端的模拟
  2.行为的模拟
    a)订阅: / 发消息: / 取消订阅:Mosquitto.unsubscribe。 简单一句话 Mosquitto库实现所有的行为.
5. 指标:发送速度,到达率,并发负载,资源占用。
  a. 发送速度:服务端日志记录,分析解决
  b. 到达率: 1.客户端记录下收到消息,分析计算。2.计算服务端收到的PUBACK(客户端收到消息返回的ACK),进行计算
  c. 并发负载:5W 用户不断增加,注意观察服务端的负载情况。
  e.资源占用:其实主要是cpu/mem/带宽:cpu多核的话需要观察top命令下的_id字段, mem可以观察free -h命令的剩余mem, 带宽可以使用mpstat进行观察
6. 可以遇见问题:
  a. 模拟客户端的虚拟机需要修改句柄数才能支持5W的客户端模拟数量
  b. 要先吃透MQTT协议的流程,吃透了进行测试会非常的方便
  c. Clear session,设置为true则不为客户端保留休息,设置为false保留消息。其实就是客户端离线后在连接上可以收到之前推出的消息。

相关文章