模块 7 作业 - 王者荣耀商城异地多活架构设计
前言
额,好像不久前刚刚说完要早做作业,结果这次拖到了最后一天,可能是异地多活这个领域确实比较陌生,再加上从来没有玩过王者荣耀,所以一直感觉没有思路,好几次打开电脑也没有下笔写。。。
但今天是 Deadline 了,是时候拿出真正的技术了。
开整。
异地多活设计方法论回顾
1 个原理,CAP 原理,异地多活本质是 AP 方案
3 个原则:只保证核心业务,只能做到最终一致性,只能保证绝大多数用户
4 个步骤:业务分级(TOP3)->数据分类->数据同步->异常处理
5 个技巧:消息队列同步,库存拆分,事务合并,实时改异步,适当容忍
作业题目
【背景】
假设现在决定要实现王者荣耀里面的商城的异地多活架构,请你分析设计一下。
【作业要求】
1. 分析王者荣耀商城的业务特点,设计其异地多活架构; 2. 按照模块 7 第 5 课的方法来设计异地多活架构。
【提示】
1. 王者荣耀的商城是虚拟物品商城,和淘宝这种实物电商有两个很大的区别,注意识别出来;
2. 用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付;
3. 用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买;
4. 用户买鲜花、改名卡之类的道具可以买多个;
5. 分析步骤参考模块 7 第 6 课的案例。
作业回答
王者荣耀的商城是虚拟物品商城,与实物电商的区别主要是不需要库存和物流这两个概念。
支付的方式有很多,比如碎片,点券,荣誉积分等等。
业务分级
商城的业务主要有商品,礼物,订单,购买,充值,活动
由于商城的核心业务指标就是收入,因此按照收入来确定 TOP3 的业务,结果如下。
充值
购买
活动
数据分类
充值
依赖 QQ 和微信支付或其他交易
点券等只能在充值对应的区服使用,因此充值得到的点券,积分等都在对应区服服务器中
金币,荣耀积分,碎片也存在修改
金币,荣耀积分,碎片,在商城内作为货币使用,一致性要求很高
购买
用户的信息是与区服绑定的,存在修改,且是强一致的
商城的商品,修改很少,强一致
活动
活动只有新增极少修改,可恢复,运营重新发即可
不同的服务器可以有不同的活动
可以恢复
同步方式
【充值】
元宝,积分,碎片等资产类的数据,数据库同步
【购买】
商品,数据库同步
用户信息,数据库同步
【活动】
活动,数据库同步+消息队列同步
异常处理
【充值】
微信支付挂了怎么办?->系统停服维护,充值失败的客服介入
【购买】
购买后没有同步到异地机房,玩家看不到买的东西?->客服介入安抚用户,购买失败的话,给予适当补偿
【活动】
活动没有同步到异地机房,看不到对应活动?->运营手动同步
异地多活架构示意图
学习总结
模块 7 主要是围绕着系统的高可用来展开的,讲了高可用原理,FMEA 方法论以及灾备的模式,然后就是第二个重点异地多活的理论和设计,最后再配上王者荣耀以及视频会议的这两个典型应用的异地多活,高可用系统设计以一种立体的方式呈现出来。
提起异地多活往往大多数技术人员都回觉得很神秘,而且确实没什么机会体验,但大厂又需要这个重要领域的实践,因此也是迈向架构师的一个拦路虎。
书到用时方恨少,做作业时确实觉得很多东西自己拿捏不住。
ps 近半年有点急功近利,下半年要少做点事,把事做好。
版权声明: 本文为 InfoQ 作者【En wei】的原创文章。
原文链接:【http://xie.infoq.cn/article/6a40d4d05d6365c37b7c2d7e3】。文章转载请联系作者。
评论