浅谈mqtt源码(一)神秘得mqtt

453 阅读2分钟

常见的mq有Kafka,RocketMQ和RabbitMQ,大家也很常见。 前者很常见,属于微服务间的mq。

那么MQTT是什么呢?MQTT属于IoT也就是物联网的概念。

mqtt.js是MQTT在nodejs端的实现。

主要了解下以下两个概念:

  • MQTT关键名词解释
  • P2P消息和Pub/Sub消息

MQTT关键名词解释

MQTT是一个物联网MQTT协议,主要解决的是物联网IoT网络情况复杂的问题。

使用场景主要为数据传输:

  1. 车联网(远程控制,汽车数据上传)
  2. IM通讯(1对1单聊,1对多朋友圈)
  3. 视频直播(弹幕通知,聊天互动)
  4. 智能家居(电器数据上传,遥控指令)

每个MQTT实例都对应一个全局唯一的服务接入点,在通过mqtt.connect(url)与server(broker)建立连接时,broker的url都是一致的,本地的前端与服务端间建立连接的url都是统一的,只是在clientId进行区分即可。

Pub/Sub消息

Pub/Sub消息就是订阅和发布的模式,类似事件监听和广播;MQTT除了支持Pub/Sub的模式,还支持P2P的模式

P2P消息

P2P,全称为(Point to Point),一对一的消息收发模式,只有一个消息发送者和一个消息接收者。

P2P模式下,消息发送者明确知道消息的预期接收者,并且这个消息只能被这个特定的客户端消费。发送者发送消息时,通过Topic指定接收者,接收者无需订阅即可获得该消息。P2P 模式不仅降低注册订阅的成本,而且因为对链路有优化,所以降低推送延迟。

P2P模式和Pub/Sub模式的区别

发送消息时:

(Pub/Sub) 发送者需要按照与接受者约定好的Topic发送消息

(P2P) 发送者无需按照Tpic发送,可以直接按照规范进行发送

接收消息时:

(Pub/Sub) 接收者需要提前订阅topic才能接消息

(P2P) 无需订阅即可接收消息