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