哔哩哔哩直播通用奖励系统揭秘

哔哩哔哩直播通用奖励系统揭秘

💡 原文中文,约6300字,阅读约需15分钟。
📝

内容提要

Bilibili的直播平台通过推出各种玩法来吸引观众和主播,迅速发展。设计了一个通用奖励系统,以支持不同的奖品类型和分发场景。本文介绍了直播奖励系统的技术架构。

🔎

延伸解读

快慢通道隔离:保障高优业务时效

奖励系统根据业务能级划分快慢通道。高优业务如消费电池参与活动,对时效敏感,可选择Fast通道,使用高可用MQ(databus)并分为高、中、低三个二级队列,避免低优业务如观看直播获得抽奖券的发放量冲击。慢通道则按奖品类型分配Redis list队列,便于扩展但可用性稍弱,需离线补偿。这种设计平衡了资源与体验。

幂等与重试:确保不超发、不漏发

系统通过全链路幂等防止超发:上游消息携带source和msg_id,写库时使用DB组合唯一键(source+msgId+awardTypeId+awardId+uid)去重,下游提供幂等接口。针对漏发,设计层层重试:二级队列消费失败后写入三级延迟队列,基于Redis zset进行指数退避重试(2^0s至2^12s,共13次约2小时),若仍失败则人工介入。离线补偿定时捞取未完成记录重试,最大程度保证可达性。

配置与接入:降低业务方成本

奖励配置通过可视化面板完成,包括包裹ID、基本属性、扩展属性和显示配置。服务端通过接口告知配置后台渲染方式,新增奖品类型无需后台开发。业务接入采用标准化消息格式,包含source、msg_id、uids、package_id等字段,支持单条消息给多人发奖,并通过extra_data扩展动态数量、动态直播间等场景。新奖品类型接入只需实现标准发放和回收接口,系统自动适配下游差异。

❓

Q&A

哔哩哔哩的直播奖励系统是如何设计的?

哔哩哔哩的直播奖励系统设计了通用奖励系统,支持多种奖品类型和发放场景,满足不同业务需求。

奖励系统的发放流程是怎样的?

奖励发放流程包括业务上游、一级队列、二级队列和发放下游四个模块,确保发奖的高效性。

奖励系统如何确保不超发和不漏发?

系统通过幂等设计和重试机制,确保奖励不会重复发放或漏发,保障用户体验。

奖励系统支持哪些类型的奖品?

奖励系统支持权益类奖品(如头像框、头衔)和价值类奖品(如电池、道具),各类奖品有不同的配置属性。

如何接入新的奖品类型到奖励系统?

系统设计了标准的奖励发放和回收接口,便于快速接入新的奖品类型,提升效率。

奖励系统的架构包括哪些层次?

奖励系统架构包括接入层、配置层、服务层和存储层,各层负责不同的功能和任务。

🏷️

标签

➡️

继续阅读