从前面的14篇秒杀相关的文章我们已经完全的实现了一个秒杀系统,但是这个大家可以看的出来,主要还是同步的请求,这种架构适合一些小型秒杀系统或者一些中型秒杀系统,如果是这两天双11的淘宝天猫这种大型系统,一般来说这种同步的架构就不适合了。只能采用异步的方式来降低整个系统的压力。下面我们来介绍下异步的使用。
先来个异步的流程图:
异步的整个流程如下:
1、判断活动是否已经结束,如果结束,根据token信息插入错误信息,客户端会轮询查询到。 2、判断当前请求是否在黑名单内,如果在,根据token信息插入错误信息,客户端会轮询查询到。 3、扣减缓存中的秒杀商品的库存数量,如果扣减失败,根据token信息插入错误信息,客户端会轮询查询到。 4、所有验证都成功,则根据token信息插入正确信息,客户端会轮询查询到。
所以基于我们这个项目的话,我们可以直接进行切割,那么从哪切呢? 如下图:
我们可以从这个地方切,也就是在接口里面直接进行逻辑判断,然后在原先执行分布式事务下单的地方进行切割,把原来分布式事务下单这块变成发送mq消息,然后在后端起一个消费者来执行分布式事务,额外的提供一个对外查询的接口。这样子我们的同步就可以切割成异步了,同时整个web项目的压力就会小很多,可以承接更多的请求。
总体来说,异步就是同步的某种方式切割,采用不同的方式,那么对应的逻辑会有一些变化。
还没有评论,来说两句吧...