字节二面:引入RabbitMQ后,你如何保证全链路数据100%不丢失?

文章探讨了RabbitMQ中防止消息丢失的策略,包括生产者使用confirm消息确认机制确保消息到达RabbitMQ,通过消息持久化保证RabbitMQ重启后仍能恢复消息,以及消费端采用手动ack机制避免消息丢失。此外,还提出了消息入库作为补偿机制,以应对极端情况。文章强调了实现99.999999%的消息可靠性,而不是100%的不可能目标,并提到了消费端幂等性的重要性。
摘要由CSDN通过智能技术生成

我们都知道,消息从生产端到消费端消费要经过3个步骤:

  1. 生产端发送消息到RabbitMQ;

  2. RabbitMQ发送消息到消费端;

  3. 消费端消费这条消息;

这3个步骤中的每一步都有可能导致消息丢失,消息丢失不可怕,可怕的是丢失了我们还不知道,所以要有一些措施来保证系统的可靠性。

这里的可靠并不是一定就100%不丢失了,磁盘损坏,机房爆炸等等都能导致数据丢失,当然这种都是极小概率发生,能做到99.999999%消息不丢失,就是可靠的了。下面来具体分析一下问题以及解决方案。

生产端可靠性投递

生产端可靠性投递,即生产端要确保将消息正确投递到RabbitMQ中。

生产端投递的消息丢失的原因有很多,比如消息在网络传输的过程中发生网络故障消息丢失,或者消息投递到RabbitMQ时RabbitMQ挂了,那消息也可能丢失,而我们根本不知道发生了什么。

针对以上情况,RabbitMQ本身提供了一些机制。

事务消息机制

事务消息机制由于会严重降低性能,所以一般不采用这种方法,我就不介绍了,而采用另一种轻量级的解决方案:confirm消息确认机制。

confirm消息确认机制

什么是confirm消息确认机制?顾名思义,就是生产端投递的消息一旦投递到RabbitMQ后,RabbitMQ就会发送一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值