消息队列作用

 

目录

解耦

异步

削峰


 

  • 解耦

       如上图所示一个用户注册 -> 注册系统,注册系统接口调用推送系统给用户发送注册成功消息,调用任务系统给用户生成新手任务,调用营销系统给用户推荐精准广告,这种调用方式会出现两种耦合严重的现象:

       1. 推送系统、任务系统、营销系统中任何一个宕机的情况下,注册系统这块需要考虑要不要给宕机系统重新发送消息。

       2. 当有新的系统需要接收用户注册消息时,注册系统又要接口调用新的系统,给新的系统发送注册消息。

       上述两种情况都将注册系统和其他系统严重耦合在一起,严重影响业务迭代和开发效率。

       如上图所示,一旦引入 MQ 的话就解决了上述的两个耦合问题:

       1. 注册系统发布注册信息到 MQ ,推送系统、任务系统、营销系统自己去 MQ 里面订阅消费。订阅消息的系统如果宕机了,可以对消息进行重新消费,注册系统不用维护调用其他系统的代码了。

       2. 一旦有新的系统需要接收注册信息时,直接订阅 MQ 就行了,也不再需要注册系统调用新的系统了。

       通过 MQ 就将消息的生产者(注册系统)和消费者(推送系统、任务系统、营销系统)充分解耦。

  • 异步

       从用户注册到注册系统落库假设需要 10ms,注册系统调用推送系统、任务系统、营销系统都需要 100ms,这样注册给用户返回的是 310ms,注册体验会相对差一点,如果引入 MQ,假设注册系统发送到 MQ 的时间是 10ms,那这块给用户返回的时间就是20ms。

  • 削峰

       假设注册系统直接调用推送系统或者任务系统,但是注册系统在某一个高峰期能承受 10K 的 QPS,但是下游服务如推送系统、任务系统等都扛不住这么大的 QPS ,那么下游很容易被打挂。

       这个时候如果接入 MQ,订阅系统可以按照自己的能力比如 3K 每秒从 MQ 里面拉取消息,这样就能保证订阅系统不被打挂,MQ 只是在高峰期有堆积,高峰期之后订阅系统将会把消息完全消费掉。

总结下来消息队列能起到解耦、异步、削峰作用。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值