王者荣耀商城异地多活方案设计
一、业务背景
业务数据
2020.11 月公布数据,全年日均活跃 1 亿,注册玩家数 6 亿,最高同时在线 100w
业务功能
使用微信或者 QQ 账号登录
对战:匹配、排位、巅峰赛等
商城:购买英雄、皮肤、道具等
活动:领取各种奖励和道具
社区:各种攻略,视频等
关键业务约束
需要先使用微信或者 QQ 登录游戏才能进入商城
需要先调用微信钱包或者 QQ 钱包进行充值点券
用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买
买鲜花、改名卡之类的道具可以买多个
商品都为虚拟商品,不需要考虑库存(或者无穷大)和物流
二、业务分级
商城按照重要性,业务为登录、充值和购买。
三、数据分类
登录
依赖 QQ 和微信账号授权登录,本身无需登录信息
微信和 QQ 授权登录会返回给全局唯一 RoleID
充值
RoleID 登录后就不会变
点券余额需要全局一致性,充值只在归属区服完成
购买
RoleID 登录后不改变
订单信息每次都是新增,全局唯一,不会进行修改
唯一性的商品全局一致性
可以多个的商品保证最终一致性
四、数据同步
登录
RoleID 不会修改,数据库同步
充值
RoleID 和区服对应关系,只会进行新建,数据库同步
点券余额,需要保证强一致性,数据库同步
购买
RoleID 不会修改,数据库同步
订单信息,需要保证强一致性,数据库同步
唯一性商品,强一致性,数据库同步
可以多个商品的,采用数据库同步+消息队列同步
五、异常处理
登录
直接挂公告:系统停服维护
充值
直接挂公告:系统停服维护
购买
等待服务正常后进行购买
评论