5、红包过期,剩余金额可能需要回退到发红包主账户下。 二、架构设计 1、发红包 (1)用哪种数据结构化? 用list。list中的元素和为红包总金额。 LPUSH list:red 20 30 20 20 10 (2)高并发,发红包是否要加锁,用什么锁? 不加锁。 2、抢红包 (1)抢红包是否需要加锁,用什么锁? 用list.pop,因为redis的命令本
另外一个作用就是对账,红包的订单和微信支付的订单需要对账,以保证最终资金的一致性;订单的数据和订单的 cache 需要做对账,以保证数据的完整性;订单数据和用户的收发记录需要对账,以保证用户列表完整性。 第二是异步化设计。如上图所示,微信红包的某些步骤不实时完成也不会影响用户对红包业务可用性的体验。比如拆红包...
带着以上问题,尝试设计一个小巧红包发放程序。 系统现有基座层面采用SpringCloud微服务技术框架,SLB负载,应用层面可以加多个应用节点,实现水平扩展,应用服务压力可以有效分解(应用服务基础架构方面基本固化,可改造空间有限); 而数据库集中式存储(目前使用阿里云Polardb一主多从),数据库暂无法实现水平扩展,所以数据库可能成为...
红包总金额1w元,如何分配才能让金额不超出这个数,如何保证最后一个人一定能抢到钱. 数据库表设计 红包信息表主要字段: 谁发的红包,发红包时间,红包总个数、总金额、剩余红包信息、最后一次被抢红包时间 CREATE TABLE `red_packet_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `red_packet_id` bigint(11...
(一)架构设计思路 从技术角度来看,要让一个原生适用于触摸屏操作系统的应用程序兼容键盘鼠标输入方式并非易事。为此,研发团队采用了模块化设计理念,将核心逻辑封装成独立组件供不同平台调用共享,同时通过虚拟DOM技术模拟触控事件从而达到最佳兼容效果。(二)安全性保障措施 考虑到资金交易过程中的敏感性,整个系统...
五、微信究竟怎么设计的抢红包? 按照正常的套路,抢红包最简单的办法不就是把红包的总钱数随机分给几个人么……但是微信偏不这么搞,就是一定要让第一个人抽到的钱只能在0.01元到20元之间。 对于5个人抢50块红包而言,20元是个什么数? 在一篇《微...
以下内容来源于QCon某高可用架构群聊天记录整理 背景:有某个朋友咨询微信红包的架构,在官方或非官方同学的解释和讨论中得出以下讨论内容,在此期间有多个同学发红包做现网算法测试。 抢红包过程 当有人在群里发了一个N人的红包,总金额M元,后台大概发生的事情如下: ...
群里有小伙伴咨询微信红包的架构,对于我来说,显然是不知道的,但是写一个相对高并发的抢红包案例还是完全可以的。 架构设计 业务流程 老板发红包,此时缓存初始化红包个数,红包金额(单位分),并异步入库。 抢红包,判断缓存剩余红包金额,剩余金额大于零则抢到红包,否则手慢了,红包派完了 拆红包,根据 redPacketId 获取...
红包机制设计:原因:微信抢红包机制的设计也直接影响到用户的体验。例如,“先到先得”的分配方式增加了抢红包的乐趣,但也可能导致用户在抢红包时出现卡顿。此外,延迟红包、裂变红包等多种形式对服务器的压力和用户体验也有不同的影响。影响:虽然延迟红包可以在一定程度上缓解服务器压力,但也会导致用户...
例如:发100块钱,总共10个红包,那么平均值是10块钱一个,那么发出来的红包的额度在0.01元~20元之间波动。 当前面3个红包总共被领了40块钱时,剩下60块钱,总共7个红包,那么这7个红包的额度在:0.01~(60/7*2)=17.14之间 高并发下 如何保证红包不被更多人抢走 ...