预约口罩抢不到怎么回事


预约口罩抢不到怎么回事

文章插图
对于一般的业务,我们通常使用的是直筒型的架构设计,也就是有100个人在前端发起抢口罩,就有100个人请求到后台,100个请求到数据库 。但是对于这种秒杀这么巨量的业务,海量的查询往往可以让数据库崩溃,所以,我们一般使用漏斗型的架构设计 。什么是漏斗型的架构设计呢?就有100万人同时发起抢口罩的请求,可能只有10万人请求到逻辑层,逻辑层再过滤掉一部分人,服务层再过滤掉一部分人,最后只有1万个请求到达数据库,他们都是幸运儿,最终抢到了口罩 。
那么怎么去实现这样的功能呢?通常我们会在客户端上面就加上保护,首先是防止用户多次点击,如果用户拼命地点击购买按钮,那么对后台的压力是非常巨大的,所以,我们通常会在用户多次点击的时候,实际只往后台发送一次请求 。接下来,我们可以按照一定的百分比,让客户端直接返回失败,或者提醒用户在排队中 。低级一点的做法,就是在客户库或者页面生成一个随机数,例如这次口罩的备货只有预约人的千分之一,那么我们可以生成一个小于1000的数,如果生成的数小于5,那么就向后台发起请求,否则直接失败 。高级一点的做法,是在cnd这样的边缘节点上部署一些简单的随机数服务,让一定概率的请求到真正的服务后台 。这样,1000个人抢口罩,实际上就只有5个人真正到后台去抢购了 。

【预约口罩抢不到怎么回事】

    推荐阅读