MQ保证读写消息不丢失,这个你都不会就等着被开除吧...

本文探讨了如何在使用RabbitMQ作为消息中间件时,从发送到消费过程中确保数据100%不丢失。介绍了从消费者宕机、MQ集群崩溃等问题出发,采取手动ACK机制、消息和队列持久化等技术方案,但还存在订单服务到MQ集群的数据丢失风险。接下来将深入研究如何确保订单服务发出的消息在MQ集群中得到持久化,以防止MQ集群故障导致的数据丢失。
摘要由CSDN通过智能技术生成

一、背景引入

这篇文章,我们来聊聊在线上生产环境使用消息中间件技术的时候,从前到后的全链路到底如何保证数据不能丢失。

这个问题,在互联网公司面试的时候高频出现,而且也是非常现实的生产环境问题。

如果你的简历中写了自己熟悉MQ技术(RabbitMQ、RocketMQ、Kafka),而且在项目里有使用的经验,那么非常实际的一个生产环境问题就是:投递消息到MQ,然后从MQ消费消息来处理的这个过程,数据到底会不会丢失。

面试官此时会问:如果数据会丢失的话,你们项目生产部署的时候,是通过什么手段保证基于MQ传输的数据100%不会丢失的?麻烦结合你们线上使用的消息中间件来具体说说你们的技术方案。


这个其实就是非常区分面试候选人技术水平的一个问题。

实际上相当大比例的普通工程师,哪怕是在一些中小型互联网公司里工作过的,也就是基于公司部署的MQ集群简单的使用一下罢了,可能代码层面就是基本的发送消息和消费消息,基本没考虑太多的技术方案。

但是实际上,对于MQ、缓存、分库分表、NoSQL等各式各类的技术以及中间件在使用的时候,都会有对应技术相关的一堆生产环境问题。

那么针对这些问题,就必须要有相对应的一整套技术方案来保证系统的健壮性、稳定性以及高可用性。

所以其实中大型互联网公司的面试官在面试候选人的时候,如果考察对MQ相关技术的经验和掌握程度,十有八九都会抛出这个使用MQ时一定会涉及的数据丢失问题。因为这个问题,能够非常好的区分候选人的技术水平。


所以这篇文章,我们就来具体聊聊基于RabbitMQ这种消息中间件的背景下,从投递消息到MQ,到从MQ消费消息出来,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值