摘 要: 通過分析EAI的原理、結(jié)合實際情況和發(fā)展趨勢,基于中間件協(xié)同處理架構(gòu)設(shè)計了一種符合國際標準的銀行卡跨行交易核心系統(tǒng)架構(gòu)。介紹了交易系統(tǒng)的設(shè)計原理和框架,針對系統(tǒng)實現(xiàn)的不同層次,詳細論述了完整的銀行卡跨行交易的設(shè)計和實現(xiàn)。該支付系統(tǒng)可以實現(xiàn)系統(tǒng)要求的高可用性和高效率,在交易中實施多等級保密性和完整性安全政策,同時還考慮了基于該框架的交易系統(tǒng)的擴展性和實用性。
關(guān)鍵詞: 企業(yè)應(yīng)用集成 中間件 消息中間件 交易中間件 聯(lián)機事務(wù)處理
現(xiàn)階段EAI的實現(xiàn)主要使用中間件、Web Services和SOA,它們均可單獨設(shè)計和實現(xiàn)完整的EAI系統(tǒng),也可以互為補充。在這類商用環(huán)境中使用基于EAI的中間件架構(gòu)是當前應(yīng)用的主流。本文以一個跨行交換核心系統(tǒng)為例,提出EAI支付交易系統(tǒng)的架構(gòu)設(shè)計和實現(xiàn),并結(jié)合實例加以說明。
1 系統(tǒng)架構(gòu)設(shè)計
金融行業(yè)大集中的思路使得該類管理機構(gòu)的核心交易系統(tǒng)必須具有空前的吞吐量和實時性要求,整個系統(tǒng)的設(shè)計要求達到相當?shù)姆€(wěn)定性、高可靠性、高可用性、可擴展性和高性能。在整個系統(tǒng)的設(shè)計中,交易的轉(zhuǎn)接處理包括兩層含義:(1)轉(zhuǎn)接指管理中心卡成員機構(gòu)之間的報文交換,如來自機構(gòu)A的報文,經(jīng)過轉(zhuǎn)發(fā)以另一種格式將消息送到機構(gòu)B;(2)處理指每筆報文在進入管理機構(gòu)交換系統(tǒng)后會有相應(yīng)的處理,包括各種驗證、記錄、加解密、改變報文格式等,這時對每筆報文的一次處理稱為一筆交易。
1.1 系統(tǒng)功能性架構(gòu)
系統(tǒng)由多個功能模塊構(gòu)成,其系統(tǒng)架構(gòu)如圖1所示。
1.1.1 交易接入子模塊
交易接入子模塊接收來自成員機構(gòu)的交易請求,并將請求均衡分配發(fā)送到交易處理模塊" title="處理模塊">處理模塊中的各應(yīng)用服務(wù)器,同時還負責交易處理模塊處理后向發(fā)卡行發(fā)送的信息并返回發(fā)卡行發(fā)出的處理結(jié)果,最后將交易的結(jié)果返回到收單行。要正確完成這些階段的交易信息發(fā)送工作關(guān)鍵在于交易消息的可靠傳遞。這里采用了消息中間件來完成這些任務(wù)。消息中間件的業(yè)務(wù)實現(xiàn)非常簡單,且便于應(yīng)用設(shè)計。由于發(fā)卡行的規(guī)模、各行間ATM機和POS機數(shù)量存在差異,且特定時期(如節(jié)假日、促銷期間)的交易量會出現(xiàn)階段高峰值,因此必須通過消息中間件的均衡負載將大量的交易請求平均分配到不同的應(yīng)用服務(wù)器上,以減少某一服務(wù)器因接收大量交易請求導(dǎo)致性能下降,給整個業(yè)務(wù)帶來的影響。
1.1.2 交易處理子模塊
交易處理子模塊則是處理來自交易接入模塊的信息,對其有效性進行判斷,并向數(shù)據(jù)庫進行交易信息的記載和更改,同時交易處理模塊還將對交易進行超時判斷。在系統(tǒng)中,交易處理模塊由一組安裝了交易中間件的應(yīng)用服務(wù)器(如IBM的CICS、BEA的Tuxedo,本文以CICS為例進行說明)和消息服務(wù)器(如IBM的WebSphere MQ,本文以MQ為例進行說明)的服務(wù)器集群組成。
1.1.3 數(shù)據(jù)處理子模塊
數(shù)據(jù)處理子模塊包括在線數(shù)據(jù)庫處理系統(tǒng)" title="處理系統(tǒng)">處理系統(tǒng)和查詢清分數(shù)據(jù)庫處理系統(tǒng)。在線數(shù)據(jù)庫處理系統(tǒng)負責記載和更改交易信息。查詢清分數(shù)據(jù)庫處理系統(tǒng)則是利用消息中間件的數(shù)據(jù)傳輸功能每隔幾分鐘將在線數(shù)據(jù)庫的信息傳入查詢清分數(shù)據(jù)庫,供內(nèi)部和各發(fā)卡行成員對交易進行查詢。這樣可以減少大量查詢對在線數(shù)據(jù)庫的性能影響。
交易的接入和處理均采用MQ群集來做交易服務(wù)器與消息服務(wù)器之間的負載均衡" title="負載均衡">負載均衡。MQ群集服務(wù)缺省采用輪循(Round Robin)算法對負載進行分配。也可以使用MQ的API接口,通過應(yīng)用監(jiān)測服務(wù)器的負載指數(shù)自主決定消息服務(wù)器的負載均衡算法。通常,大型商業(yè)銀行由于發(fā)卡數(shù)量大,自動柜員機數(shù)量也多,則它作為受理方和發(fā)卡方的機會肯定遠大于較小的發(fā)卡行。采用消息服務(wù)器的負載均衡能很好地解決高負載接入時壓力集中的問題。
2 核心構(gòu)件平臺的設(shè)計與實現(xiàn)
2.1 核心構(gòu)件及平臺特性
在整個架構(gòu)中,系統(tǒng)接收來自發(fā)卡行ATM機取/存款和POS機消費的ISO8583報文。ISO8583(Financial Transaction Card Originated Message-Interchange Message Specification)標準用來對廣域網(wǎng)中傳輸?shù)男庞每?、借記卡、銀行卡以及金融交易的信息進行監(jiān)測、捕獲和解碼。系統(tǒng)中核心的部件就是消息中間件群集和交易中間件群集,通過這兩類中間件的使用實現(xiàn)了銀行卡的交易結(jié)算等服務(wù),同時這樣的體系架構(gòu)可以很好地做到系統(tǒng)的集中式管理,解決了異構(gòu)環(huán)境下行與行之間互聯(lián)互通的分布式信息集成與交換,能夠保證系統(tǒng)對海量交易處理的高可用性和高效性。
消息中間件MOM(Message Orient Middleware)用于不同的平臺間通信,實現(xiàn)分布式系統(tǒng)中可靠、高效、實時的跨平臺數(shù)據(jù)傳輸,在整個架構(gòu)中起到數(shù)據(jù)總線(Data Bus)的作用,由MQ承上啟下地將對外 TCP 連接與對內(nèi)交易處理有機地結(jié)合在一起。MQ負責將核心交換子系統(tǒng)與代授權(quán)等其他子系統(tǒng)聯(lián)系在一起。事務(wù)處理中間件TP(Transaction Processing)實現(xiàn)分布式系統(tǒng)中的大規(guī)模事務(wù)處理,主要用于聯(lián)機事務(wù)處理(OLTP),管理分布于異構(gòu)或同構(gòu)系統(tǒng)的數(shù)據(jù)一致性,協(xié)調(diào)數(shù)據(jù)庫處理分布式事務(wù),保障整個系統(tǒng)的性能和可靠性。該類應(yīng)用的交換核心是一個典型的OLTP系統(tǒng),所以交易中間件是整個交易工作的基本框架。
2.2 交易系統(tǒng)詳述
2.2.1 交易接入層" title="接入層">接入層詳細設(shè)計與實現(xiàn)
交易接入層模塊架構(gòu)如圖2所示。
(1)交易接入層的工作內(nèi)容
對于交易接入層,其商業(yè)邏輯包括兩個部分:①接收上行請求的TCP Sockets的ISO8583報文消息包,并放入MQ隊列池進行排隊;②發(fā)送下行響應(yīng)的TCP Sockets的ISO8583報文消息包。
交易接入子模塊接收來自發(fā)卡行的交易請求,并將交易均衡發(fā)送到交易處理模塊的各應(yīng)用服務(wù)器上,同時交易接入模塊還負責傳送交易處理模塊向發(fā)卡行發(fā)送的信息并將發(fā)卡行發(fā)出的處理結(jié)果返回到收單行。正確完成該階段交易信息發(fā)送的關(guān)鍵在于可靠傳遞交易消息,因此采用MQ消息中間件來完成。
交易接入子模塊包括輸入網(wǎng)關(guān)和輸出網(wǎng)關(guān)兩部分:①輸入網(wǎng)關(guān)是MQ群集中的一臺QMGR,主要作用是作為MQ的消息入口把消息分發(fā)至MQ群集中其他本地隊列,利用MQ群集的功能實現(xiàn)消息的負載均衡。在輸入網(wǎng)關(guān)前端由模擬終端向MQ群集發(fā)送ISO8583報文。②輸出網(wǎng)關(guān)是MQ群集的消息出口,負責把消息轉(zhuǎn)換成ISO8583報文發(fā)送給模擬終端,再由模擬終端通過TCP Sockets發(fā)給成員單位。
交易接入層負責報文的收發(fā)工作,接收來自發(fā)卡行的ISO8583報文,將其送入交易處理模塊,并將交易處理模塊的處理結(jié)果以ISO8583報文格式送回請求機構(gòu)。交易接入層同時與兩個通信模塊進行交互,對外與每一個成員機構(gòu)有單工 TCP/IP 連接,對內(nèi)要與數(shù)據(jù)總線上的MQ系統(tǒng)保持通信。
(2)交易接入層的負載均衡
負載均衡是接入模塊必須實現(xiàn)的重要功能,主要包括兩個方面:①回送響應(yīng)的負載均衡。發(fā)卡行的上行連接(成員機構(gòu)到管理機構(gòu))的負載由機構(gòu)自行安排,下行連接(管理機構(gòu)到發(fā)卡行)的響應(yīng)負載則由交易核心系統(tǒng)進行控制。在設(shè)計中每個成員機構(gòu)的下行消息都從一個設(shè)定的消息隊列中取得,所以針對該機構(gòu)的響應(yīng)消息連接之間的負載均衡是通過消息中間件自動完成的。②交易處理服務(wù)器間的負載均衡。上行消息由交易接入層接收后通過MQ群集發(fā)送至交易處理層進行處理,處理層可以是配置MQ群集的多機環(huán)境,并且在每個隊列管理器上建立同名的隊列,它們之間的負載平衡是通過MQ群集來管理的。
(3)交易接入層的出錯處理
接入消息的出錯處理,如果從消息頭上可以判斷出消息出錯,或是收到了亂碼,則這種消息為錯誤消息,既沒有記錄價值也無法處理,通常可以在接入層直接丟棄。如果需要斷開連接,或是請求方主動斷開連接,監(jiān)控服務(wù)一旦偵測到,應(yīng)立即在數(shù)據(jù)庫中設(shè)置成員機構(gòu)連接狀態(tài),使后續(xù)的交易能及時地改變路由,或轉(zhuǎn)向代授權(quán)系統(tǒng)。至于消息隊列中的殘留消息可以通過消息超時設(shè)置,在交易超時之前進行處理,而不會在通信恢復(fù)后重發(fā)已超時的消息請求或應(yīng)答。
2.2.2 交易處理層詳細設(shè)計
交易層處理邏輯如圖3所示。
(1)交易處理層的消息處理
消息由接入層接收后通過消息中間件群集發(fā)送到交易處理層進行處理。交易處理模塊由一組安裝了CICS交易服務(wù)器和MQ消息服務(wù)器的服務(wù)器集群組成。處理層可以是多機環(huán)境,上面裝有MQ Server,也加入 MQ Cluster,并且每個隊列管理器上有同名隊列,它們之間的負載均衡由MQ群集管理。交易處理模塊則是處理來自交易接入模塊的信息,對其有效性進行判斷,并向數(shù)據(jù)庫進行交易信息的插入和更改,同時交易處理模塊對交易進行超時控制。
(2)交易處理中的消息路由選擇
請求消息的路由選擇是通過查找路由表" title="路由表">路由表實現(xiàn)的。路由表是一張存放于后臺數(shù)據(jù)庫系統(tǒng)中的表,約有20萬~30萬條記錄。但是通常應(yīng)用可以緩存其中最常用的一千種卡記錄。路由表中包含有銀行卡卡號、發(fā)卡行機構(gòu)代碼、隊列名等信息。
對于受理方發(fā)往處理中心的請求消息,系統(tǒng)根據(jù)卡號查找路由表,確定發(fā)卡銀行所對應(yīng)的MQ消息隊列。系統(tǒng)的設(shè)計要求達到每秒處理3 000筆交易請求,即每秒有3 000條請求消息需要使用路由表查詢,因此路由表查詢效率將對系統(tǒng)的吞吐量有直接影響。
消息路由是指從來自成員機構(gòu)A的消息報文中判斷它的去向(成員機構(gòu)B)。對于交易請求報文,可以根據(jù)銀行卡號查詢BIN表,找到相對應(yīng)的發(fā)卡機構(gòu)代碼,按照銀行卡交易的國際標準生成相應(yīng)的代碼后發(fā)給發(fā)卡方。對于消息應(yīng)答報文,可以根據(jù)相應(yīng)的域找到原來的交易,記錄后修改消息,并發(fā)往受理行。
(3)交易信息的加密與解密
交易中需要硬件加密解密的字段有兩個:MAC值和PIN值。MAC值的作用是為了驗證消息來源,對報文消息加密后形成 MAC碼,受理行、發(fā)卡行和管理中心在收到對方的消息后要經(jīng)過計算與MAC碼比較。如果比較一致,說明報文在傳輸過程中未被修改,也說明對方是用同一個密鑰對報文消息進行加密的,從而對成員機構(gòu)進行確認。對卡信息的MAC值校驗和加/解密處理在CICS中完成。每筆交易信息在CICS中并發(fā)處理,因此對卡信息的MAC值校驗和加/解密處理是并發(fā)的。PIN值是持卡人的密碼,在傳輸全過程中不可以出現(xiàn)明碼。在受理行一側(cè),PIN字段用受理行的密鑰加密,如果管理機構(gòu)不做轉(zhuǎn)換,直接發(fā)往發(fā)卡行,而發(fā)卡行沒有受理行的密鑰,所以密文無法與持卡人賬戶上的密碼匹配。PIN的轉(zhuǎn)換工作是在硬件加密機中進行的,加密機中同時有受理行和發(fā)卡行的密鑰,經(jīng)過計算實現(xiàn)從密碼到密碼的轉(zhuǎn)換過程。
交易加密時調(diào)用加密API,如果加密機的性能足夠,可以采用同步調(diào)用。如果需要較長的等待時間,可以采用異步調(diào)用方式。此外,加密機可以多臺并行以增加吞吐量。
參考文獻
1 Britton C.IT architectures and middleware:Strategies for building large,integrated systems.Addison-Wesley Profes-sional,2000
2 Juric M,Nagappan R,Leander R et al.Professional J2EE EAI.Peer Information Inc,2001
3 劉發(fā)貴,王宇君.IBM S/390事務(wù)處理CICS.杭州:浙江大學出版社,2000
4 張志檁.中間件—技術(shù) 產(chǎn)品 應(yīng)用.北京:中國石化出版社,2002