准备做一个直播应用,直播间有抢红包的功能,请问有什么高并发的设计方案?

提问者:帅平 问题分类:微服务
准备做一个直播应用,直播间有抢红包的功能,主要的业务是实现红包雨的功能,1秒钟内,单个用户可能会有4到5次抢红包的请求,需要考虑百万用户在线,请问有什么好点的高并发设计方案吗?
1 个回答
曾经多难忘
曾经多难忘
相关的技术方案有:
1、红包金额提前计算好并加载到redis中:在创建活动时,运营可配置红包总金额以及红包总个数,系统在创建活动时就会提前计算出各个红包的金额并存储到redis中,相当于计算前置。
2、客户端限流:在接口设计时,我们就预埋了一个限流因子参数,可由服务端动态控制客户端的限流比例,在通知客户端抢红包的接口中,我们根据当前的在线人数以及红包总个数动态算出限流因子,控制最多只有10W QPS的请求能发到服务端。
3、服务端限流:根据服务器数量以及红包总数量提前计算出每秒令牌的生成数量,基于guava的RateLimiter进行二次限流。
4、前面3步基本把并发降下来了,再通过lua脚本保证原子性即可,抢红包的结果也是在活动结束后再异步刷新到数据库。
发布于:2个月前 (04-02) IP属地:四川省
我来回答