由某东抢购商品,联想到一个解决服务器大并发的方法。

2022-12-09 16:07:21 +08:00
 tool2d
举个例子,如果有 100 万人早上 10 点同时抢货,而备货数量只有 1 万,那么注定有 99 万人的服务器抢购提交,是无效提交。

与其让 100 万个并发流入进来,造成网络阻塞,不如直接本地生成一个 100 之类伪随机数,把 90%的人,直接拒之门外。剩余 10%的幸运儿,按照固定 QPS 放进来抽奖,一直到 1 万备货,全部发完为止。

这样别说百万并发,APP 对面突发性千万并发,都能轻松应对。当然不能让那些抢不到的人看出破绽,本地模拟提交页面还是需要的,比如让人误以为正在网络提交,以免打击用户抢购积极性。
2970 次点击
所在节点    编程
27 条回复
Jooooooooo
2022-12-09 23:50:26 +08:00
很正常的操作, 这种参加人数远远超过商品数量的都是在各个环节去丢弃流量.

前端做被人发现会有 pr 风险就拿到后端做, 这种本地随机数判断性能损耗非常小, 可以抗很大的流量.
autoxbc
2022-12-10 01:43:57 +08:00
我看到「限量抢购」都是直接关闭页面,看到支付方式「随机立减」马上换另一种支付
fackVL
2022-12-10 04:03:53 +08:00
网关随机过滤一下就好
eason1874
2022-12-10 04:59:01 +08:00
恭喜你,你成功悟出来了行业内人尽皆知的秘密 😂

现在比较新的做法是在发给前端的 JWT 里,夹带用户评级,网关在 JWT 鉴权的同时判断用户等级,等级未达标的直接失败,连参与随机的机会都没有。同时也有白名单用户,只要在特定时间内,必定成功
cnkuner
2022-12-10 08:51:51 +08:00
一般放网关随机丢弃的,前端不搞,容易被人看出来,也不安全。
jackma0571
2022-12-10 11:02:30 +08:00
放进来,库存怎么控制,我下单了你锁不锁库存,我超过多少时间没付款,你释不释放,那是不是一直有人在等,要等多久
needpp
2022-12-10 12:21:44 +08:00
换个思路,原价卖,随机返

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/901364

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX