zoukankan      html  css  js  c++  java
  • kafka 、mqtt、modbus 消息模型

    kafka mqttmodbus 消息模型 

    一、MQTT  

    MQTT 服务质量(QoS

    服务质量(QoS)级别是一种关于发送者和接收者之间信息投递的保证协议。

    有三种 QoS级别:

    至多一次:0

    至少一次:1

    只有一次:2

    QoS 0 至多一次:

    0 是最低级别,具有最高传输性能,接收者不应答,发送者也不保存和重发消息。

    QoS 1 至少一次:

    1 级别,可以保证消息至少被送达接收者一次。但也能被送达多次。

    发送者会保存消息,直到收到接收者发送的puback格式的应答命令。

    系统通过对比包的标识符来确定一对publish puback 的完成情况。规定时间内没收到 puback,发送者重发publish消息。

    例: 假如broker 收到消息,它会将消息投递给所有此消息订阅者,饭后向发布者应答一个 puback

    重复(DUP)标志会在publish 被重发时设置,标志只用作程序内部,不会被broker处理,也不会被客户端处理。无论重复(DUP)标志如何,接收者都会发送一个puback应答。

    2 级别 是最高级别。保证每条消息只被接收一次。最安全,也最慢。其通过发送者和接收者的两次对话来实现。

    QoS降级

    发送端 brokerQoS级别由发送端定义,broker到接收端的QoS级别由接收端定义。

    对于同一个客户端来说,每一个数据包的标识符都是唯一的。

    同一客户端和broker之间每一个数据包的标识符都是唯一的。如果通信流程执行完毕,那么相同的标识符就可以被复用。

    QoS 1 QoS 2 的队列,发送给掉线设备的消息将会存储起来,直到设备再次可用。但是队列只在客户端使用持久化时才会产生。

    二、Modbus

    modbus 驱动程序接受数据,无需关心数据是否接受完毕,只要有数据发过来,都收到缓冲区。然后再应用层开启任务定时扫描缓冲区的新数据,通过帧头帧尾标识符校验等判断接受帧的正确性。正确再处理,不正确丢弃。

    三、Kafka

    1kafka 有两种常用消息模型

    队列模型(queuing) 和发布-订阅模型(publish-subscribe

    队列模型: 一组消费者从服务器读取消息,一条消息只由其中一个消费者来处理。

    发布-订阅模型:消息被广播给所有消费者,接收到消息的消费者都可以处理此消息。

     2kafka 的消费者和消费者组

    kafka为两种模型提供了单一的消费者抽象模型:消费者组

    假如 所有消费者都在一个组中,那么就是 队列模型

    假如 所有消费者都在不同的组中,那么就是 发布 订阅模型

  • 相关阅读:
    设计模式--4建造者模式
    java中的方法重载与重写以及方法修饰符
    设计模式--3.模板方法模式
    设计模式--2.工厂方法模式
    设计模式--1.单例模式
    问题--时景某些用户不能发表评论解决方案
    EXCEL:从一组数据中查找我想要的某个数据是否存在
    Git版本控制--05--可以吃后悔药之版本回退
    Git版本控制--04--文件修改后怎么提交
    Git版本控制--03--怎么向Git仓库中添加文件
  • 原文地址:https://www.cnblogs.com/wgy1/p/11611002.html
Copyright © 2011-2022 走看看