写点什么

第九期 - 模块七

作者:wuli洋
  • 2022-11-20
    北京
  • 本文字数:840 字

    阅读完需:约 3 分钟

业务背景分析

【业务功能】

  1. 使用微信或者 QQ 账号登录游戏;

  2. 虚拟商品发布

  3. 虚拟英雄皮肤购买

  4. 虚拟道具(鲜花、改名卡)购买

  5. 调用微信、qq 充值点券

【关键业务约束】

登录才能购买,

只能用充值点券购买

购买同样的英雄、皮肤不能重复购买;

虚拟商品无库存限制,有的商品只能购买一次;


设计步骤

业务分级

在登录、发布、购买、充值几个业务中,

登录、购买属于核心业务;

发布故障时,不影响已有虚拟商品售卖,再其发布的商品中没有库存限制,因此可以持续卖

充值故障时,点券有余额可以购买,没有余额可以通过他人代买、或者线下渠道交易再通过激活码购买


数据分类

【登录】

1. 用户 ID:全局唯一,不可变;2. 用户手机号:全局唯一,很少变;3. SessionID:可重复生成,可丢失;4. 密码:可丢失。

【购买】

1.用户 ID:全局唯一,不可变;

2.点券额度:全局强一致性;

3.订单 ID:全局唯一,不可重复,可以算法生成

4.商品品类 ID:全局唯一,不可变;


数据同步

【登录】

1. 用户 ID:全局唯一,不可变,采用数据库同步+消息队列同步;

2. 用户手机号:全局唯一,很少变,采用数据库同步+消息队列同步;

3. SessionID:可重复生成,可丢失,不同步,用户重新登录生成。

【购买】

1.用户 ID:全局唯一,不可变,采用数据库同步+消息队列同步;

2.点券额度:强一致性,数据库同步,支持事务合并

3.订单 ID:全局唯一,不可重复,每次算法生成

4.商品品类 ID:全局唯一,不可重复,每次算法生成

异常处理

【登录】

1. 新注册的用户数据还没有同步到异地机房,如何购买?

提示停服,下次再来

2. 用户密码没有同步到异地机房,登录不了怎么办?

支持多种登录方式,例如手机验证码登录,绑定微信登录。


【购买道具等】

机房故障时,用户购买时点券不足怎么办?

  1. 或者支持线下其他方式购买激活码,通过激活码换;

  2. 先充值再购买;

  3. 他人代买


【购买皮肤、英雄】

机房故障时,用户在故障集群已成功购买,但是没同步到该机房?

如果已经扣费成功,可以提示用户已购买,商品在发货路上请等待...

或者让用户二次购买成功,之后恢复后,给予退帐


异地多活架构示意图

基本如下,会议服务器改为商品服务器


用户头像

wuli洋

关注

还未添加个人签名 2019-12-07 加入

还未添加个人简介

评论

发布
暂无评论
第九期 - 模块七_wuli洋_InfoQ写作社区