消息队列Rabbit的使用及一些问题的处理

本文介绍了RabbitMQ作为消息中间件的作用,如解耦、异步和削峰,以及其引入的系统复杂性、可用性问题。讨论了如何通过主从模式确保高可用,如何处理消息丢失,保证消息的顺序性和幂等性。提供了具体的策略和方法来解决这些潜在问题。
摘要由CSDN通过智能技术生成

1.Rabbit是神马

  Rabbit是一个在微服务模块中,模块与模块之间进行相互通信,相互调用的一个消息中间件。

2.为什么要使用RabbitMQ

解耦:

       我们在做微服务开发中,会涉及到多个模块之间的相互调用。我们以ABCD四个独立运行的模块举个例子。假设现在A系统产生了一条数据,BCD三个系统都需要,这个时候,又新加入了E系统,E系统也需要这个数据,这个时候,C系统又不需要这个数据了。这样一来,对开发和维护A系统的人员是一种折磨啊!!这时候,就采用了RabbitMQ消息队列来解决。A系统产生一条数据,发送到MQ里面去,哪个系统需要数据自己去MQ里面消费。如果新系统需要数据,直接从MQ里面消费即可;如果某个系统不需要这条数据了,就取消对MQ消息的消费即可。这样下来,A系统就不要考虑那些谁要,谁不要的问题了。这就是MQ的第一个好处:解耦

       总结:通过一个MQ,Pub/Sub发布订阅消息这么一个模型,A系统就跟其他系统彻底解耦了。

异步:

       第二个场景:A系统接收一条请求,需要在自己本地写库,还需要在BCD三个系统写库,自己本地写库要3 ms,BCD三个系统分别写库要300ms、450ms、200ms,最终的请求就是953ms,这样也好请求一个东西,会感觉很慢。

       如果使用MQ,那么A系统连续发送3条消息到MQ队列中,假如耗时5ms,A系统从接受一个请求到返回响应给用户花费8ms,对用户的体验大大提升。

削峰:

       假设在一个时间段内,A系统按照正常的效率处理请求(假设是每秒并发请求数量50个),结果在一个时间段内,出现了访问的高峰期,每秒并发请求数量突然暴增到5k+。但是呢,A系统是基于Mysql的,你想想,这么多请求去访问Mysql,一般的Mysql,每秒并发请求数量最多2k,结果就是,Mysql崩溃了,系统也无法正常运行了,用户也没法再使用A系统了。

       如果使用MQ队列,每秒5k个请求写入MQ队列中,A系统每秒

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值