朱寶龍 上海亞太計算機信息系統(tǒng)有限公司
虛擬賬戶系統(tǒng)作為企業(yè)營銷的基礎系統(tǒng),通過提供統(tǒng)一的虛擬賬戶充值、消費、撤銷、轉(zhuǎn)賬、查詢、賬單等接口,實現(xiàn)與會員系統(tǒng)、營銷系統(tǒng)、訂單系統(tǒng)、商城系統(tǒng)、財務系統(tǒng)等企業(yè)內(nèi)部系統(tǒng),第三方支付平臺等外部系統(tǒng)的集成。系統(tǒng)支持電子錢包、禮金、優(yōu)惠券、積分、紅包等多種營銷手段和方式。
為保證賬戶安全,防止數(shù)據(jù)泄漏及被篡改,虛擬賬戶系統(tǒng)與統(tǒng)一的安全服務平臺集成,通過對稱算法對用戶敏感信息如手機號、交易密碼、賬戶余額等關鍵要素進行加解密,通過數(shù)字簽名驗簽技術對交易通訊報文、文件進行防篡改、防抵賴處理。安全服務平臺同時支持國密算法和國際算法雙密鑰體系,保障系統(tǒng)數(shù)據(jù)安全的同時保證系統(tǒng)可擴展性。
虛擬賬戶系統(tǒng)通過賬戶平衡檢查、進銷存統(tǒng)計報表、營銷統(tǒng)計報表等手段保障系統(tǒng)平穩(wěn)運行,并給企業(yè)營銷決策提供依據(jù)。
虛擬賬戶系統(tǒng)為保證系統(tǒng)安全、平穩(wěn)、高效地運行,需要對接入渠道進行報文檢查、身份認證、數(shù)字驗簽、權(quán)限驗證、限流控制、超時控制等,針對不同的業(yè)務場景,需要對會員規(guī)則、營銷規(guī)則、黑白名單、賬戶規(guī)則、限額規(guī)則、風控規(guī)則等做匹配與驗證,通過內(nèi)部應用接口、消息中間件與數(shù)據(jù)同步技術實現(xiàn)企業(yè)內(nèi)部系統(tǒng)間的通訊;通過分布式緩存技術、數(shù)據(jù)庫主從同步、分庫分表、樂觀鎖等技術保證系統(tǒng)的運行效率和高可用。
圖1 系統(tǒng)架構(gòu)圖
虛擬系統(tǒng)提供統(tǒng)一的充值接口給營銷系統(tǒng),首次通過會員號、電子卡號或者營銷機構(gòu)號實現(xiàn)自動開戶;系統(tǒng)提供專門的第三方充值接口,實現(xiàn)微信、支付寶、銀聯(lián)等對虛擬賬戶的直接充值。
虛擬賬戶系統(tǒng)支持帶有效期的營銷規(guī)則,自動設立帶有有效期的明細賬戶。
虛擬賬戶系統(tǒng)通過與企業(yè)的會員系統(tǒng)、商城系統(tǒng)等接口集成,實現(xiàn)在商城網(wǎng)站、App、微信公眾號、小程序上的直接支付或者兌換支付。
虛擬賬戶消費優(yōu)先使用有效期臨近的余額進行支付。
虛擬賬戶系統(tǒng)支持交易撤銷和退款操作,被撤銷的資金原路返回。結(jié)合具體業(yè)務,系統(tǒng)可設置對不退款的規(guī)則做雙層校驗。
虛擬賬戶系統(tǒng)對允許轉(zhuǎn)賬、轉(zhuǎn)贈的業(yè)務場景支持系統(tǒng)內(nèi)部轉(zhuǎn)賬。
虛擬賬戶查詢返回賬戶總可用余額、賬戶臨期余額(臨期規(guī)則可設定)、賬戶臨期明細、賬戶過期余額等。
根據(jù)客戶選擇的時間段,虛擬賬戶系統(tǒng)提供這段時間內(nèi)的客戶交易詳單。
容器技術提供基于鏡像的部署模式,它能夠輕松跨多種環(huán)境,與其依賴程序共享應用或服務組,還有快速移植和部署、無感發(fā)布、自動負載均衡、回滾到任意歷史版本、自動擴容縮容、不停整個應用對部分進行更新和替換等優(yōu)點。
消息中間件的核心功能在于將系統(tǒng)間通信由同步變成異步,減少了系統(tǒng)調(diào)用、文件操作、數(shù)據(jù)庫交互等資源消耗,降低整個交易流程的耗時和復雜度,提高系統(tǒng)的并發(fā)性和穩(wěn)定性。
分布式緩存是將熱點數(shù)據(jù)加載到內(nèi)存中,對這部分數(shù)據(jù)的讀寫全部在內(nèi)存中完成,這樣不僅速度快,而且大幅度降低了服務器磁盤IO、CPU 等資源的負載,保證系統(tǒng)在業(yè)務高峰期的高并發(fā)性和高可用性。
在數(shù)據(jù)庫設計上,從滿足目前業(yè)務需求和未來一定時期內(nèi)業(yè)務擴展需求角度進行設計,根據(jù)業(yè)務形態(tài)劃分為主庫、備份庫、查詢庫、歷史庫。
1.數(shù)據(jù)同步
利用數(shù)據(jù)庫本身的日志技術,主庫實現(xiàn)與備份庫、查詢庫的數(shù)據(jù)同步及容災。
對于無需鑒權(quán)的數(shù)據(jù),使用數(shù)據(jù)同步中間件如canal、otter 等實現(xiàn)與企業(yè)內(nèi)部其他系統(tǒng)的同步及共享;對于需要鑒權(quán)的數(shù)據(jù)則通過鑒權(quán)接口訪問數(shù)據(jù)。
2.讀寫分離
讀寫分離用于解決數(shù)據(jù)庫讀的性能瓶頸問題,主庫做寫入,備庫做查詢,互為主備隨時切換,查詢庫做賬單、明細、統(tǒng)計,歷史庫做歸檔和容災。
3.分表分區(qū)
分表是解決單張表過于龐大而導致的性能低下問題。本系統(tǒng)對超大業(yè)務表按年份進行水平拆分,每張表只存放當年歷史數(shù)據(jù),對相關查詢作智能關聯(lián)或跨度約束。與分表不同的是,表分區(qū)后邏輯上仍然是一張完整的表,但表中的數(shù)據(jù)在物理上存放在多個表空間上,結(jié)合索引技術,每次業(yè)務操作只對分區(qū)操作而不是對全表操作,大大減少磁盤I/O,從而大幅度提升查詢性能。
賬戶安全設計是從應用安全設計的角度出發(fā),通過數(shù)據(jù)傳輸安全、賬戶存儲安全、賬戶更新安全、賬戶平衡檢查、賬戶報表統(tǒng)計等方面確保賬戶信息安全。
數(shù)據(jù)傳輸安全包括報文傳輸安全和文件傳輸安全。不論信息是報文傳輸還是文件傳輸,都要保證在通訊過程中不能被損壞和篡改,即使傳輸完成后發(fā)生了泄漏也不能對系統(tǒng)造成重大損失。
1.二級密鑰體系
二級密鑰體系是指系統(tǒng)雙方約定根密鑰,根密鑰的作用是對工作密鑰進行加解密。工作密鑰用來加解密數(shù)據(jù),系統(tǒng)雙方定期同時更換,數(shù)據(jù)傳輸過程中,敏感的信息如密碼使用PINKEY 加密,報文整體使用約定算法的MACKEY 加密。
圖2 二級密鑰體系
2.數(shù)字簽名驗簽
數(shù)字簽名技術可以保證簽名方不能否認所發(fā)送信息的簽名,驗簽方能夠驗證信息簽名的真實性,只要保證簽名方私鑰信息的安全性,就能夠保證通訊數(shù)據(jù)不能被任何其他人進行偽造。
圖3 簽名驗簽過程
為防止人為篡改數(shù)據(jù)庫中的賬戶余額,相關表中必須存放余額信息的校驗值,余額信息可以是余額明文,也可以是余額明文加上其他不變的標識信息,校驗值應該是通過系統(tǒng)安全密鑰進行算法運算后的結(jié)果,賬戶每次做出入賬時需要先檢查校驗值是否正確,正確后方可計算本次交易后余額信息的校驗值,并更新到數(shù)據(jù)庫中。
在并發(fā)系統(tǒng)中,為保證賬戶更新安全,需要給待更新的資源加鎖,大量使用悲觀鎖會造成鎖等待甚至是死鎖,采用業(yè)務樂觀鎖會大大提高系統(tǒng)性能;使用數(shù)據(jù)庫事務,保證賬戶更新和交易流水的同步性。
圖4 賬戶更新流程
賬戶平衡檢查是指在規(guī)定的時間段內(nèi)一個賬戶余額的變動要與對應的交易流水記錄相匹配,賬戶平衡的計算公式為:賬戶A 期末余額=賬戶A 期初余額+本期賬戶A 入賬金額-本期賬戶A 出賬金額。
本文以一個自然日的時間范圍即以零點作為分隔點來進行說明。
1.每日系統(tǒng)日切
系統(tǒng)日切是指在零點時刻執(zhí)行記賬日期的切換,切換在秒級完成,不影響任何正在發(fā)生的業(yè)務。
(1)系統(tǒng)日切不做交易數(shù)據(jù)的處理,只做記賬日期、流水表號的切換,例如1 號的交易存放在流水表1 中,日切完成后,記賬日期變成2 號,并且交易存放在流水表2 中;
(2)使用流水表1 中的交易流水做當日的數(shù)據(jù)統(tǒng)計、歸檔,然后清空,用于下一記賬日期即3 號的流水記錄。
2.每日余額備份
從計算公式可以看出,我們必須要拿到零點那個時刻的所有賬戶余額信息,如果系統(tǒng)賬戶數(shù)量很大,這是一個不能瞬間完成的工作,為保證計算的準確性就需要使用每日余額備份技術。
(1)如果業(yè)務允許暫停,在零點設立一個不允許所有進出賬的時間窗口,在該時間窗口內(nèi)完成賬戶余額備份;
(2)如果業(yè)務不允許暫停,在零點系統(tǒng)進行日切的同時,開啟賬戶余額備份窗口,在該窗口中,新發(fā)生的業(yè)務不實時修改賬戶余額,待余額備份完成后關閉窗口,將備份完成的結(jié)果作為昨日余額,批量更新本次窗口中發(fā)生業(yè)務的賬戶數(shù)據(jù),并恢復賬戶余額隨業(yè)務的發(fā)生而實時變動。
3.賬戶平衡檢查
賬戶平衡檢查的目的是保證系統(tǒng)內(nèi)部是賬平的,可以及時發(fā)現(xiàn)是否有人對客戶賬戶余額進行過篡改、是否有人對客戶交易記錄進行過篡改,從而保證賬戶系統(tǒng)的安全,并且在系統(tǒng)發(fā)生重大故障時,賬戶平衡檢查的過程數(shù)據(jù)和結(jié)果數(shù)據(jù)可以作為系統(tǒng)追溯的依據(jù)。
進銷存統(tǒng)計報表:
進銷存報表用于統(tǒng)計整個系統(tǒng)當日銷售、庫存情況以及歷史累計的銷售、庫存情況,該報表反映系統(tǒng)總體的運營狀況,可以提供決策依據(jù),預防系統(tǒng)風險。
對于賬戶系統(tǒng)而言,進銷存報表體現(xiàn)的是系統(tǒng)本期期初金額、本期入賬總金額、本期出賬總金額、本期期末總金額、賬戶總沉淀資金,其中賬戶總沉淀資金是指所有的賬戶余額總和。
1.本期期末總金額=本期期初總金額+本期總?cè)胭~金額-本期出賬總金額;
2.本期期末總金額=賬戶總沉淀資金;
3.為提高系統(tǒng)統(tǒng)計效率,采用增量統(tǒng)計方式,即使用上期期末總金額作為本期期初總金額,不再重新統(tǒng)計歷史數(shù)據(jù),缺點是如果對統(tǒng)計完的數(shù)據(jù)作修正,需要修正后面所有已統(tǒng)計的數(shù)據(jù)。
本文針對面向企業(yè)營銷的虛擬賬戶系統(tǒng)的架構(gòu)和功能進行探討,提出了基于容器化部署、消息中間件、分布式緩存、數(shù)據(jù)庫設計等關鍵技術的建設方案,并通過數(shù)據(jù)傳輸安全、賬戶存儲安全、賬戶更新安全、賬戶平衡檢查、賬戶報表統(tǒng)計等技術和手段來保證系統(tǒng)的安全穩(wěn)定,與此同時也為企業(yè)營銷決策提供依據(jù)。