您的位置:首页 > 业内资讯 > 微信红包体系设计分析

微信红包体系设计分析

来源:产品100干货速递 | 时间:2015-09-25 13:59:53 | 阅读:88 |  标签: 产品100干货速递   | 分享到:


2015年的红包的拆和抢是分离的,需要点两次,因此会出现抢到红包了,但点开后告知红包已经被领完的状况。进入到第一个页面不代表抢到,只表示当时红包还有。详见本文Jinkey在第五部分的说明。


⑩红包的设计


答:微信从财付通拉取金额数据过来,生成个数/红包类型/金额放到redis集群里,app端将红包ID的请求放入请求队列中,如果发现超过红包的个数,直接返回。根据红包的逻辑处理成功得到令牌请求,则由财付通进行一致性调用,通过像比特币一样,两边保存交易记录,交易后交给第三方服务审计,如果交易过程中出现不一致就强制回归。


?并发性处理:红包如何计算被抢完?


答:cache会抵抗无效请求,将无效的请求过滤掉,实际进入到后台的量不大。cache记录红包个数,原子操作进行个数递减,到0表示被抢光。财付通按照20万笔每秒入账准备,但实际还不到8万每秒。


?如何保持8w每秒的写入?


答:多主sharding,水平扩展机器。


?查询红包分配,压力大不?


答:抢到红包的人数和红包都在一条cache记录上,没有太大的查询压力。


?一个红包一个队列?


答:没有队列,一个红包一条数据,数据上有一个计数器字段。


?每领一个红包就更新数据么?


答:每抢到一个红包,就cas更新剩余金额和红包个数。


?红包如何入库入账?


数据库会累加已经领取的个数与金额,插入一条领取记录。入账则是后台异步操作。


?入帐出错怎么办?比如红包个数没了,但余额还有?


答:最后会有一个take all操作。另外还有一个对账来保障。


5交互


5.1前后端交互时序


(1)绑定银行卡


微信红包体系设计分析


(2)收发群手气红包


微信红包体系设计分析


① 发起红包操作


② 银行扣款逻辑,不成功则返回,成功则进行下一步


③ 请求将红包写入数据库某个set,并获取红包ID返回客户端


④ 长连接通知客户端成功


⑤ 其他用户接收到红包消息,点开,拆。由于用户操作的速度远远低于计算机处理速度,所以这打开和拆开的分离,相当于设置了一道缓冲。另外,点开之后,不直接获取金额,而是先读取红包是否领完的缓存,如果没领完则显示【拆】的按钮。点击【拆】之后再次访问缓存看红包是否领完,如果没领完,则请求服务器内存计算随机金额并返回客户端,然后异步写入数据库。

小编推荐阅读

好特网发布此文仅为传递信息,不代表好特网认同期限观点或证实其描述。

相关视频攻略

更多

同类最新

更多

扫二维码进入好特网手机版本!

扫二维码进入好特网微信公众号!

本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件[email protected]

湘ICP备2022002427号-10 湘公网安备:43070202000427号© 2013~2025 haote.com 好特网