淘天(范导):一分钟一千万:天猫双十一背后的互动游戏引擎
一分钟一千万天猫双十一背后的互动游戏引擎范淑宾(范导) 淘天集团 高级技术专家www.top100summit.com范淑宾(花名:范导)高级技术专家“阿里17年专注各个核心系统技术研发:•参与Alibaba国际站会员系统、小二工作台的设计与维护;•参与Aliexpress速卖通联盟平台建设,覆盖超40%的平台订单;•淘天集团互动基础平台负责人、天猫双十一互动游戏架构师,完成整个互动基础平台从0到1的建设,稳定支撑集团多个BU的上百个互动类业务场景。”讲师简介www.top100summit.com• 互动游戏的背景与挑战• 核心实践: 从不确定中找确定性• 核心实践: 规则调控->观测预判->快速扩容• 核心实践: 降本提效• 天猫双11幻想岛总动员成果展示• 总结与启示目录www.top100summit.com• 领域驱动设计(DDD),在超高QPS、超大数据量业务场景下的实践。• 游戏模式、玩法模型的抽象实践。• “反微服务化”,收敛资源、减少依赖,从IO密集转向计算密集。• 充分利用存储特性实现高并发、强一致兼得,可灵活扩展和无感替换的设计。亮点介绍www.top100summit.com互动游戏的背景与挑战www.top100summit.com“互联网经验告诉我们,高频场景的增长潜力始终高于低频场景,如何从低频转向高频,是所有经营者竭尽全力地追求。”互动?游戏?互动游戏?—— 雷军《小米创业思考》天猫双11大促互动游戏虚拟资产平台权益做任务、升级、拉人助力积分、等级红包、卡卷游戏行为20192021低频高频优惠券游戏签到吃饭购物2023www.top100summit.com大促互动游戏的挑战流量不确定每次都是全新玩法,用户行为很难预测。不同玩法导致不同的流量形态,没有一个稳定可预估的流量模型。研发周期短往往活动前一段时间才确定具体玩法,留给产品研发的时间比较短,导致有的事情无法做得很精细化。用户体验敏感全民大促前的暖场,内部和外部的关注度很高,游戏玩法、响应的及时性都与用户利益相关,传统游戏里的问题都会在这里放大。高QPS和高数据一致性游戏和营销的结合体,用户游戏数据往往与权益相关,游戏数据不可丢失,这一点与传统游戏区别很大,但QPS极高。大促互动游戏本质:多人在线实时游戏和大型营销活动的结合体www.top100summit.com破题思路资源收敛,建设可观测、可快速扩容能力流量不确定无法准确预估无法快速扩容沉淀领域模型,建设可扩展的游戏引擎玩法不确定依赖范围广远程IO频繁并发锁粒度粗研发周期短建设容器动态扩缩容能力成本高波峰波谷总是为波峰准备容器依赖范围广www.top100summit.com从不确定中找确定性——玩法不确定www.top100summit.com核心实践 —— 确定性的抽象拉人助力掷骰子占地升级能量站……战斗能力获得道具扣减道具使用道具道具能力玩家战队匹配房间组织能力积分红包资产能力序列化协议关系型存储实时通知异步消息基础能力组队匹配PK结算生成下个场次奖励瓜分流程的确定性——虽然具体玩法不同,但大促游戏的流程是有章可循的功能的确定性——虽然具体玩法不同,但仍有共同的功能模块道具能力战斗能力组织能力资产能力基础能力用户视角平台视角……KV型存储从不确定的玩法中抽象确定的东西,沉淀成可复用的模型与框架(IGF),可极大提升研发效率www.top100summit.com核心实践 —— 面向领域设计实体、领域服务:战斗能力组织能力道具能力资产能力用户视角平台视角聚合、聚合根:仓储:面向实体及领域服务研发,屏蔽底层数据存取、异常流处理等细节,专注业务逻辑实现。核心游戏数据聚合,高QPS下数据强一制;系统链路收敛,系统扩缩容更灵活;大幅度减少IO,提升性能与稳定性。多模式存储业务无感按需切换;多分区存储集群,存储上限成倍预留;精控制数据并发锁范围,提升用户体验。自研协议MessagePack长连接通道KV型存储(Redis等)www.top100summit.com核心实践 —— 领域实体设计2021双十一喵糖总动能量站升级场景示例伪代码贫血模型充血模型VS// 扣资产或加等级失败了怎么办???// 高流量下的IO放大怎么办???Handler 怎么设计???www.top100summit.com核心实践 —— 领域服务扩展设计游戏战斗逻辑中不变的部分:每个游戏事件都有相同的执行流程和模式。变化的部分:每个游戏事件都有独立的执行逻辑和结果。实体查询道具检查道具扣减新增道具游戏状态更新保存实体新增奖励不变的战斗流程(使用道具)变化的战斗逻辑检查玩家骰子道具扣减玩家骰子道具更新战队兵力道具更新房间地图信息面向领域的喵糖总动员PK处理逻辑道具效果处理2021双十一喵糖总动员PK示例伪代码获取房间实体保存房间实体www.top100summit.com核心实践 —— 鱼(性能)和熊掌(一致性)如何兼得 核心策略:面向领域、减少IO、数据聚合2021双十一喵糖总动员——投骰子处理流程最少8次远程IO(红框部分)业务研发花费大量精力做服务、存储的编排获取房间实体检查玩家骰子道具扣减玩家骰子道具更新战队兵力道具更新房间地图信息保存房间实体面向领域的喵糖投骰子处理流程只需2次存储IO(红框部分)纯内存操作专注游戏逻辑红框为产生IO的操作查询玩家查询队伍查询房间(分布式)锁房间扣除用户骰子游戏逻辑计算(兵力、地块状态)保存房间解锁房间www.top100summit.com核心实践 —— 聚合的力量如何识别聚合根?如果一个聚合只有一个实体,那么这个实体就是聚合根;如果有多个实体,那么我们可以思考聚合内哪个对象有独立存在的意义并且可以和外部直接进行交互。房间战队战队玩家玩家玩家玩家加队匹配单人阶段聚合根预组队阶段聚合根PK 阶段聚合根大促PK游戏模型聚合根及迁移时机极简IO:原子性:高性能:聚合根纬度的数据,理论上只需要一次IO即可取得整个PK房间中所有战队及所有玩家的数据;同时,也只需要一次IO便可将所有玩家、战队的数据变更写回到存储中去。所有对聚合根实体的业务逻辑操作,全部在内存中完成,实现战斗逻辑无需关注存储细节,高效、高性能。聚合根数据写入单次可完成,天然具备原子性,多实体数据变化不存在数据不一致问题。www.top100summit.com核心实践 —— 聚合的问题1聚合根的问题——数据大小互动大促游戏以多人PK模式为主,一个房间的玩家数大多在2~20个之间,中间有着10倍的差距,聚合后的数据大小对存储运行时性能有很大的影响。性能劣化:带宽瓶颈:无论是关系型存储还是KV型存储,性能最优的单行或单KEY数据大小都会有建议大小。带宽是存储中比较昂贵和有限的资源,从单例看带宽资源非常有限,过大的数据体积会高QPS下会导致带宽打满。JSON 序列化结果(107B)定制序列化协议优化先声明再序列化Entity实体结构声明定制序列化结果(52B)数据大小减小51%每个实体结构声明全局唯一www.top100summit.com核心实践聚合根的问题——并发锁粒度大玩家数据聚合在房间中后,为了保证个人数据的修改不会产生相互覆盖的问题,那么势必要对整体房间加锁。整体读取
淘天(范导):一分钟一千万:天猫双十一背后的互动游戏引擎,点击即可下载。报告格式为PDF,大小3.83M,页数27页,欢迎下载。