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