知识整理(六):RocketMQ 相关知识

一、RocketMQ相关知识


1. 为什么要用消息队列?

   答:异步解耦削峰

2. RocketMQ如何解决重复消费消息问题?

   答:保证幂等性

   什么是幂等性?

   答:多次执行的结果始终一致。也就是说,相同的接口,无论你调1次还是100次,结果都是完全一致的。

3. RocketMQ如何解决顺序消费消息问题?

   答:一致性Hash(Hash取模法)。就是让一类请求(同一个订单)落在同一个队列上。单个队列天生支持顺序消费,如下图:
在这里插入图片描述

4. RocketMQ如何解决分布式事务问题?

   答:事务反查机制。
在这里插入图片描述
   消息队列中的分布式事务是——本地事务和存储消息到消息队列才是同一个事务。这样也就产生了事务的最终一致性,因为整个过程是异步的,每个系统只要保证它自己那一部分的事务就行了。

5. 什么是回溯消费?

   答:重新消费已经消费过的消息。

   重新消费一般是按照时间维度,例如由于 Consumer 系统故障,恢复后需要重新消费1小时前的数据。RocketMQ 支持按照时间回溯消费,时间维度精确到毫秒。

6. RocketMQ持久化机制

   答:分为单节点集群两种情况。

   单节点 - 持久化方式同步刷盘异步刷盘
在这里插入图片描述
   如上图所示,在同步刷盘中需要等待一个刷盘成功的 ACK ,同步刷盘对 MQ 消息可靠性来说是一种不错的保障,但是 性能上会有较大影响 ,一般地适用于金融等特定业务场景

   而异步刷盘往往是开启一个线程去异步地执行刷盘操作。消息刷盘采用后台异步线程提交的方式进行, 降低了读写延迟 ,提高了 MQ 的性能和吞吐量,一般适用于如发验证码等对于消息保证要求不太高的业务场景

   一般地,异步刷盘只有在 Broker 意外宕机的时候会丢失部分数据,你可以设置 Broker 的参数 FlushDiskType 来调整你的刷盘策略(ASYNC_FLUSH 或者 SYNC_FLUSH)。

   RocketMQ默认采用异步刷盘策略

   集群 - 持久化方式:上面的同步刷盘和异步刷盘是在单个结点层面的,而同步复制异步复制主要是指的 Borker 主从模式下,主节点返回消息给客户端的时候是否需要同步从节点。

  • 同步复制:也叫“主从双写”,指只有将消息写入到主节点和从节点才算写入成功
  • 异步复制:将消息写入到主节点就算写入成功。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值