1. 程式人生 > >微服務——簡單應用錢包服務的設計

微服務——簡單應用錢包服務的設計

  • 寫在前面:
現在基本上每個APP或者其他網頁都會加入使用者錢包這一功能,錢包是
一個常見的產品需求,那麼本博闡述非金融的錢包或者稱為簡單錢包的
設計思路和具體實現。
  • 設計目標:
業務目標:
    1.使用者金額的管理;
    2.使用者的出入賬記錄;
    3.使用者的取現保證;
技術目標:
    1.可水平擴充套件的服務
    2.保證錢包的出入賬正確
    3.服務的單一性保證
  • 設計思路
表設計:
    1.設計兩張表:錢包金額表、錢包出入賬表。
    2.金額表維護使用者的餘額、(可選:總收入、總支出)。
    3.出入賬表維護使用者的錢包出入賬記錄。
介面設計:
    1
.開放一個增加出入賬記錄的介面。 2.開放一個更改出入賬記錄狀態的介面。 流程設計: 其他服務在業務過程中通過增加出入賬記錄,這條記錄可能是這樣的: {"id""主鍵","order_id":"訂單號","owner_id":"錢包賬號","target_id":"交易","type":"-1,1,負的支出,正的收入","amount":"交易金額","state":"0未入賬,1入賬"} 在業務完成後,通過修改狀態的介面對出入賬記錄進行操作同時修改使用者的賬戶餘額。 這樣做的好處是,將修改使用者餘額的操作放在錢包服務之下,統一進行事務管理
  • 常見場景實現:
支付購買商品:
    使用者 --> 下訂單 --> 線上支付訂單成功 --> 寫入一條充值記錄type=2(充值),一條使用者支出記錄type=-1,一條應用收款記錄type=1 --> 告訴訂單支付成功,檢查無誤,回撥錢包服務,可以操作票款了 --> 錢包更改以上三條記錄的狀態,同時修改各使用者錢包的餘額
使用者取現:
    使用者發起取現請求 --> 建立一筆支出單type=-2 --> 檢查無誤確認提現 --> 線上打款成功 --> 修改支出單狀態,修改使用者餘額
  • 總結:
    本錢包的設計基本滿足既定目標,有較好的擴充套件能力,簡單,避免了分散式事務的困擾,儘可能減少了相關業務的侵入,能夠支撐非金融應用的錢包大部分需求。同時,通過出入賬單可對使用者的錢包資料進行發掘,更好的獲取使用者的消費特徵,為其他功能的實現提供資料支援。