首页 > 其他分享 >赶紧收藏!2024 年最常见 20道 Rocket MQ面试题(三)

赶紧收藏!2024 年最常见 20道 Rocket MQ面试题(三)

时间:2024-05-29 11:32:05浏览次数:21  
标签:面试题 顺序 20 Rocket 业务 Queue 保证 消息 ID

上一篇地址:赶紧收藏!2024 年最常见 20道 Rocket MQ面试题(二)-CSDN博客

五、请解释RocketMQ中的全局有序和局部有序的概念。

在RocketMQ中,有序性是消息传递的一个重要特性,它确保了在特定条件下消息能够按照发送的顺序被消费。RocketMQ提供了两种有序性保证:全局有序和局部有序。

全局有序

全局有序是指在同一个Topic下的所有消息都按照发送的顺序进行消费。这种模式下,所有的生产者发送到同一个Topic的消息都会被分配到同一个Queue中,因此消费者总是从一个固定的Queue中拉取消息,从而保证了消息的全局顺序。

特点:

  • 单一队列:所有消息都发送到同一个Queue中。
  • 顺序保证:消费者总是从同一个Queue中消费消息,保证了全局的顺序性。
  • 适用场景:适用于对消息顺序有严格要求的场景,例如需要严格按顺序处理的业务逻辑。

限制:

  • 并发度限制:由于所有消息都通过同一个Queue,这限制了系统的并发处理能力。
  • 性能影响:单一队列可能会成为性能瓶颈,特别是在高负载情况下。

局部有序

局部有序是指在同一个消费组(Consumer Group)内,具有相同业务标识(如订单ID)的消息能够按照发送的顺序被消费。在这种模式下,生产者发送的消息会被分配到Topic下的多个Queue中,但是每个Queue都会根据消息的业务标识进行哈希,确保相同业务标识的消息发送到同一个Queue。

特点:

  • 多个队列:消息被发送到Topic下的多个Queue中,提高了并发处理能力。
  • 业务标识:通过业务标识(如订单ID)来保证相同业务的消息顺序。
  • 适用场景:适用于需要保证特定业务消息顺序的场景,同时允许其他消息并行处理。

优势:

  • 高并发:通过多个Queue,提高了系统的并发处理能力。
  • 灵活性:允许不同业务标识的消息并行处理,提高了系统的灵活性。

实现机制

  • 哈希取模:生产者在发送消息时,可以根据消息的业务标识进行哈希,然后对Queue的数量进行取模运算,以确定消息应该发送到哪个Queue。
  • 消费者分组:消费者被分为不同的消费组,每个消费组内的消息顺序由各自的Queue保证。
  • 顺序消费:消费者在消费消息时,总是从同一个Queue中拉取消息,保证了局部有序。

总结

全局有序和局部有序是RocketMQ中两种不同的消息顺序保证机制。全局有序通过单一队列来保证所有消息的顺序,适用于对顺序要求极高的场景,但可能会限制并发度和性能。局部有序通过业务标识和多个Queue来保证特定业务消息的顺序,同时允许其他消息并行处理,提高了系统的并发度和灵活性。在实际应用中,应根据业务需求和性能考虑选择合适的有序性保证机制。

六、请描述RocketMQ中消费者如何保证消费的幂等性。

在消息队列中,幂等性是指消费者在处理消息时,即使消息被重复消费,也不会导致业务逻辑的不一致性或重复执行。RocketMQ作为一个分布式消息中间件,提供了一些机制来帮助消费者保证消费的幂等性:

1. 业务标识符

业务标识符(如订单ID、交易ID等)是保证幂等性的一种常见方法。消费者在处理消息时,可以使用业务标识符来检查业务操作是否已经执行过。

实现步骤:

  1. 检查标识:消费者在处理消息前,首先检查该业务标识符是否已经处理过。
  2. 去重处理:如果发现业务标识符已存在,则跳过当前消息,不执行重复的业务逻辑。
  3. 记录状态:如果业务标识符不存在,则执行业务逻辑,并将业务标识符的状态更新为已处理。

2. 唯一索引

在数据库中使用唯一索引也是一种保证幂等性的策略。当消费者处理消息并更新数据库时,可以通过尝试插入具有唯一索引的记录来确保不会插入重复的数据。

实现步骤:

  1. 尝试插入:消费者尝试将消息数据插入到具有唯一索引的数据库表中。
  2. 捕获异常:如果插入操作由于唯一性冲突而失败(例如违反了唯一索引约束),则捕获异常。
  3. 判断重复:捕获到异常后,消费者可以判断这条消息是重复的,从而避免执行重复的业务逻辑。

3. 状态表

消费者可以通过维护一个状态表来记录消息的处理状态。状态表可以存储消息ID或业务标识符以及它们的状态(如未处理、已处理)。

实现步骤:

  1. 查询状态:消费者在处理消息前,先在状态表中查询该消息的状态。
  2. 更新状态:如果消息未被处理,则执行业务逻辑,并将状态更新为已处理。
  3. 跳过重复:如果消息已被处理,则跳过当前消息。

4. 消息去重

RocketMQ 4.3版本之后支持了消息去重的功能。生产者在发送消息时,可以指定一个唯一的消息ID,Broker会根据这个ID来保证消息的唯一性。

实现步骤:

  1. 发送唯一ID:生产者发送带有唯一ID的消息到Broker。
  2. Broker去重:Broker接收到消息后,会根据唯一ID检查消息是否重复。
  3. 避免重复消费:如果消息重复,Broker不会再次发送该消息给消费者。

5. 业务逻辑设计

在设计业务逻辑时,应考虑到幂等性的需求。例如,可以通过设计不可逆的操作或使用状态机来管理状态转换,以确保即使重复执行也不会导致不一致。

6. 重试策略

合理设计消息消费的重试策略,例如引入重试次数限制、重试间隔逐渐增加等策略,以减少消息重复消费的可能性。

通过上述机制,RocketMQ中的消费者可以在一定程度上保证消费的幂等性。然而,最终的幂等性保证还需要业务逻辑的配合,以及对业务场景的深入理解和设计。

标签:面试题,顺序,20,Rocket,业务,Queue,保证,消息,ID
From: https://blog.csdn.net/weixin_42922481/article/details/139290801

相关文章

  • C130 并查集 P1197 [JSOI2008] 星球大战
    视频链接:  P1197[JSOI2008]星球大战-洛谷|计算机科学教育新生态(luogu.com.cn)//并查集#include<iostream>#include<cstdio>#include<cstring>usingnamespacestd;constintN=400005;inth[N],from[N],to[N],ne[N],idx;voidadd(intu,intv){from[......
  • 【EI检索稳定 | 东华理工大学机械与电子工程学院协办】2024年数字技术与智慧教育国际
    2024年数字技术与智慧教育国际会议(DTSE2024)将于2024年7月26日在广东省广州市召开,本次会议专注于“数字技术与智慧教育”领域,将汇集全球范围内的学者、研究人员以及教育技术开发者,共同探索和分享该领域内的最新学术成果和技术进展。会议的主要目标是构建一个高质量的学术交流和......
  • 【ACM出版,多高校单位支持 |人工智能等计算机领域 ei 会议,EI Compendex, Scopus检索】2
    2024人工智能与自然语言处理国际学术会议(AINLP2024)将于2024年7月19-21日在中国·珠海召开,该会议作为第四届人工智能、自动化与高性能计算国际会议(AIAHPC2024)分会场召开。本次会议主要围绕“人工智能与自然语言处理”的最新研究展开,旨在荟聚世界各地该领域的专家、学者、研究......
  • 【IEEE出版(ISBN: 979-8-3503-8697-4) | 广东技术师范大学、广东省计算机学会、广东工业
    第六届物联网、自动化和人工智能国际会议(IoTAAI2024)将于2024年07月26-28日在中国·广州召开。会议旨在拓展国际科技学术交流渠道,搭建学术资源共享平台,促进全球范围内的科技创新,提升中外学术合作。重要信息大会网站:https://ais.cn/u/JfM77j【click】大会时间:2024年7月26-2......
  • SQLServer2022新特性JSON_OBJECT从零个或多个表达式中构造JSON对象
    SQLServer2022新特性JSON_OBJECT从零个或多个表达式中构造JSON对象文本参考中文官方文档https://learn.microsoft.com/zh-cn/sql/t-sql/functions/json-object-transact-sql?view=sql-server-ver16参考英文文官方文档https://learn.microsoft.com/en-us/sql/t-sql/fun......
  • 2024年流行效果插件,助你打造非凡设计!
    设计图片太普通了?加班挑细节?你不能达到你想要的效果吗?作为一名设计师,你总是无法逃脱这样的噩梦!如何改变工作中的类似困境?除了提高自我设计技能外,选择一些辅助效果插件“插件”也非常重要。所谓的“软件不够,效果插件”,设计工具本身没有功能,可以通过安装效果插件来弥补。如今,市......
  • 整理好了!2024年最常见 20 道 Rocket MQ面试题(四)
    上一篇地址:整理好了!2024年最常见20道RocketMQ面试题(三)-CSDN博客七、RocketMQ消费模式有几种?RocketMQ提供了两种主要的消费模式,分别是:集群消费模式(Clustering):在这种模式下,同一Topic下的消息被分发到同一个ConsumerGroup中的不同实例进行消费,但任意一条消息只会被该组中......
  • 一款交流220V转直流3.3V蓝牙WIFI模块单片机供电的非隔离芯片WT5107
    一款交流220V转直流3.3V蓝牙WIFI模块单片机供电的非隔离芯片WT5107WT5107是一种高性能和高精度的非隔离降压开关电源恒压控制驱动芯片,适用于220VAC或全电压范围输入。它特别适合于小家电和白色家电等设备的电源,固定输出为3.3V。该芯片内部集成了高压MOS功率管,采用恒压控制模式,可......
  • Unity版本使用情况统计(更新至2024年4月)
    UWA发布|本期UWA发布的内容是第十四期Unity版本使用统计,统计周期为2023年11月至2024年4月,数据来源于UWA网站(www.uwa4d.com)性能诊断提测的项目。希望给Unity开发者提供相关的行业趋势作为参考。2023年11月-2024年4月版本分布  以近半年的数据统计来看,如图1所示,2021.3的版......
  • 一键云部署:ROS的Terraform托管服务助你轻松上线2048经典游戏
    在现代云计算环境中,自动化部署已经成为一项重要的任务。Terraform,作为HashiCorp公司的一款开源工具,以其强大的基础设施即代码(IaC)能力,使得我们能够轻松管理和部署各种云资源。阿里云资源编排服务(ResourceOrchestrationService,ROS)是一种简单易用的云计算资源自动化部署服务,提供了......