模块七
作业:王者荣耀商城异地多活架构设计
【背景】
假设现在决定要实现王者荣耀里面的商城的异地多活架构,请你分析设计一下。
【作业要求】
1. 分析王者荣耀商城的业务特点,设计其异地多活架构;
2. 按照模块 7 第 5 课的方法来设计异地多活架构。
【提示】
1. 王者荣耀的商城是虚拟物品商城,和淘宝这种实物电商有两个很大的区别,注意识别出来;
2. 用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;
3. 用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;
4. 用户买鲜花、改名卡之类的道具可以买多个;
5. 分析步骤参考模块 7 第 6 课的案例。
一、业务分析
1、业务分级:
王者荣耀商城业务的功能模块大致可分为:登录、商品管理、支付、订单管理。
2、数据分类:
【登录】
1.依赖 QQ 和微信账号授权登录,本身无需登录信息。
2.微信和 QQ 授权登录会返回给王者荣耀全局唯一 RoleID。
3.王者荣耀只需要记录 RoleID 对应的区服信息,区服数据只会新增不会修改。
【商品管理】
1、商品 ID,包括英雄 ID、皮肤 ID、道具 ID,具有全局唯一性。
2、商品库存,数据不可丢失,强一致性。
3、商品信息,包括商品类型(英雄、皮肤、道具等)、价格、商品详情、销量、评价等。
【支付】
1、RoleID:登录后就不会变了。
2、点券余额:和 RoleID 绑定,根据充值和购买商品而变化,数据不可丢失,强一致性
【订单管理】
订单 ID,全局唯一,不可重复,每次新增,不可丢失
3、数据同步:
【登录】
RoleID 和区服对应关系,只会新建不会修改,数据库同步即可。
【商品管理】
1、商品 ID,全局唯一性,采用数据库同步
2、商品库存,全局一致性,根据商品和订单而变化,采用数据库同步
【支付】
1、RoleID:和区服对应关系,只会新建不会修改,数据库同步即可;
2、点券余额:全局一致性,采用数据库同步余额,充值只能在归属地充值;
【订单管理】
订单 ID,全局唯一性,采用数据库同步
4、异常处理:
【登录】
1.微信和 QQ 挂了怎么办?
直接挂公告:系统停服维护。
2. 玩家在某个区服开了小号,没同步到异地机房,玩不了怎么办?
等系统恢复就可以玩了。
【商品管理】
1、商品没有同步到异地机房,导致用户在商城搜索不到该商品怎么办?
用户重试二次搜索,读取另外一个机房数据库
【支付】
1、微信/qq 钱包充值后点券余额没有同步怎么办?
刷新等待数据同步完成后再可以购买商品
2、支付商品后没有扣除点券余额怎么办?
成功扣除点券后订单才正式完成
【订单】
评论