消息队列如何实现削峰,异步,解耦

消息队列是一种在分布式系统中用于消息传递的中间件技术,主要的用途有三个,分别是削峰,异步,解耦

削峰

消息队列本身可以作为一个缓冲,将请求的消息缓存在消息队列端,而不会直接让这些请求访问到服务端,这样当请求的峰值一下子增高了就能很好的缓解服务器的压力

异步

假设一个场景,一个用户向要下单,向订单服务发起请求:

订单服务先是发起消息给支付,收到支付成功的消息后再发起消息给库存,收到库存处理完成的消息后再发送消息给物流,前前后后需要200+200+200,总共600ms,这还只是一个用户那如果用户一旦变多,那么系统带来的延迟将会极大的降低用户的体验。

引入消息队列后:

那么支付,物流,库存只需要监听订单消息即可,监听到了就根据各自的执行逻辑各自执行了,这就是消息队列支持异步的功能。

解耦

想象一下如果两个本就不相关的服务,由于和同一个生产者同步发收消息,如果其中一个服务挂掉了,那另一个服务必须等待上一个服务完成后才可执行,本身就不太合理,而且如果有新的服务增加了,后续消费者的代码为了适合新增的服务接口,不得不再加上发送消息给新增服务的代码,是不是很麻烦,可扩展性很差:

但引入了消息队列,各个服务之间相互独立,只需要关注于消息,如果有新的服务增加,那么只需要订阅消息队列里的消息就可以了:

总而言之,通过使用消息队列能够让各个服务之间相互独立,从而提高了系统的可维护性,可扩展性,容错性 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值