[System Design] Message Queue

本文探讨了消息队列(MQ)在系统设计中的重要性,包括解耦、异步处理、削峰填谷和细粒度扩展能力。通过MQ实现应用组件之间的解耦,提高系统性能,允许异步通信以优化数据流。此外,MQ还能帮助系统应对高并发峰值,避免直接冲击数据库导致崩溃。文章还讨论了确保消息不丢失的策略,如RabbitMQ的确认机制和避免消费者丢消息的方法,以及如何保证消息重复消费的幂等性。
摘要由CSDN通过智能技术生成

Message Queue

为什么使用消息队列

https://aws.amazon.com/message-queue/benefits/

解耦

Message queues remove dependencies between components and significantly simplify the coding of decoupled applications. Software components aren’t weighed down with communications code and can instead be designed to perform a discrete business function.

异步 (weak consistency)

再来看一个场景,A 系统接收一个请求,需要在自己本地写库,还需要在 BCD 三个系统写库,自己本地写库要 3ms,BCD 三个系统分别写库要 300ms、450ms、200ms。最终请求总延时是 3 + 300 + 450 + 200 = 953ms,接近 1s,用户感觉搞个什么东西,慢死了慢死了。用户通过浏览器发起请求,等待个 1s,这几乎是不可接受的。
在这里插入图片描述
一般互联网类的企业,对于用户直接的操作,一般要求是每个请求都必须在 200 ms 以内完成,对用户几乎是无感知的。

如果使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值