模块七
背景
业务功能
使用微信/QQ 登录游戏
商城查看商品
在商城购买商品
调用微信/QQ 点券充值
关键业务约束
登录才能进入商城
同一款皮肤,只能购买一次
道具类的商品可以重复购买
虚拟商品购买之后立即发货,不能退款
商品没有库存限制
设计步骤 1 - 业务分级
业务
登录,下单,点券,商品
核心业务
登录,点券,下单
设计步骤 2 - 数据分类
登录
依赖 QQ 和微信账号授权登录,本身无需登录信息;
微信和 QQ 授权登录会返回给王者荣耀全局唯一 RoleID;
王者荣耀只需要记录 RoleID 对应的区服信息,区服数据只会新增不会修改。
点券
依赖 QQ 和微信充值
充值成功后,返回对应的流水 id,全局唯一
充值记录只会新增不会修改,并会将点券写入区服对应的账户中
下单
玩家皮肤 ID:针对皮肤根据区服信息和皮肤数据,利用算法生成全局唯一 id,不修改
玩家道具订单 ID:针对道具类,根据用户和道具,时间,利用算法生成全局唯一 id,数据会存在修改
下单成功后,自动发货,不会有扣库存的步骤,所以下单扣完点券成功,就代表购买成功
设计步骤 3 - 数据同步
登录
RoleID 和区服对应关系,只会新建不会修改,数据库同步即可。
点券
点券余额:全局一致,采用数据库同步
下单
玩家皮肤 ID:全局唯一,不可变,数据库同步+消息队列同步
玩家道具订单 ID:全局唯一,不可变,数据库同步+消息队列同步
设计步骤 4 - 异常处理
登录
微信和 QQ 挂了怎么办?
直接挂公告:系统停服维护。
玩家在某个区服开了小号,没同步到异地机房,购买不了怎么办?
等系统恢复就可以购买。
点券
微信和 QQ 挂了怎么办?
直接挂公告:系统停服维护。
B 机房宕机,导致点券同步失败?
点券功能暂时关闭不可用
下单
道具和皮肤同步失败怎么办?
产品方案解决,通过商店公告提示玩家,商品数据写入存在一定延时
异地多活架构图
版权声明: 本文为 InfoQ 作者【Only】的原创文章。
原文链接:【http://xie.infoq.cn/article/4e25ebcce30c9bb6f888c92b6】。未经作者许可,禁止转载。
评论