hw7 - 王者荣耀商城异地多活
业务数据
全年日活 1 亿,注册玩家数 6 亿,最高同是在线 100 万。
商城业务功能
浏览
购物(购物车,下单)
账户(交易记录,余额)
校验是否登陆(不能凭链接直接查看商品,在没有登陆的状态下)
关键业务约束
登陆才能购物
不同区服
Android 平台和 iOS 平台数据不通
不同平台分有不同区
金额足够才能交易
业务分级
浏览,下单是核心,因为它们跟盈利直接相关。
数据分类
假定同一微信/QQ ID 在同一 OS 的不同区的数据不可以共享
浏览
假定商城是需要登录才能浏览的
需要保持登录的 session ID
商品数据
下单
由于微信/QQ ID 被转换为 roleID
需要 roleID,账户余额
所购商品在本区的限额,校验是否还有库存
但是这是虚拟商品,超卖一点儿也没有大问题。
同样的英雄和皮肤只能买 1 个,不能重复购买。
买鲜花,改名卡之类的道具可以买多个
要校验用户的购买记录,是否允许再买
确保用户有足够的余额,或者近似足够的余额。
数据同步
因为商城数据在个区之间是不通的,所以同一 roleID 在不同区购买的商品也是不共享的。每个区有自己的商品库和用户拥有的商品信息,数据库不同跨区同步,但是同区的数据需要备份/同步。
商城里的商品可以用消息队列同步,但是用户的购买记录必须要有幂等性。
异常处理
页面加载失败无法查看商城或商品页面。
等恢复后再看
因为商品是这个有些专属的。如果用户今天没有买到,他还需要,还是会再来购买的。
无法下单是同样的道理。
剩下的就是多地部署机器的方式。
评论