写点什么

架构实战营 模块七作业

用户头像
孫影
关注
发布于: 23 小时前

業務特點

虛擬商城跟實體交易最大的差別是虛擬商城可以即時拿到商品,而且不可退貨

業務功能

  • 儲值點卷

  • 購買商品

關鍵業務約束

  • 購買商品必須使用點卷支付

  • 相同的英雄和皮膚只能購買一次

  • 道具類商品可重複購買

異地多活設計分析

點卷餘額

  • 數據修改量: 大,因為餘額會因儲值而增加、購買商品而減少。

  • 一致性: 強一致性,因為用戶儲值、購買商品後,都會即時查看餘額是否正確。

  • 唯一性: 不涉及,因為餘額是會變動的。

  • 可丟失性: 否,因為用戶看到餘額不正確會向客服抱怨,進而影響商譽。

  • 可恢復性: 否,如果點卷儲值紀錄和商品交易紀錄有缺失,就沒有辦法推算正確的餘額。

  • 同步技巧: 使用數據庫同步,以保證強一致性。

點卷儲值紀錄

  • 數據修改量: 無,因為紀錄產生後就不修改。

  • 一致性: 最終一致性,因為是交易後不一定會查看的資料,用戶不需要即時查看。

  • 唯一性: 全局唯一,因為每筆交易只能有一筆對應的紀錄,如有多筆,會造成對帳問題。

  • 可丟失性: 否,因為當第三方扣款成功、但點卷餘額沒增加時,用戶會來查看儲值紀錄。

  • 可恢復性: 如果有儲值紀錄有寫日誌,則有機會透過人工回覆,如果沒有寫日誌就沒辦法回復了。

  • 同步技巧: 消息對列同步,因為它有全局唯一的特性,而且不需要實時。

商品交易紀錄

  • 數據修改量: 無,因為紀錄產生後就不修改。

  • 一致性: 最終一致性,因為是交易後不一定會查看的資料,用戶不需要即時查看。

  • 唯一性: 全局唯一,因為每筆交易只能有一筆對應的紀錄,如有多筆,會造成商品多給問題。

  • 可丟失性: 否,因為當商品交易成功、但商品沒有進到用戶帳戶時,用戶會來查看交易紀錄。

  • 可恢復性: 如果有儲值紀錄有寫日誌,則有機會透過人工回覆,如果沒有寫日誌就沒辦法回復了。

  • 同步技巧: 消息對列同步,因為它有全局唯一的特性,而且不需要實時。

英雄 & 皮膚

  • 數據修改量: 無,因為只能購買一次,只有新增、不修改。

  • 一致性: 強一致性,因為不能重複購買。

  • 唯一性: 是,因為不能重複購買。

  • 可丟失性: 否,因為用戶已經花錢購買。

  • 可恢復性: 否,只能退點卷請用戶重買。

  • 同步技巧: 數據庫同步,以保證強一致性。

道具

  • 數據修改量: 大,因為道具可以重複購買,也可以被使用掉。

  • 一致性: 強一致性,因為當道具不夠時就不能被使用。

  • 唯一性: 不涉及,因為道具數量是變動的。

  • 可丟失性: 否,因為用戶已經花錢購買。

  • 可恢復性: 否,只能退點卷請用戶重買。

  • 同步技巧: 數據庫同步,以保證強一致性。

架構示意圖


雖然在分析階段,交易紀錄選用消息對列同步,但因為其他項目的解決方案都是選用數據庫同步,而且交易紀錄實際上也可以用數據庫同步實現,為了降低系統複雜度,最後改選用數據庫主主同步。

发布于: 23 小时前阅读数: 5
用户头像

孫影

关注

还未添加个人签名 2021.06.11 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营 模块七作业