謝 澤,朱建生,王富章,李 雯,王 拓
(1.中國鐵道科學研究院 研究生部,北京 100081;2.中國鐵道科學研究院集團有限公司 電子計算技術(shù)研究所,北京 100081)
鐵路客票商旅服務(wù)以鐵路客運服務(wù)為主,以酒店住宿、網(wǎng)絡(luò)約車、餐飲及保險等商旅服務(wù)為輔,將多種形式服務(wù)集成,從而為商旅客戶提供便捷的綜合服務(wù)。鐵路客票商旅服務(wù)平臺是鐵路客票系統(tǒng)對公服務(wù)的補充,為了保證鐵路客票商旅服務(wù)產(chǎn)品數(shù)據(jù)及服務(wù)金額能夠在全生命周期內(nèi)精準管理,需要搭建一套具備數(shù)據(jù)記錄、自動化對賬以及誤差校正等功能的鐵路客票商旅服務(wù)計費系統(tǒng)。
目前,很多領(lǐng)域?qū)τ嬞M系統(tǒng)、財務(wù)管理及智能化技術(shù)進行研究。在銀行、金融及電商等領(lǐng)域智能化計費系統(tǒng)方面,葉金平與劉映輝等[1-2]運用ETL,VFP和STP技術(shù)搭建商業(yè)銀行的自動化對賬系統(tǒng);翟敏[3]對金融公司ERP系統(tǒng)財務(wù)業(yè)務(wù)應(yīng)用一體化模式下的結(jié)賬和對賬進行研究,實現(xiàn)財務(wù)復雜細節(jié)問題簡單化。在大型電商企業(yè)方面,為實現(xiàn)銷售產(chǎn)品財務(wù)管理流程智能化,俞清[4]分析EVA系統(tǒng)關(guān)鍵技術(shù)及應(yīng)用難點,滿春[5]優(yōu)化財務(wù)系統(tǒng)自動化入賬模式。在云計算和區(qū)塊鏈技術(shù)方面,何鳴、崔益彪、陳宇等[6-8]將計費系統(tǒng)的底層安全與數(shù)據(jù)存儲及處理效率作為主要研究對象,將Kafka等云計算技術(shù)和具備數(shù)據(jù)不易篡改特點的區(qū)塊鏈技術(shù)運用于財務(wù)計費系統(tǒng)中。
鐵路客票財務(wù)系統(tǒng)已經(jīng)實現(xiàn)對多種客運服務(wù)銷售渠道產(chǎn)生的客運收入進行結(jié)賬等操作[9],由于鐵路客票商旅服務(wù)計費系統(tǒng)具有處理數(shù)據(jù)量多、商品服務(wù)數(shù)據(jù)類型復雜等特點,需要融合信息技術(shù)實現(xiàn)獨立、安全、高可擴展的系統(tǒng)架構(gòu),以解決鐵路客票商旅服務(wù)計費系統(tǒng)的數(shù)據(jù)存儲與補償以及自動化對賬與修正等關(guān)鍵技術(shù)難點。
鐵路客票商旅服務(wù)計費系統(tǒng)除車票相關(guān)財務(wù)數(shù)據(jù)外,還需要管理酒店住宿產(chǎn)品、機票產(chǎn)品、網(wǎng)絡(luò)約車產(chǎn)品以及服務(wù)費等多類型數(shù)據(jù),因而計費系統(tǒng)需要通過商旅服務(wù)產(chǎn)品數(shù)據(jù)存儲與補償確保數(shù)據(jù)準確記錄支撐數(shù)據(jù)基礎(chǔ),并通過財務(wù)自動化對賬與修正保障產(chǎn)品金額對賬準確,從而實現(xiàn)商旅服務(wù)產(chǎn)品及金額的全生命周期管理。鐵路客票商旅服務(wù)產(chǎn)品及金額數(shù)據(jù)全生命周期管理流程如圖1所示。
由圖1可見,鐵路客票商旅服務(wù)產(chǎn)品及金額數(shù)據(jù)全生命周期管理流程關(guān)鍵步驟為商旅服務(wù)產(chǎn)品數(shù)據(jù)記錄和商旅服務(wù)產(chǎn)品對賬,其中數(shù)據(jù)記錄的準確性和內(nèi)部對賬修正是商旅服務(wù)計費系統(tǒng)的技術(shù)難點。在數(shù)據(jù)處理類型方面,由于商旅服務(wù)種類隨著業(yè)務(wù)擴展不斷增加,如保險等服務(wù),因而鐵路客票商旅服務(wù)計費系統(tǒng)需要具備良好的擴展性和兼容能力,更好地應(yīng)對商旅服務(wù)類型多的業(yè)務(wù)難點;同時鐵路客票商旅服務(wù)計費系統(tǒng)還應(yīng)具備獨立微服務(wù)的特性,以保證商旅服務(wù)需要變更的子系統(tǒng)升級不會對整體計費功能產(chǎn)生影響。在系統(tǒng)性能需求方面,應(yīng)充分考慮商旅客戶數(shù)據(jù)量在短期內(nèi)達到千萬級,需要具備高并發(fā)數(shù)據(jù)處理、高效存儲和查詢的能力以達到海量數(shù)據(jù)響應(yīng)迅速。在系統(tǒng)安全需求方面,鐵路客票商旅服務(wù)涉及商旅客戶的隱私信息,需要計費系統(tǒng)充分考慮各層級容錯能力保障系統(tǒng)安全可靠,同時還需要對底層數(shù)據(jù)安全隔離并嚴格限制數(shù)據(jù)訪問權(quán)限,保證隱私敏感加密數(shù)據(jù)不泄露。
圖1 鐵路客票商旅服務(wù)產(chǎn)品及金額數(shù)據(jù)全生命周期管理流程Fig.1 Life cycle management process of railway passenger ticket business travel service products and amount data
根據(jù)鐵路客票商旅服務(wù)計費系統(tǒng)的技術(shù)難點要求,設(shè)計以數(shù)據(jù)記錄和財務(wù)對賬為業(yè)務(wù)主線的系統(tǒng)架構(gòu),主要從計費系統(tǒng)結(jié)算模塊及數(shù)據(jù)庫模塊的功能部署角度概括商旅服務(wù)計費系統(tǒng)實現(xiàn)。鐵路客票商旅服務(wù)計費系統(tǒng)架構(gòu)示意圖如圖2所示。
由圖2可見,商旅服務(wù)業(yè)務(wù)系統(tǒng)是商旅平臺對客戶提供鐵路客運、酒店住宿、網(wǎng)絡(luò)約車、餐飲等商旅服務(wù)的系統(tǒng)平臺,該系統(tǒng)生產(chǎn)的產(chǎn)品數(shù)據(jù)是商旅服務(wù)計費系統(tǒng)進行全生命周期管理的服務(wù)對象;服務(wù)生產(chǎn)源主要包括鐵路12306、機票平臺、酒店預訂平臺等底層服務(wù)提供商,該服務(wù)提供商在商旅服務(wù)流程中生產(chǎn)的存根等數(shù)據(jù)是商旅服務(wù)計費系統(tǒng)對賬的主要對象;財務(wù)中心主要負責商旅服務(wù)相關(guān)金額的基礎(chǔ)財務(wù)管理;緩存服務(wù)主要用于存儲并更新數(shù)據(jù)庫模塊中常用的查詢數(shù)據(jù),以降低頻繁的查詢對數(shù)據(jù)庫產(chǎn)生的壓力。
商旅計費系統(tǒng)數(shù)據(jù)庫模塊是計費系統(tǒng)數(shù)據(jù)記錄業(yè)務(wù)的核心模塊,主要實現(xiàn)計費系統(tǒng)數(shù)據(jù)的增刪改查等功能,圖中橙色業(yè)務(wù)線路是數(shù)據(jù)記錄業(yè)務(wù)主要流程。該流程通過探針程序的形式將商旅服務(wù)計費功能嵌入在商旅服務(wù)業(yè)務(wù)系統(tǒng)中,每當鐵路客票商旅服務(wù)系統(tǒng)產(chǎn)生訂單,計費探針便會將產(chǎn)品數(shù)據(jù)以固定的信息格式傳輸至消息隊列。商旅服務(wù)計費系統(tǒng)會利用監(jiān)聽器實時消費消息隊列中的服務(wù)數(shù)據(jù),并且根據(jù)數(shù)據(jù)不同類型將數(shù)據(jù)存儲至計費系統(tǒng)數(shù)據(jù)庫模塊中,如客戶服務(wù)定義數(shù)據(jù)及商旅服務(wù)明細數(shù)據(jù)等。因此,商旅服務(wù)計費系統(tǒng)數(shù)據(jù)模塊對產(chǎn)品數(shù)據(jù)的準確記錄是計費系統(tǒng)數(shù)據(jù)基礎(chǔ)的支撐,數(shù)據(jù)存儲與補償是數(shù)據(jù)準確記錄的關(guān)鍵技術(shù)和保障。
圖2 鐵路客票商旅服務(wù)計費系統(tǒng)架構(gòu)示意圖Fig.2 Architecture of railway passenger ticket business travel service billing system
計費系統(tǒng)結(jié)算模塊主要實現(xiàn)車票、酒店訂單、餐飲訂單等商旅服務(wù)產(chǎn)品數(shù)據(jù)的自動化對賬。該模塊的對賬對象主要包含服務(wù)生產(chǎn)源及商旅客戶服務(wù)消費源,圖中綠色及紅色業(yè)務(wù)線路分別為內(nèi)部對賬及外部對賬流程。在內(nèi)部對賬流程中數(shù)據(jù)以服務(wù)生產(chǎn)源數(shù)據(jù)為核對標準。當商旅服務(wù)計費系統(tǒng)與服務(wù)生產(chǎn)源進行的內(nèi)部對賬比對修正無誤并生成外部對賬數(shù)據(jù)后,計費系統(tǒng)與商旅客戶發(fā)生的外部對賬才具有實際意義。在外部對賬過程中,鐵路客票商旅服務(wù)計費系統(tǒng)需要將外部對賬數(shù)據(jù)推送給商旅客戶以便客戶自行核對,并通過URL調(diào)用方法完成商旅客戶對賬結(jié)果接受以及轉(zhuǎn)賬結(jié)果轉(zhuǎn)送的消息推送。商旅客戶對賬結(jié)果用于排查業(yè)務(wù)服務(wù)記錄異常,轉(zhuǎn)賬結(jié)果用于通知財務(wù)中心服務(wù)款狀態(tài)。商旅服務(wù)計費系統(tǒng)對賬的數(shù)據(jù)對象具有數(shù)據(jù)量大、類型多等特點,因此準確的自動化對賬以及異常數(shù)據(jù)修正是計費系統(tǒng)對賬模塊的關(guān)鍵技術(shù),也是后續(xù)財務(wù)流程順利進行的保障。
數(shù)據(jù)存儲與補償技術(shù)是鐵路客票商旅服務(wù)計費系統(tǒng)數(shù)據(jù)記錄準確的保障。鐵路客票商旅服務(wù)計費系統(tǒng)通過利用數(shù)據(jù)雙寫和數(shù)據(jù)補償技術(shù)不僅可以保證數(shù)據(jù)記錄的物理隔離,還可以將記錄數(shù)據(jù)與標準數(shù)據(jù)校驗。鐵路客票商旅服務(wù)計費系統(tǒng)數(shù)據(jù)存儲與補償技術(shù)架構(gòu)如圖3所示。如圖3中灰色虛線條及紅色禁止標記所示,如果商旅服務(wù)產(chǎn)生的業(yè)務(wù)數(shù)據(jù)僅僅保留在鐵路客票系統(tǒng)數(shù)據(jù)庫中,那么商旅服務(wù)計費系統(tǒng)的數(shù)據(jù)模塊和ORDER訂單模塊對數(shù)據(jù)的增刪改查都會給鐵路客票系統(tǒng)數(shù)據(jù)庫帶來巨大壓力,為鐵路客票系統(tǒng)帶來安全隱患。為了能夠?qū)⑴c商旅業(yè)務(wù)相關(guān)的鐵路客票數(shù)據(jù)剝離,并且還能夠以鐵路客票數(shù)據(jù)作為商旅服務(wù)計費系統(tǒng)的數(shù)據(jù)標準,提出以下數(shù)據(jù)存儲及補償?shù)倪壿嬃鞒蹋菏紫冉?jīng)過圖中訂單雙寫業(yè)務(wù)流程實現(xiàn)數(shù)據(jù)雙寫與數(shù)據(jù)剝離,再利用數(shù)據(jù)復制、轉(zhuǎn)發(fā)和消費完成數(shù)據(jù)補償,實現(xiàn)鐵路客票數(shù)據(jù)復制,并對標準的訂單等剝離數(shù)據(jù)校正。數(shù)據(jù)存儲與補償在執(zhí)行順序上通過設(shè)定固定遲滯時間將數(shù)據(jù)補償延后,從而避免數(shù)據(jù)庫操作異常。
數(shù)據(jù)存儲主要通過雙寫技術(shù)的理論概念實現(xiàn),當商旅客戶發(fā)起服務(wù)請求后,商旅業(yè)務(wù)系統(tǒng)會將互聯(lián)網(wǎng)端傳送的信息分別發(fā)布給位于客服內(nèi)網(wǎng)的鐵路客票訂單系統(tǒng)以及商旅服務(wù)計費訂單系統(tǒng)。鐵路客票訂單系統(tǒng)會將商旅客戶發(fā)起請求的業(yè)務(wù)數(shù)據(jù)存儲在位于客票網(wǎng)的訂單表和存根表數(shù)據(jù)庫中,鐵路客票商旅服務(wù)計費訂單系統(tǒng)則會通過探針使用消息生產(chǎn)與消費的模式將業(yè)務(wù)數(shù)據(jù)存儲在客服內(nèi)網(wǎng)的服務(wù)費數(shù)據(jù)庫及訂單數(shù)據(jù)庫中。雙寫的本質(zhì)是將位于客票網(wǎng)的商旅訂單相關(guān)數(shù)據(jù)復制剝離存儲在客服內(nèi)網(wǎng)中,減少鐵路客票系統(tǒng)數(shù)據(jù)庫壓力,該雙寫數(shù)據(jù)不是鐵路客票系統(tǒng)數(shù)據(jù)的完整復制,存在字段關(guān)聯(lián)關(guān)系。計費系統(tǒng)雙寫數(shù)據(jù)在存入數(shù)據(jù)庫時,通過使用ShardingSphere的水平分庫策略作為分庫依據(jù),使得數(shù)據(jù)能夠較為平衡地存儲在各個數(shù)據(jù)分庫中[10]。
鐵路客票商旅服務(wù)計費系統(tǒng)數(shù)據(jù)補償通過生產(chǎn)消費的模式對鐵路客票庫數(shù)據(jù)進行復制,并按照隊列的形式將商旅計費庫數(shù)據(jù)排隊,將標準數(shù)據(jù)與商旅計費庫數(shù)據(jù)輪詢比對補償。鐵路客票商旅服務(wù)計費系統(tǒng)數(shù)據(jù)補償原理如圖4所示。數(shù)據(jù)補償主要功能體現(xiàn)于2個方面,首先在數(shù)據(jù)雙寫存儲過程中由于系統(tǒng)異?;蛳到y(tǒng)間響應(yīng)超時導致數(shù)據(jù)存儲雙寫失敗時,數(shù)據(jù)補償可以通過輪詢的比對邏輯將雙寫失敗的數(shù)據(jù)補充。其次,位于客服內(nèi)網(wǎng)的部分數(shù)據(jù)具有狀態(tài)標志字段,數(shù)據(jù)補償還會檢查狀態(tài)標志字段的雙寫結(jié)果是否與標準鐵路客票數(shù)據(jù)狀態(tài)一致,如果不一致則會以鐵路客票數(shù)據(jù)為標準進行補償修改。鐵路客票數(shù)據(jù)經(jīng)過億級訂單量的檢驗,完全具備作為數(shù)據(jù)標準的資格。數(shù)據(jù)補償環(huán)節(jié)中的鐵路客票數(shù)據(jù)是以鐵路客票系統(tǒng)入庫時的SQL消息形式傳遞,通過數(shù)據(jù)庫中間件將鐵路客票數(shù)據(jù)庫的SQL操作信息復制轉(zhuǎn)發(fā)給RocketMQ消息隊列,數(shù)據(jù)補償模塊通過監(jiān)聽器設(shè)置遲滯時間延時消費隊列消息保證補償行為位于數(shù)據(jù)存儲之后。
財務(wù)自動化對賬與修正是鐵路客票商旅服務(wù)計費系統(tǒng)對服務(wù)產(chǎn)品金額精準結(jié)算的保障,也是商旅產(chǎn)品全生命流程管理中的重要一環(huán)。自動化對賬主要分為內(nèi)部對賬與外部對賬,修正主要分為自動化修正與人工修正。內(nèi)部對賬主要涉及鐵路客票商旅服務(wù)計費系統(tǒng)記錄的產(chǎn)品數(shù)據(jù)與服務(wù)生產(chǎn)源鐵路客票系統(tǒng)記錄標準產(chǎn)品數(shù)據(jù)間的核對,在該過程中以鐵路客票系統(tǒng)記錄數(shù)據(jù)為標準,當出現(xiàn)兩方數(shù)據(jù)不一致時,通過自動化修正功能保證鐵路客票商旅服務(wù)計費系統(tǒng)數(shù)據(jù)與鐵路客票系統(tǒng)數(shù)據(jù)吻合。內(nèi)部對賬主要核對2個方面數(shù)據(jù)記錄準確性,分別為數(shù)據(jù)量和記錄金額。在數(shù)據(jù)量異常方面,若鐵路客票商旅服務(wù)計費系統(tǒng)數(shù)據(jù)庫響應(yīng)超時,可能造成服務(wù)數(shù)據(jù)缺失;若位于業(yè)務(wù)系統(tǒng)的計費探針程序重復調(diào)用時,可能造成服務(wù)數(shù)據(jù)重復記錄。在記錄金額方面,主要核對商旅服務(wù)產(chǎn)品價格是否與鐵路客票系統(tǒng)數(shù)據(jù)一致。外部對賬發(fā)生在內(nèi)部對賬之后,主要由商旅客戶通過URL獲取內(nèi)部對賬生成的總結(jié)性數(shù)據(jù)自行核對。
圖3 鐵路客票商旅服務(wù)計費系統(tǒng)數(shù)據(jù)存儲與補償技術(shù)架構(gòu)Fig.3 Technical architecture of data storage and compensation of railway passenger ticket business travel service billing system
圖4 鐵路客票商旅服務(wù)計費系統(tǒng)數(shù)據(jù)補償原理Fig.4 Data compensation principle of railway passenger ticket business travel service billing system
從對賬對象的種類分析,商旅服務(wù)計費系統(tǒng)內(nèi)部對賬與既有鐵路客票系統(tǒng)對賬的區(qū)別為鐵路客票系統(tǒng)的對賬對象種類單一,只需要將所有訂單統(tǒng)一進行核對,而商旅服務(wù)計費系統(tǒng)在內(nèi)部對賬過程中以商旅客戶為單位劃分數(shù)據(jù)種類,在不同商旅客戶單位內(nèi)還需要根據(jù)不同商旅服務(wù)種類分別進行對賬。內(nèi)部對賬流程如圖5所示,通過商旅客戶編號及商旅服務(wù)產(chǎn)品類型2個字段嵌套2層遍歷循環(huán),實現(xiàn)對不同客戶的不同服務(wù)產(chǎn)品進行數(shù)量和金額核對。在每層遍歷過程中對所有異常進行記錄,以便將消息推送給運維人員,從而有跡可查。在自動修正的過程中,主要將商旅服務(wù)計費系統(tǒng)數(shù)據(jù)與標準鐵路客票數(shù)據(jù)進行修正統(tǒng)一,并對自動修正的結(jié)果進行日志記錄,當自動修正失敗時,就需要人工進行手動修正,此時自動修正日志便為人工修正提供記錄支撐。
為了驗證商旅服務(wù)計費系統(tǒng)安全可靠,設(shè)計了鐵路客票商旅服務(wù)計費系統(tǒng)數(shù)據(jù)補償以及對賬修正準確性測試,主要測試了服務(wù)費記錄缺失、重復和雙寫訂單缺失、狀態(tài)偏差的異常場景。對于服務(wù)費及雙寫訂單的缺失異常,系統(tǒng)都可以通過比對記錄數(shù)據(jù)量的策略準確補償,對于服務(wù)費記錄重復的異常,則是通過內(nèi)部對賬的金額不匹配異常修正。商旅雙寫訂單狀態(tài)主要存在退票狀態(tài)及改簽票狀態(tài)與鐵路客票訂單記錄不一致問題,通過數(shù)據(jù)補償機制都可以有效解決。鐵路客票商旅服務(wù)計費系統(tǒng)異常測試如表1所示。
圖5 內(nèi)部對賬流程Fig.5 Internal accounting process
除了對商旅服務(wù)計費系統(tǒng)數(shù)據(jù)補償、對賬修正的準確性進行測試外,有必要對計費系統(tǒng)進行性能測試,其中系統(tǒng)吞吐量(TPS)、CPU利用率及響應(yīng)時間(RT)是衡量系統(tǒng)性能的重要指標。商旅客戶出行構(gòu)成的商旅服務(wù)計費系統(tǒng)業(yè)務(wù)量具備周期性規(guī)律,在預計的非高峰期、弱高峰期及高峰期對服務(wù)器集群應(yīng)該配備不同數(shù)量的服務(wù)器。因此,分別對5臺、8臺及10臺服務(wù)器進行系統(tǒng)性能測試。系統(tǒng)吞吐量隨CPU利用率變化趨勢如圖6所示,3種不同數(shù)量服務(wù)器配備的系統(tǒng)吞吐量隨著CPU利用率的不斷增加而增大,并且系統(tǒng)性能與服務(wù)器配備數(shù)目成正比關(guān)系。系統(tǒng)響應(yīng)時間隨CPU利用率變化趨勢如圖7所示,3種不同數(shù)量服務(wù)器配備的系統(tǒng)響應(yīng)隨著CPU利用率的不斷增加而增大,并且服務(wù)器配備量越大,系統(tǒng)響應(yīng)時間越高,但并不與配屬服務(wù)器臺數(shù)成正比。
從以上測試結(jié)果中可以判定系統(tǒng)性能測試基本達到應(yīng)用要求,在CPU利用率為60%的正常使用情況下,系統(tǒng)平均響應(yīng)時間都在80 ms上下,系統(tǒng)吞吐量也處于優(yōu)良狀態(tài)范圍內(nèi),5臺服務(wù)器的系統(tǒng)吞吐量為1 494,系統(tǒng)響應(yīng)時間為64 ms,完全可以滿足當前商旅客戶量的系統(tǒng)需求。
表1 鐵路客票商旅服務(wù)計費系統(tǒng)異常測試 個Table.1 Abnormal test of railway passenger ticket business travel service billing system
圖6 系統(tǒng)吞吐量隨CPU利用率變化趨勢Fig.6 Trend of system throughput with CPU utilization rate
圖7 系統(tǒng)響應(yīng)時間隨CPU利用率變化趨勢Fig.7 Trend of system response time with CPU utilization rate
為保障鐵路客票商旅服務(wù)平臺的產(chǎn)品數(shù)據(jù)記錄、自動化對賬與修正有充分技術(shù)支撐,通過使用數(shù)據(jù)雙寫、數(shù)據(jù)補償和輪詢比對等策略,搭建了安全且獨立的微服務(wù)鐵路客票商旅服務(wù)計費系統(tǒng)。該計費系統(tǒng)對既有的數(shù)據(jù)缺失、重復及金額不匹配等異??梢詫崿F(xiàn)自動化修正,并且良好的業(yè)務(wù)性能測試證明該系統(tǒng)足以支撐當前商旅客戶量的系統(tǒng)要求,可以更好地保證商旅服務(wù)平臺的運作效率,提高鐵路客票對公服務(wù)的品質(zhì)。