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为两种模型提供了单一的消费者抽象模型:消费者组

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

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

posted @ 2019-09-30 09:23  currentTimeMillis  阅读(1372)  评论(0编辑  收藏  举报