抖音红包脚本,抖音抢福袋辅助器

首页 > 科技 > 作者:YD1662023-04-23 03:40:10

方案一也是最常见的思路,在用户领取时对数据库的红包进行加锁,然后扣减金额,然后释放锁完成整个红包领取。这个方案的优点是清晰明了,但是这种方案的问题会导致多个用户同时来领取红包时,会造成数据库行锁的冲突,需要排队等待,当排队请求过多时会造成数据库链接的浪费,影响整体系统的性能。同时在上游长时间未收到反馈导致超时,用户侧可能会不停重试,导致整体数据库链接被耗尽,从而导致系统崩溃。

红包预拆分方案

方案一的问题是多个用同时领取会造成锁冲突,解锁锁冲突可以通过拆分的方式,来将锁化成更细的粒度,从而提高单个红包的领取并发量。具体方案如下:

抖音红包脚本,抖音抢福袋辅助器(9)

在方案二中,对发红包的流程进行了一个改动,在发红包时会对红包进行一个预拆分的处理,将红包拆成多个红包,这样就完成了锁粒度的细化,在用户领取红包时从之前的争抢单个红包锁变为现在多个红包锁分配。从而在领取红包时问题就变为如何给用户分配红包,一种常用的思路是当用户请求领取红包时,通过 redis 的自增方法来生成序列号,该序列号即对应该领取那一个红包。但是这种方式强依赖 redis,在 redis 网络抖动或者 redis 服务异常时,需要降级到去查询 DB 还未领取的红包来获取序列号,整体实现比较复杂。

最终方案

在视频红包的场景中,整个业务流程是用户拍摄视频发红包,然后在视频推荐 feed 流中刷到视频时,才会触发领取。相对于微信和飞书这种群聊场景,视频红包中同一个红包的领取并发数并不会很高,因为用户刷视频的操作以及 feed 流本身就完成了流量的打散,所以对于视频红包来说,领取的并发数并不会很高。从业务的角度来看,在需求实现上,我们在用户领取完成后需要能获取到未领取红包的个数信息下发给用户展示,方案一获取红包库存很方便,而方案二获取库存比较麻烦。另外从系统开发复杂度和容灾情况看,方案一相对来说是一个更合适的选择。但是方案一中的风险我们需要处理下。我们需要有其他的方式来保护 DB 资源,尽量减少锁的冲突。具体方案如下:

抖音红包脚本,抖音抢福袋辅助器(10)

稳定性容灾

整个红包系统的容灾我们主要从接口限流,业务降级和多重机制保证状态机的推进这几个方式来进行的,下面对这几个方式分别介绍下:

抖音红包脚本,抖音抢福袋辅助器(11)

接口限流

接口限流是一种常见的容灾方式,用于保护系统只处理承受范围内的请求,防止外部请求过大将系统打崩。在进行接口限流前,我们首先需要和上下游以及产品沟通得到一个预估的红包发放和领取量,然后根据发放和领取量进行分模块地全链路的大盘流量梳理,下面是当时我们梳理的一个 b2c 全链路的请求量。

抖音红包脚本,抖音抢福袋辅助器(12)

上一页12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.