写点什么

业务架构模块 7 作业

用户头像
冬天的树
关注
发布于: 1 小时前

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 进行核查,对其做补偿数据


    用户头像

    冬天的树

    关注

    还未添加个人签名 2018.01.18 加入

    还未添加个人简介

    评论

    发布
    暂无评论
    业务架构模块 7 作业