高并发之消息队列

简单模型

在这里插入图片描述
比如一个接口处理短信发送,如果没处理完就可以放入消息队列;然后等待接口处理,如果接口处理短信发送失败则可以再次放入消息队列,减少尝试的次数和占用的线程,再次进行处理。

消息队列的特性

  • 业务无关:只做消息分发
  • FIFO:先投递先到达
  • 容灾:节点的动态增删和消息的持久化
  • 性能:吞吐量提升,系统内部通信效率提高

为什么需要消息队列

  • 【生产】和【消费】的速度或稳定性等因素不一致

举几个例子

  1. 业务系统触发短信发送申请,但短信发送模块速度跟不上,需要将来不及处理的消息暂存一下,缓冲压力。就可以把短信发送申请丢到消息队列,直接返回用户成功,短信发送模块再可以慢慢去消息队列中取消息进行处理。
  2. 调远程系统下订单成本较高,且因为网络等因素,不稳定,攒一批一起发送。调远程系统下订单成本较高,且因为网络等因素,不稳定,攒一批一起发送。
  3. 任务处理类的系统,先把用户发起的任务请求接收过来存到消息队列中,然后后端开启多个应用程序从队列中取任务进行处理。任务处理类的系统,先把用户发起的任务请求接收过来存到消息队列中,然后后端开启多个应用程序从队列中取任务进行处理。

消息队列的好处

  • 业务解耦
    简单讲就是一个事务只关心核心的流程,而需要其它系统但不是那么重要的事情有通知即可,无需等待结果。基于消息模型,关心的是通知,而不是处理。
  • 最终一致性
    要么都成功,要么都失败。比如银行转账,A扣钱,B加钱,如果A成功B失败,A失败B成功,则
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值