前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >微信抢红包实现方式

微信抢红包实现方式

作者头像
dys
发布2018-04-02 16:56:07
发布2018-04-02 16:56:07
3.9K0
举报
文章被收录于专栏:性能与架构性能与架构

抢红包流程

红包生成,数据库中创建红包信息,把红包的ID、数量放入缓存

用户抢红包,分为抢和拆两个动作,抢动作只是决定用户是否得到红包资格,如果抢到了,进入拆动作,此时实时计算红包的金额、记录红包流水记录、入账操作

红包金额的计算方法

随机,额度在0.01和剩余平均值*2之间

例如:发100块钱,总共10个红包,那么平均值是10块钱一个,那么发出来的红包的额度在0.01元~20元之间波动。

当前面3个红包总共被领了40块钱时,剩下60块钱,总共7个红包,那么这7个红包的额度在:0.01~(60/7*2)=17.14之间

高并发下 如何保证红包不被更多人抢走

抢的动作就是对红包剩余数量减一,这个减操作是原子的,缓存的CAS模式来保证操作的唯一性

CAS模式可以理解为:在我获取这个key之后,没人修改过它,我才能成功保存这个key的值

例如当前红包剩余数量为10,此时有很多人同时来抢,也就是要执行多个减一的操作,CAS模式保证了只有一个人能成功完成减一的操作

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-08-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档