队列

队列
  • 解决什么问题
  • 常见场景
解决什么问题
很多场景下、我们没必要保证强一致性、只需要保证最终一致性即可、
eg. 不用所有的结果都实时反馈给用户、不是所有的请求都必须一次性处理成功、不用所有的依赖方都处理完毕
此时、可以考虑使用消息队列

但要保证消息处理的有序性、及重复消费的幂等性、
常见场景
1. 异步处理: 使用队列的一个主要原因是异步处理、
           eg. 在用户注册成功后、需要发送注册邮件/新用户积分/优惠券等、缓存过期时、先返回过期数据、然后异步更新缓存、异步写日志等
           通过异步处理可以提升主流程响应速度、非主流程可以集中处理、还可以将任务聚合批量处理

2. 系统解耦: eg. 用户支付成功后、需要通知生产配送系统、发票系统、库存系统、推荐系统、
           搜索系统等进行业务处理,而未来需要支持哪些业务是不知道的、并且这些业务不需要实时处理、不需要强一致性、只需要保证最终一致性即可、所以、可以通过消息队列来解耦

3. 数据同步: eg. 想把MySQL的变更同步到redis、或者mongodb、或者让机房之间的数据同步、
            或者主从同步等、可以考虑使用databus、canal、otter等、使用数据总线队列可以保证数据修改的有序性

4. 流量削峰: 系统瓶颈一般在db上、比如 扣减库存、下单等、此时可以考虑将请求暂时放入队列、
            通过缓存+队列的方式将db流量进行削峰
            同样、对于秒杀系统、下单服务会是改系统的瓶颈、此时可以使用消息队列进行排队和限流、
            从而保证下单服务


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值