业务架构模块 7 作业
1.王者荣耀业务背景
【业务数据】
2020.11 月公布数据,全年日均活跃 1 亿,注册玩家数 6 亿,最高同 时在线 100 万。
【业务功能】
1. 使用微信或者 QQ 账号登录游戏; 2. 对战:例如匹配、排位、巅峰赛; 3. 商城:购买英雄、皮肤、道具等; 4. 活动:领取各种奖励和道具;
5. 社区:各种攻略,视频等。
【关键业务约束】
1. 登录用户才能对战;
2. 用户属于不同的区服,例如 Android 平台微信 22 区“刺客信 条”,同一微信 ID 可以加入多个区服,俗称“大号”、“小号”; 3. 不同区服用户可以一起对战。
2.设计步骤-数据分类
【商城】
RoleID:登录后就不会更改
点券 ID:用户新进一个区服时,就会在用户 RoleID 下该区服中创建点券,该 ID 全局唯一,不会修改,不同区服点券相互独立
点券余额:和点券 ID 绑定
点券充值记录:王者荣耀内需要在点券 ID 下保存充值记录,该记录只会新增,不会修改
订单 ID:订单 ID 和点券 ID 绑定,每次新建,全局唯一,不会修改
订单信息:订单信息包括订单 ID、商品 ID,购买数量,花费点券,由于虚拟商品实时交易,因此不需要记录订单状态,订单信息只会新建,不会修改
商品 ID:新增商品时自动生成,全局唯一,不会修改
商品信息:包括商品的名称、类型、描述、可购买数量等,与商品 ID 绑定
3.设计步骤-数据同步
【登录】
1. RoleID 和区服对应关系,只会新建不会修改,数据库同步即可。
【商城】
1.RoleID 和区服对应关系只会新增,不会修改,数据库同步即可
2.点券 ID 在上一步中根据 RoleID 和区服 ID 通过算法自动生成,全局唯一,无需同步
3.点券余额需要保证分布式一致性,使用数据库同步
4.点券充值记录只会新增,不会修改,使用数据库同步(备注:也可以为每条充值记录生成全局唯一 ID,使用消息队列同步,通过 ID 确保幂等性)
5.订单 ID 每次新建,不会修改,通过数据库同步
6.订单信息每次新建,不会修改,通过数据库同步,同时由于包含全局唯一的订单 ID,也可通过消息队列同步
7.商品 ID 每次新建,全局唯一,不会修改,通过数据库同步
8.商品信息存在修改,通过数据库同步
4.设计步骤-异常处理
【商城】
1.充值扣费后系统挂了,没同步到异地机房,用户在异地登录无法消费怎么办?
等待系统恢复后再使用
2.用户购买商品时系统挂了,订单未同步到异地机房,用户异地登录无法使用所购商品怎么办?
等待系统恢复后再使用
3.新增或修改商品信息后未同步到异地机房,导致用户无法购买怎么办?
此时将导致异地机房数据还是老数据,则先根据老数据进行购买,后台实时根据商品 id 进行核查,对其做补偿数据
评论