其他分享
首页 > 其他分享> > 消息队列 - 基础篇

消息队列 - 基础篇

作者:互联网

消息队列 - 基础篇

目录

前言

常见问题:

底层技术:

消息模型

消息模型:

RabbitMQ 消息模型:

                                             - Queue  - Consumer
Producer  -  Exchange
                                              - Queue - Consumer

RocketMQ / Kafka 消息模型:

                                                    - Queue/Partition   -
Producer Group - Topic                                              -  Consumer Groups 
                                                    - Queue/Partition  - 

kafka 叫分区,RocketMQ 叫队列

消息丢失

消息丢失检测

序号检测方式:

消息可靠传递

消息传递的三个阶段:

生产阶段:

存储阶段:

消费阶段:

消息重复

服务质量标准

MQTT 协议的三种服务质量标准:

大多数消息队列产品都提供至少一次的服务质量标准。

用幂等性解决消息重复

处理消息重复,需要保证消费者的消费逻辑具有幂等性。

at least once + 幂等消费 = exactly once

幂等性操作:一个操作执行任意多次和执行一次对系统的影响是相同的。

常用的幂等设计:

检查、操作、销毁需要保证原子性和同步。
避免出现 A 检查后未销毁时 B 检查通过导致重复操作。

消息积压

Producer 性能

Consumer 性能

要保证 Consumer 数量和分区数量一致,
因为每个分区实际上只支持单线程消费。

消息积压排查

排查方法:

常见原因:

分布式事物

分布式事务:

事务消息

事务消息适合需要异步更新数据,对数据实时性要求不高的场景。

事务消息执行过程:

  1. 生产者在消息队列开启事务
  2. 生产者发送半消息(消息对消费者不可见)
  3. 生产者执行本地事务(数据库事务)
  4. 提交/回滚消息队列事务(提交后消息对消费者可见)

提交失败:

参阅

标签:事务,消费者,队列,基础,消息,Consumer,丢失
来源: https://www.cnblogs.com/liaozibo/p/message-queue-basic.html