1 个回答
相关的技术方案有:
1、红包金额提前计算好并加载到redis中:在创建活动时,运营可配置红包总金额以及红包总个数,系统在创建活动时就会提前计算出各个红包的金额并存储到redis中,相当于计算前置。
2、客户端限流:在接口设计时,我们就预埋了一个限流因子参数,可由服务端动态控制客户端的限流比例,在通知客户端抢红包的接口中,我们根据当前的在线人数以及红包总个数动态算出限流因子,控制最多只有10W QPS的请求能发到服务端。
3、服务端限流:根据服务器数量以及红包总数量提前计算出每秒令牌的生成数量,基于guava的RateLimiter进行二次限流。
4、前面3步基本把并发降下来了,再通过lua脚本保证原子性即可,抢红包的结果也是在活动结束后再异步刷新到数据库。
发布于:1年前 (2024-04-02) IP属地:四川省
我来回答
您需要 登录 后回答此问题!