大學畢業4年-回顧和總結(10)-資金賬務系統的架構設計(產品視角+技術視角)(圖文並茂)

小雷FansUnion發表於2016-05-29
 背景
     2014年和2015年開發P2P網貸系統的時候,某大牛有設計了一套簡潔實用的資金賬戶系統。
     系統設計主要是為了服務於P2P網貸等系統,資金賬務系統可以作為一個獨立的子系統對外提供服務。
     本系統,我基本沒有寫過幾行程式碼,更多是學習,理解別人的架構設計。

     之前,有寫過相關總結。
     大學畢業4年之際,想把之前各方面的積累都好好總結一番。
     從本篇開始,寫點以前做過的產品和技術架構等。不玩高大上,要簡單直白。


友情提示註釋,是不會太多的。英文過關的朋友,基本都看得懂。“約定優於配置”,“約定優於註釋”。

 產品核心功能


業界“最佳實踐”
殊途同歸:支付寶、微信支付、京東商城,和錢相關的功能,最核心的都是:資金賬戶、交易(充值、提現、轉賬、支付)、查詢(資金流水、分類查詢、交易明細)。

支付寶圖




雷觀技術研發,懂產品對提升自己的架構能力,可以說是有巨大幫助的。

 
1.開戶
     功能描述:建立一個賬戶。
     賬號和賬戶是不同的概念,前者側重普通系統登入,後者側重“資金類系統”。
 

2.交易
  充值:為一個賬戶增加一筆錢。
  提現:從一個賬戶減少一筆錢。
  轉賬:把一個賬戶中的錢,轉移到另外一個賬戶。
  批量轉賬:轉賬的增強版。
  凍結資金:把一個賬戶的資金,凍結一部分,可用餘額會減少相同的數額。
  解凍資金:把一個賬戶的資金,解凍一部分,可用餘額會增加相同的數額。

3.查詢
 基本資訊查詢:查詢一個賬戶的總金額、可用餘額、凍結餘額等資訊。
 批量查詢:查詢多個賬戶的金額等資訊。
 開戶-凍結賬戶-解凍賬戶
 凍結資金、解凍資金等日誌
 交易明細:包含了充值、提現、交易等所有的賬戶資金變動日誌。

4.凍結賬戶/解凍賬戶
  凍結;把一個賬戶給凍結了,凍結的賬戶可能無法進行提現等操作。
  解凍:把賬戶從凍結狀態,變為正常狀態。

技術架構
    技術架構圖/產品架構圖
   
   

   3種模式:本地jar包或者原始碼、WebService、Dubbo。
當使用WebService/Dubbo的時候,需要注意“分散式事務”。我們在做的時候,沒有過多考慮。

資料庫設計

賬戶表

內部賬戶表


賬戶資金凍結記錄

賬戶資金流水

充值返回通知

充值記錄

交易記錄


提現



詳細設計 

介面包

外界呼叫賬務服務,先引入介面包就,再引入實現類jar。如果是WebService和Dubbo,只需要引入介面jar包就行了。

facade: 對外提供的服務,是通過facade包下的3個介面來暴露的。
enums:列舉類
model:各種模型
result:結果集,code+實體。錯誤碼code,也可以通過Exception+code來實現。
util:工具類。

AccountOpenFacade主要提供開戶類的功能,外部賬戶、內部賬戶等是有點區分的。


AccountQueryFacade查詢類功能,查詢賬戶、資金流水、資金凍結記錄等。


AccountTransFacade交易類功能,充值、提現、凍結、取消凍結、轉賬。


實現包


facade.impl: 對外提供服務的實現類
account:賬戶模型,賬戶本身也可以有多重實現,這個還真是沒有想到。比如,DummyAccount可以空實現,有的時候會用到。
constants:常量
dal: 資料庫CRUD
exception:異常
service:內部業務邏輯,主要是查詢類的。
trans: 內部業務邏輯,主要是交易類的。
util:工具類。
vo:只有一個LockAccountVO,可能要鎖賬戶時的臨時VO。這個地方略顯高階!!!

查詢類功能service










交易類功能trans











不足之處
    當時做P2P網貸系統的時候,資金賬務系統只實現了這些“應用類”的核心功能。 
   剛剛把產品架構圖畫好了,和某電商大牛交流了下,他覺得漏掉了2個核心功能:對賬和結算。
   先記下來,下週認真學習下。


總結
   1.資金賬務系統,是比較通用的。
   2.先有產品設計,再有技術架構,再細節設計和編碼。

   3.面向介面程式設計。
   4.外界系統,只需要知道介面就可以了。
   5.資金賬務類系統,需要一點業務能力。部分功能,需要懂財務會計等概念。
 
 一轉眼,2016年5月,馬上就要過去了。
這個月,寫得大多是“創業投資和商業模式” 類的文章,效果還是非常好的。
但是,目前還是“技術立身” ,寫點技術類的總結,壓壓驚,嘿嘿!!!

小雷FansUnion-一個有創業和投資經驗的資深程式設計師-全球最大中文IT社群CSDN知名博主-排名第120
投資案例:好狗狗皇包車職業夢比呀比易途8
2016年5月29日 
湖北-武漢-晴 
 

雷觀技術研發,懂產品對提升自己的架構能力,可以說是有巨大幫助的。 

相關文章