写点什么

架构实战营模块七作业

用户头像
子豪sirius
关注
发布于: 5 小时前

王者荣耀商城异地多活架构设计

业务功能说明

  1. 在商城里面,可以是用金币、砖石和点券这些虚拟货币购买商品

  2. 虚拟货币获得途径包括:游戏、商家赠送以及现金充值,主要来源是现金充值

  3. 充值通过微信或者 QQ 钱包

  4. 商品为虚拟商品,包括英雄、皮肤、鲜花、改名卡、经验卡、回城特效等道具

  5. 英雄和皮肤每个玩家账号只能买一个,其他道具内商品可以多个

  6. 王者荣耀商城这种虚拟物品商城,与淘宝这类实体电商有以下区别:

  7. 虚拟商品没有库存的概念

  8. 虚拟商品不需要物流发货,购买就获得,也没有退货。

架构设计

业务分级

商城作为单独的业务,无须再分级

数据分类

  1. 商城虚拟商品(英雄、皮肤、道具)的数据商品上架后很少修改(英雄上架就一直存在,皮肤上架后大部分一直存在,另一部分有期限)。商品数据不需要做数据同步。

  2. 在商城进行微信或者 QQ 钱包进行充值时,有充值交易 ID,全局唯一,不可修改。

  3. 玩家充值虚拟货币余额,随着充值和购买虚拟商品操作会进行修改,且具有强一致性,不可丢失。

  4. 购买商品交易 ID,每次新建,全局唯一,不会修改。

  5. 玩家已购买的商品数据,数据只有新增,没有修改,只需要最终一致性就可以,不可丢失。这里英雄、皮肤和道具要分开说明:

  6. 英雄和皮肤:每个账号只能购买一次。

  7. 道具:可以重复购买。

数据同步

  1. 玩家的账号 RoleID 与区服有对应关系,玩家的虚拟货币余额、购买商品数据也跟随 RoleID 保存在对应的区服。

  2. 充值交易 ID,每次新建,全局唯一,用算法生成,数据库同步。

  3. 虚拟货币余额要保持强一致性,采用数据库同步的方式。

  4. 购买商品交易 ID,每次新建,全局唯一,不会修改,算法生成,数据库同步。

  5. 已购买商品数据通过数据库进行同步。

异常处理

  1. 商城不能进入或者无法购买商品?

  2. 挂公告:系统维护

  3. 购买英雄或皮肤这种一次性商品,没有同步到异地机房;机房挂了转登到异地机房,发现还没购买,重复购买了,怎么办?

  4. 数据恢复同步后,出异常数据给营运人员,确认后人工或系统自动退回已花费的虚拟货币

  5. 花费了一定虚拟货币购买商品,没有同步到异地机房;机房挂了转登到异地机房,余额还没扣减,再次购买商品,导致实际购买商品数量超过余额,怎么办?

  6. 允许余额透支。待数据恢复同步后,显示余额为透支状态,可以提示玩家尽快充值,透支的商品设置暂无法使用。

异地多活服务器设计

  1. 区服服务器按地区分机房部署。

  2. 不同机房数据互为主备。

  3. 充值 ID、交易 ID 全量同步,玩家购买商品数据按照区服进行同步。

用户头像

子豪sirius

关注

还未添加个人签名 2018.05.03 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营模块七作业