系统优化之异步、解耦、削峰

首先思考一个问题,什么是异步,为什么我们需要异步?

异步即不需要同时行动或协调就能独立运行的流程。一个同步的进程,需要按部就班的去执行,一系列的接口调用,这样的操作会导致系统响应的变慢,用户体验变差,因此我们需要引入异步这个概念,使得各个流程可以独立运行,缩短系统的响应时间。

通过引入消息队列(MQ),以实现异步、解耦、削峰。通过消息队列转发消息给不同的流程,以实现不同流程的异步操作。以一个商城系统为例,用户在订单页面进行下单操作,支付成功后发生“支付成功消息”到消息队列,消息队列收到消息后发送通知到诸如物流、仓库、营销的流程去,各个流程异步运行。

解耦就是为了降低系统中不同部分之间的依赖性,使得各个组件能够相对独立地进行开发、维护和演化。其主要目标是减少组件之间的紧密耦合,以提高系统的灵活性、可维护性和可扩展性。一般来说,在进行异步改造引入消息队列的时候,就已经进行了解耦操作,对于一个传统的同步系统,物流系统跟订单系统直接练习,订单系统中下单之后就发送信息到物流系统通知发货,这样的模式,系统之间的依赖性是很高的,若物流系统发生故障,订单系统也无法使用。但是引入消息队列之后,若物流系统发生故障,订单系统还是可以照常下单,把消息发送到消息队列中,等物流系统修复之后,再根据消息队列中的消息进行发货。

削峰顾名思义就是限制高流量。在譬如“双11”的时候,大量的用户请求涌入,这个时候,极大可能会造成系统瘫痪。这个时候可以通过以下几个方法来进行削峰:
1、前端设置验证码,阻止作弊器刷单,由于每个用户对验证码和答题的应答时间都不同,这样就可以把用户的访问请求错开了;
2、库存预先写入Redis,基于Redis做高并发下的库存扣减,一旦库存不足,拒绝掉后续所有请求;
3、将下单消息通过mq来进行转发

posted @ 2025-09-01 17:43  努力成为OM大师  阅读(4)  评论(0)    收藏  举报