架構實戰營 - 模塊 7 作業
王者榮耀商城異地多活架構設計
【背景】
假設現在決定要實現王者榮耀裡面的商城的異地多活架構,請你分析設計一下。
【作業要求】
分析王者榮耀商城的業務特點,設計其異地多活架構;
按照模塊 7 第 5 課的方法來設計異地多活架構。
業務分級
如課件,商城是遊戲業務第三重要的核心業務。
數據分類
RoleID: 登入後就不會變了。
餘額:全局強一致性數據。
英雄:每個用戶對於同個英雄只會有一個。
皮膚:每個用戶對於同個皮膚只會有一個。
其他道具:同個用戶對於同個道具可以有多個,屬於全局強一致性數據。
由於虛擬商城沒有庫存問題,所以不用像一般電商考慮庫存或是配送相關的數據。
數據同步
RoleID:同登入。
餘額:採用數據庫同步,如果有充值或是購買行為,都需要連回用戶所屬的機房操作。
英雄:採用數據庫+消息陣列同步,可以使用 RoleID+HeroID 當作 Primary key。
皮膚:採用數據庫+消息陣列同步,可以使用 RoleID+SkinID 當作 Primary key。
其他道具:採用數據庫同步,如果有購買或是使用行為,都需要連回用戶所屬的機房操作。
異常處理
微信或 QQ 掛了導致無法登入。
直接公告停機。
支付寶或微信支付掛了導致無法充值。
暫時停止商城充值行為。
用戶所屬機房掛了,導致無法在虛擬商城購買。
暫時停止該機房用戶的購買行為,但是用戶依然可以透過其他機房看到自己擁有的點券及已擁有的虛擬商品。
購買虛擬商品後,由於連到其他機房,導致看不到購買的虛擬商品。
請用戶刷新重試,並給予一定補償。
版权声明: 本文为 InfoQ 作者【Frank Yang】的原创文章。
原文链接:【http://xie.infoq.cn/article/9b883c5244c9feb9d836ff5dc】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论