写点什么

架构实战营模块七 作业

作者:库尔斯
  • 2022 年 6 月 02 日
  • 本文字数:1143 字

    阅读完需:约 4 分钟

作业:王者荣耀商城异地多活架构设计【背景】假设现在决定要实现王者荣耀里面的商城的异地多活架构,请你分析设计一下。【作业要求】1. 分析王者荣耀商城的业务特点,设计其异地多活架构; 2. 按照模块7第5课的方法来设计异地多活架构。【提示】1. 王者荣耀的商城是虚拟物品商城,和淘宝这种实物电商有两个很大的区别,注意识别出来; 2. 用户要先调用微信钱包或者QQ钱包充值点券,然后在商城里面用点券支付;3. 用户买英雄和皮肤的时候同样的英雄和皮肤只能买1个,不能重复购买;4. 用户买鲜花、改名卡之类的道具可以买多个;5. 分析步骤参考模块7第6课的案例。
复制代码

解答:

一. 王者荣耀商城是一个虚拟物品商城,有以下几个特点:

  1. 没有物流系统。

  2. 安全认证非常重要:所有产品以电子形式保存,账号就是也就是产品丢失。

  3. 因为产品可复制,所以无法实现退货。

  4. 用户使用微信或 QQ 账号登陆,在商城对应一个 roleid,使用获取自己的微信钱包或 QQ 钱包数据进行充值点劵,再在商城里用点劵支付。

  5. 游戏的英雄和皮肤是全局唯一的,用户只能买一个。在数据同步的时候,这部分数据和 roleid 数据一样是全服数据,由全局产生。为保障唯一性,写发生在唯一的 zone,并单向同步到其它 zone。

  6. 鲜花、改名卡是 session 或局部数据,修改发生在各个 zone 内,交叉同步到其它 zone。

二. 三原则:

  • 核心业务约束: 登陆和支付是核心业务,在数据同步模式上体现登陆和支付的业务特点

  • 最终一致性:异地多活遵循 CAP 理论的 AP,可用性优先保障,一致性表现在:容忍一定时间的不一致条件下,达成最终的一致性。

  • 保证绝大部分用户:容忍少数用户的异常。对于绝大多数的用户,归属地路由会把用户带到正常的 zone 进行处理。但少数极端情况,比如跨 zone 的边界用户,或者地域数据错误导致跨到错误的 zone,此时由异常处理模块来处理。

三. 数据分类和数据同步

  • 全局数据:主从同步,写入操作指引到 master zone 的 master DB,下发到其它 zone,保证唯一性。游戏的英雄和皮肤是全局唯一的,用户只能买一个。在数据同步的时候,这部分数据和 roleid 数据一样是全服数据,由全局产生,并在各个 zone 内部同步。

  • 局部数据:主主同步,允许各个 zone 产生购买行为,并同步到其它 zone。鲜花、改名卡是 session 或局部数据。

四.异常处理

  1. 微信和 QQ 挂了:

  2. 登陆:此时王者荣耀游戏也不能登陆,商城交易可以暂停,等恢复再登陆

  3. 支付:此时王者荣耀游戏也不能登陆,商城交易可以暂停,等恢复再支付

  4. roleid 等全局数据没有在各个 zone 之间及时同步:仅对少数分区错误的

  5. 登陆:等同步延迟消失后再登陆

  6. 支付:等同步延迟消失后再支付

  7. 购买英雄、皮肤等全局性质的道具:由于每个用户只能购买一个,所以写入只发生在一个主 zone 的 master DB;

  8. 购买鲜花改名卡之类的局部性道具:主主同步,各个 zone 购买的数据经同步后合并保存在所有的 zone DB。

五.异地多活架构示意图

王者荣耀异地多活架构图


发布于: 刚刚阅读数: 3
用户头像

库尔斯

关注

还未添加个人签名 2018.04.10 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营模块七 作业_架构实战营_库尔斯_InfoQ写作社区