实战异地多活架构之王者荣耀商城
异地多活的几点前提
选择访问量高的,核心的业务,收入来源高的业务做异地多活
尽量选择最终一致性的数据做异地多活,因为强一致性的复杂度高,成本高
尽量选择数据是全局唯一或者可重复的业务做异地多活
数据同步的方式一般有数据库同步,消息队列,二次读取,回源读取
可以选择业务补偿,事后补偿,人工修正等手段补偿异地多活方案出现的异常情况
业务特性分析
王者荣耀商城和电商的区别,商品全局唯一,没有库存,不能退货
用户要先调用微信钱包或者 QQ 钱包充值点券,然后在商城里面用点券支付
用户买英雄和皮肤的时候同样的英雄和皮肤只能买 1 个,不能重复购买
用户买鲜花、改名卡之类的道具可以买多个
异地多活设计步骤
1.选择异地多活的业务
商城的浏览
英雄和皮肤的购买
2.数据分类
新商品上架:
商品信息全局唯一,并且不能修改,没有库存的概念
商品的信息满足最终一致性,对数据同步的延时要求不高
对于商家失败的商品可以由运营重新编辑商品上架
购买:
购买记录全局唯一,并且不能修改
购买记录满足最终一致性,对于数据同步的延迟要求不高
3.数据同步
新商品上架:
每次有新出的商城物品,商品 ID 用算法生成,商品详情信息做数据库同步
购买:
英雄和皮肤购买记录,全局唯一,不能改变,采用数据库+消息队列同步
4.异常处理
新商品上架:
购买:
1.微信和 QQ 挂了不能购买怎么办? 直接挂公告:系统停服维护。
2.购买的记录没能同步到异地机房, 客服手动添加。
评论