模块七 - 王者荣耀商城异地多活架构设计
王者荣耀业务背景
业务数据
2020.11 月公布数据,全年日均活跃 1 亿,注册玩家数 6 亿,最高同时在线 100 万。
业务功能
微信、QQ 账号登录
商城:
英雄、皮肤、碎片、礼物、其他道具等交易购买
积分|砖石夺宝、优惠等活动
交易的币种:游戏金币、钻石、点券,都可以用来购买
关键业务约束
登录用户才能购买
一个用户可以在多个区服登录,各区服的英雄、皮肤、道具等权益信息都是独立的
设计分析
业务分级
商城最主要的核心业务就是账号登录、微信 QQ 支付购买点券、游戏金币钻石购买英雄皮肤
数据分类
登录
1. 依赖 QQ 和微信账号授权登录,本身无需登录信息;
2. 微信和 QQ 授权登录会返回给王者荣耀全局唯一 RoleID;
3. 王者荣耀只需要记录 RoleID 对应的区服信息,区服数据只会新增不会修改。
交易
RoleID:登录后就不会变
交易 ID: 每次发生交易时创建,全局唯一,不会修改,这里的交易 ID 指:点券充值单 ID、点券|金币|砖石购买虚拟商品记录订单 ID
商城里点券、金币、钻石购买的皮肤、英雄、道具维度:用户+区服
其中皮肤、英雄只能购买一次
其他道具可以购买多次
虚拟物品没有库存,没有物流信息,支付成功即可获取虚拟物品。
数据同步
RoleID 和区服对应关系,只会新建不会修改,数据库同步即可
交易记录和 RoleID、区服对应关系,只会新建不会修改,数据库同步即可,记录 ID 通过算法(比如 雪花算法)生成
权益信息(点券、英雄、皮肤、道具)与 RoleID、区服对应关系,强一致性,数据库同步即可
异常处理
交易记录、购买的英雄皮肤没有同步到异地机房,用户在账号的对应区服下发现没有,怎么办?
适当容忍,提供客服联系入口,通过相关道具礼物作为补偿
微信、QQ 服务有问题,怎么办
挂公告:系统停机维护,事后通过道具礼物补偿
评论