架构实战营 模块七 作业
作业:王者荣耀商城异地多活架构设计
【背景】
假设现在决定要实现王者荣耀里面的商城的异地多活架构,请你分析设计一下。
【作业要求】
1. 分析王者荣耀商城的业务特点,设计其异地多活架构;
2. 按照模块 7 第 5 课的方法来设计异地多活架构。
异地多活架构设计
业务背景
业务数据
2020.11 月公布数据,全年日均活跃 1 亿,注册玩家数 6 亿,最高同时在线 100 万。
业务功能
使用微信或者 QQ 账号登录游戏;
对战:例如匹配、排位、巅峰赛;
商城:购买英雄、皮肤、道具等;
活动:领取各种奖励和道具;
社区:各种攻略,视频等。
关键业务约束
登录用户才能充值。
余额不够不能购买道具。
业务分级
商城
数据分类
RoleID:登录后就不会变了;
用户区服信息:只会新增不会修改。
点券信息:强一致性要求,不可丢失。
英雄信息和皮肤信息:同一个账号只能有一个,只会新增,不会修改。强一致性要求,不可丢失。
鲜花、改名卡之类的道具信息:可以买多个,数量可以修改。强一致性要求,不可丢失。
购买道具的订单信息:只增加不修改,不可丢失。
数据同步
RoleID 和区服对应关系:只新建不修改;数据库同步或者消息队列,重复数据采用 insert or update 操作。
点券信息:强一致性,不可丢失;数据库同步。
英雄和皮肤信息:消息队列,重复数据采用 insert or discard。与购买道具的订单信息打包成为一条信息,如果订单信息重复,丢弃。
鲜花、改名卡之类的道具信息:消息队列,重复数据采用 insert or discard。与购买道具的订单信息打包成为一条信息,如果订单信息重复,丢弃。
购买道具的订单信息:消息队列,一般与上面道具信息一起发送。如果订单信息重复,丢弃。
用户同一时间尽量使其粘在一个服务器上,要么南方,要么北方。南北互相提供一个点卷版本信息,如果发现不是最新数据,提供立即同步数据接口。同时暂停该账号商城服务。
异常处理
微信和 QQ 挂了怎么办?
直接挂公告:系统停服维护。
充值点券无法支付怎么办?
提示:系统暂时无法支付
道具购买出错怎么办?
无法购买要提示,不扣点券;数量出错,提示错误,后期补偿。
版权声明: 本文为 InfoQ 作者【一雄】的原创文章。
原文链接:【http://xie.infoq.cn/article/998e5f85aa55117b9cd1db5c2】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论