架构实战模块 7
王者荣耀商城异地多活架构设计
设计步骤一 业务分级
1.业务场景: 注册,登录(联合登录)、支付(微信钱包,QQ 钱包)、充值,商品浏览,商品购买
2.其中需要异地多活保障的核心业务识别为:
A.登录,支付,充值,商品浏览,商品购买。
设计步骤二 数据分类
用户信息关键数据:RoleID
依赖 QQ 和微信账号授权登录,本身无需登录信息;
微信和 QQ 授权登录会返回给王者荣耀全局唯一 RoleID;
王者荣耀只需要记录 RoleID 对应的区服信息,区服数据只会新增不会修改。
登录关键数据:Session (确保没有关键充值和交易信息存储在 session 域,则 session 为可丢失数据重新恢复即可)。
充值关心数据:点券余额,充值流水
1.点券余额需要做到强一致性
2.充值流水作为事务性数据,需要考虑事务合并,保证数据完整一致性。
商品关键数据:道具展示信息,道具上下架状态,道具购买次数限制,道具已购买次数
1.道具展示信息为纯静态信息,
2.道具上下架状态,道具购买次数限制可以作为静态信息。
3.道具已购买次数可以考虑做本地缓存,即超过可购买次数需要屏蔽该商品,对皮肤和英雄进行有且仅有购买一次的标识,已达到保证数据一致性目的。
设计步骤三 数据同步
设计步骤四 异常处理
微信、QQ、三方充值故障:发布维护公告
充值失败,充值点券未到账:人工客服介入,待系统恢复后合并事务检查最终结果
道具购买后无法使用:界面提示等待,人工客服计入,待系统数据同步后通知结果,适当补偿
架构图
RoleID 全量同步 → 其他用户数量从主服至备服、主区服至被区服进行各数据同步.......
评论