抢红包设计(预分配法)
大致设计
1 2 3 4 | 常见软件QPS Nginx 单机理论能达到30w左右的QPS Redis 单机可以承受8W+的QPS,理论可以达到10wQPS Mysql 单机只有4k左右的QPS |
-
创建红包
红包拆分算法
-
- 二倍均值法(每个人获得的红包金额差不多)
1 2 3 4 5 6 | math.Max(0.01, money / member * 2) 假设有10个人,红包总额10元。 10/10X2 = 2, 所以第一个人的随机范围是(0.01,2 ) 假设第一个人随机到 1 元,那么剩余金额是 10-1= 9 元。 9/9X2 = 2, 所以第二个人的随机范围同样是(0.01,2 ),平均可以抢到1元。 |
-
- 随机数线段切割法(抽到的红包面额差距很大)
1 2 3 4 | 当n个人一起抢总金额为m的红包时,我们需要做n-1次随机运算,以此确定n-1个切割点。 随机的范围区间是[1, m-1]。 开始1和结束是m-1的原因是最少分配1分钱(这里1表示一分) [0,1]一段,[m-1,m]一段(最小的情况) |
-
抢红包
适用场景
- 抢红包活动不多,整个系统会消耗大量Redis内存
- QPS不高,上述系统理论可支持十多万QPS(Redis部署为集群模式,红包数据可散列存储到不同分片提升QPS)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律