173

EMQTT简介

 5 years ago
source link: https://www.opsdev.cn/post/EMQTT简介.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

MQTT简介

基础介绍

  1. MQTT V3.1/V3.1.1协议规范
  2. 发布订阅模式
  3. 基于Topic的消息路由
  4. Qos 0,1,2服务质量
  5. Transient, Persistent Sessions
  6. Last Will, Retained Message
  7. KeepAlive and Two Bytes Heartbeat
  8. MQTT Over WebSocket
  1. CONNECT发起连接
  2. CONNACK连接回执
  3. DISCONNECT断开连接
  4. PUBLISH发布消息
  5. PUBACK发布回执
  6. PUBREC Qos2消息回执
  7. PUBREL Qos2消息释放
  8. PUBCOMP Qos2消息完成
  9. SUBSCRIBE订阅topic
  10. SUBACK订阅回执
  11. UNSUBSCRIBE取消订阅
  12. UNSUBACK取消订阅回执
  13. PINGREQ PING请求
  14. PINGRESP PING响应

Qos0/1/2

消息的服务质量以pub,sub的较小者为准。

  1. Qos0消息投递模型 fI7f6bM.jpg!web
  2. Qos1消息投递模型 FrYZfeE.jpg!web
  3. Qos2消息投递模型 q2iIrqR.jpg!web

EMQTT基础知识介绍

概念模型

IbyIZbU.jpg!webaaUfE3j.jpg!web

分层与模块

  1. 连接层 esockd非阻塞的TCP/SSL的socket Server。支持可配置的Acceptor数量,最大连接数的管理。 访问速率控制,TCP/SSL连接的支持。HTTP Publish API的支持等。
  2. 会话层
    1. MQTT publish和subscribe的消息交互流程
    2. Qos0/1/2消息的接收与下发,消息超时重传,离线消息保存
    3. 飞行窗口,下发消息的顺序保证? 窗口越大,吞吐越高;窗口越小,消息顺序约严格。消息顺序可能会出现客户端ACK的顺序不严格。
    4. 缓存MQTT客户端的全部订阅,并终结Qos
    5. 客户端离线时,持久会话保存离线的Qos1/2消息
  3. 路由层
    1. 字典树匹配路由
    2. Topic表读取分布的节点
    3. Router进行路由的分发
    4. session进行消息的送达与重传
    5. 路由的过程如下 Bf2qE3Q.jpg!web
  4. 分布层 Mnesia数据库实现集群方案,Trie树,Topic->Node的映射表
  5. 认证与访问控制
    1. 用户名、密码认证
    2. ClientID认证
    3. 匿名认证
    4. 插件认证的目前采用的是redis认证
  6. 钩子与插件
    1. client.connected
    2. client.subscribe
    3. client.subscribe.after
    4. client.unsubscribe
    5. message.publish
    6. message.acked
    7. client.disconnected

交互示意图

  1. 连接的交互示意图 Z7Z73yb.png!web
  2. 订阅的交互示意图 Uzyqeqb.png!web
  3. 发布消息的示意图 YreU7j3.png!web
  4. 投递消息的示意图 eaiAjyj.png!web

其他内容

EMQTT原理相关


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK