模块七作业 - 王者荣耀商城异地多活架构设计
业务背景
为了提高游戏的体验,游戏玩家会有英雄皮肤、装备等的需求,这些需求通过商城来满足。
设计步骤 1 - 业务分级
1.业务包括:登录、下单、支付(如金币、点券等)、充值。
2.核心业务:登录、下单、支付。
对于商城,不管是电商商城,还是游戏商城,它们都应该包含下单和支付,这是商城的内核。
回到游戏商城,我们知道有些地方和电商商城还是很不一样的,没有实际的商品,不会产生物流,业务会简单很多;另外,在支付场景,即使余额(这里指金币、点券等)不够,在一定范围内也是允许支付的,但是在电商商城里面是不被允许的。
基于上面的分析,我们不把充值作为核心业务,因为它不影响核心业务的使用。
设计步骤 2 - 数据分类
【登录】
依赖微信和 QQ 的授权登录,本身无需登录信息;
第三方返回全局唯一的 RoleID;
【下单】
RoleID:登录后不变;
订单 ID:每次新建,全局唯一,不会修改;
【支付】
RoleID:登录后不变;
订单 ID:每次新建,全局唯一,不会修改;
支付 ID:每次新建,全局唯一,不会修改;
设计步骤 3 - 数据同步
RoleID:只会新建不会修改,数据库同步即可;
订单 ID 和支付 ID:每次新建,全局唯一,不会修改,可用雪花算法生成,数据库同步即可;
设计步骤 4 - 异常处理
【登录】
第三方系统不可用,因为不可控,只能对外发布平台暂停使用公告;
【下单】
下单成功,异地机房未看到记录,稍后再看;
下单成功,支付成功,未获取到对应的商品,联系客户进行人工处理;
下单失败,稍后重试;
【支付】
余额不够支付,平台根据用户不同等级设计对应的规则,进行一定余额的超额支付;
异地多活架构示意图
备注:这里为什么不进行服务拆分呢?通过和电商商城的对比发现,游戏领域的商城业务复杂度低,没有必要进行微服务的拆分。
版权声明: 本文为 InfoQ 作者【🐢先生】的原创文章。
原文链接:【http://xie.infoq.cn/article/2f192812f1a6a0eb865f55c37】。文章转载请联系作者。
评论