消息队列_01 (为什么需要消息队列)

为什么需要消息队列

1.解决问题

 主要功能就是收发消息,但不仅仅是解决应用之间的通信问题

2.使用场景

2.1 异步处理

eg.
秒杀系统
流程:风险控制——库存锁定——生成订单——短信通知——更新统计数据
使用消息队列服务器只需要先实现风控和库存锁定

在这里插入图片描述
好处
更快返回结果;减少等待,提升系统功能

2.2 流量控制

健壮框架设计思路: 使用消息队列隔离网关和后端服务,以达到流量控制和保护后端服务的目的。

设计优点.: 能根据下游的处理能力自动调节流量,达到“削峰填谷”的作用

令牌桶控制流量:
在这里插入图片描述

2.3 服务解耦

3.总结

消息队列的本质是将同步处理转成异步处理,异步会带来相应的好处,但也有弊端。
Pros:
1.可在模块、服务、接口等不同粒度上实现解耦
2.订阅/消费模式也可在数据粒度上解耦
3.可提高系统的并发能力,集中力量办大事(同步部分),碎片时间做小事(异步部分)
4.可提高系统可用性,因为缓冲了系统负载

Cons:
1.降低了数据一致性,如要保持强一致性,需要高代价的补偿(如分布式事务、对账)
2.有数据丢失风险,如宕机重启,如要保证队列数据可用,需要额外机制保证(如双活容灾)

总体来说,消息队列的适用场景还是很多的,如秒杀、发邮件、发短信、高并发订单等,不适合的场景如银行转账、电信开户、第三方支付等。关键还是要意识到消息队列的优劣点,然后分析场景是否适用则会水到渠成。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值