5、红包过期,剩余金额可能需要回退到发红包主账户下。 二、架构设计 1、发红包 (1)用哪种数据结构化? 用list。list中的元素和为红包总金额。 LPUSH list:red 20 30 20 20 10 (2)高并发,发红包是否要加锁,用什么锁? 不加锁。 2、抢红包 (1)抢红包是否需要加锁,用什么锁? 用list.pop,因为redis的命...
另外一个作用就是对账,红包的订单和微信支付的订单需要对账,以保证最终资金的一致性;订单的数据和订单的 cache 需要做对账,以保证数据的完整性;订单数据和用户的收发记录需要对账,以保证用户列表完整性。 第二是异步化设计。如上图所示,微信红包的某些步骤不实时完成也不会影响用户对红包业务可用性的体验。比如拆红包...
架构流程 架构设计 老板发红包,此时缓存初始化红包个数,红包金额(单位分),并异步入库。 抢红包,判断缓存剩余红包金额,剩余金额大于零则抢到红包,否则手慢了,红包派完了 拆红包,根据redPacketId获取分布式锁,如果获取到锁,红包个数减一,如果剩余红包个数大于零抢红包成功、否则失败。成功则计算红包金额,缓存总红包金...
一、架构( 南北分布 ) 1、订单层南北独立体系,数据不同步 用户就近接入,请求发红包时分配订单南北,并在单号打上南北标识。抢红包、拆红包、查红包详情列表时,接入层根据红包单号上的南北标识将流量分别引到南北系统闭环。根据发红包用户和抢红包用户的所属地不同: 1) 深圳用户发红包,深圳用户抢:订单落在深圳,...
五、微信究竟怎么设计的抢红包? 按照正常的套路,抢红包最简单的办法不就是把红包的总钱数随机分给几个人么……但是微信偏不这样,就是一定要让第一个人抽到的钱只能在0.01元到20元之间。 对于5个人抢50块红包而言,20元是个什么数?...
带着以上问题,尝试设计一个小巧红包发放程序。 系统现有基座层面采用SpringCloud微服务技术框架,SLB负载,应用层面可以加多个应用节点,实现水平扩展,应用服务压力可以有效分解(应用服务基础架构方面基本固化,可改造空间有限); 而数据库集中式存储(目前使用阿里云Polardb一主多从),数据库暂无法实现水平扩展,所以数据库可能成为...
微信红包设计流程 依照发红包,红包拆分,抢红包的流程来涉及整个红包流程,采用什么数据结构进行红包设计,由于抢红包,是高并发的,并且响应也要及时,所以采用Redis非关系数据库来设计,是比MySQL好,主要Redis处理每一个命令是单线程,原子操作,无需加锁。 发红包:一个红包会被拆分成多个小红包(金额),比如100块拆分成:20...
如果对环境搭建不熟悉的话,可以看一下:Python + Appium 自动化操作微信入门和我用 Python 找出了删除我微信的所有人并将他们自动化删除了。 3. 实现 接下来我们开始手动敲代码,下面一起来看一下具体实现。 首先看一下配置信息,代码实现如下: 代码语言:javascript ...
针对实验,记者请教了浙江大学计算机科学与技术学院博士生杨重骐,他向记者推荐了《微信红包的架构设计简介》一文,记者从中了解到一些微信抢红包的规律。 规则:每个人能抢到的金额服从“0.01到2倍剩余均值”之间的随机分布。 均值:不论先抢后抢,均值都是一样标准差:后抢的标准差更大,可能抢到超级大红包,也可能抢到超...
2019-03-04 11:20 −微信红包的架构设计简介: 概况:2014年微信红包使用数据库硬抗整个流量,2015年使用cache抗流量。 1、微信的金额什么时候算? 答:微信金额是拆的时候实时算出来,不是预先分配的,采用的是纯内存计算,不需要预算空间存储。。 采取实时计算金额的考虑:预算需要占存储,实时效... ...