使用队列解耦的架构方案

本文探讨了在分布式系统中使用队列解耦的重要性。通过举例说明,不使用队列时,系统各模块之间的耦合度较高,容易受到网络、性能等因素影响。引入队列后,实现了更低的耦合、更好的性能和容错能力,但也面临最终一致性、消息丢失和重复消息等问题。文章还提醒注意不当消息和分发,以及队列产品的选择,如RabbitMQ、RocketMQ和Kafka。
摘要由CSDN通过智能技术生成

搞技术的对“高内聚,低耦合”这几个字应该很熟悉,这是程序设计的一个基本原则,无论对于分布式系统,有几个模块的单体程序,以及程序中具体的类、类中的方法,都可以拿来讲。这个原则本质上是“分治法”,将一个大问题分解为一个个的小问题,然后各个击破,整个问题就解决了。相信大家都很明白了,这里对这个原则就不过多解释了。

为什么要使用队列解耦?

让我们来看看不使用队列的情况下如何解耦的:

原始需求

假设有一个商城系统,业务上划分为用户、订单、财务、消息、仓储几个模块(模块的划分实际上也是解耦设计的重要部分,但非这篇文章的关注点),这几个模块是分布式部署的,用户在下单成功以后要做这么几件事:通知用户下单成功、通知仓库发货、给财务生成销售凭证,那么就要在下单成功的程序逻辑中去调用消息、仓储、财务模块的接口。

对于一个不经常变动、吞吐量也不是很大的系统,做到这一步也就可以了。

新增需求

假设商城最近又上线了一个优惠券的功能,需要在下单成功后给用户发优惠券,这时候怎么去做呢?一个很直接的想法就是修改下单成功的程序逻辑,增加一个调用发优惠券接口的处理。

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农老K

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值