《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 業(yè)界動(dòng)態(tài) > 基于EAI的銀行卡跨行交易系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

基于EAI的銀行卡跨行交易系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2008-05-05
作者:艾 飛1,曹先彬2,葉 靜3

  摘 要: 通過分析EAI的原理、結(jié)合實(shí)際情況和發(fā)展趨勢(shì),基于中間件協(xié)同處理架構(gòu)設(shè)計(jì)了一種符合國際標(biāo)準(zhǔn)的銀行卡跨行交易核心系統(tǒng)架構(gòu)。介紹了交易系統(tǒng)的設(shè)計(jì)原理和框架,針對(duì)系統(tǒng)實(shí)現(xiàn)的不同層次,詳細(xì)論述了完整的銀行卡跨行交易的設(shè)計(jì)和實(shí)現(xiàn)。該支付系統(tǒng)可以實(shí)現(xiàn)系統(tǒng)要求的高可用性和高效率,在交易中實(shí)施多等級(jí)保密性和完整性安全政策,同時(shí)還考慮了基于該框架的交易系統(tǒng)的擴(kuò)展性和實(shí)用性。
  關(guān)鍵詞: 企業(yè)應(yīng)用集成 中間件 消息中間件 交易中間件 聯(lián)機(jī)事務(wù)處理


  現(xiàn)階段EAI的實(shí)現(xiàn)主要使用中間件、Web Services和SOA,它們均可單獨(dú)設(shè)計(jì)和實(shí)現(xiàn)完整的EAI系統(tǒng),也可以互為補(bǔ)充。在這類商用環(huán)境中使用基于EAI的中間件架構(gòu)是當(dāng)前應(yīng)用的主流。本文以一個(gè)跨行交換核心系統(tǒng)為例,提出EAI支付交易系統(tǒng)的架構(gòu)設(shè)計(jì)和實(shí)現(xiàn),并結(jié)合實(shí)例加以說明。
1 系統(tǒng)架構(gòu)設(shè)計(jì)
  金融行業(yè)大集中的思路使得該類管理機(jī)構(gòu)的核心交易系統(tǒng)必須具有空前的吞吐量和實(shí)時(shí)性要求,整個(gè)系統(tǒng)的設(shè)計(jì)要求達(dá)到相當(dāng)?shù)姆€(wěn)定性、高可靠性、高可用性、可擴(kuò)展性和高性能。在整個(gè)系統(tǒng)的設(shè)計(jì)中,交易的轉(zhuǎn)接處理包括兩層含義:(1)轉(zhuǎn)接指管理中心卡成員機(jī)構(gòu)之間的報(bào)文交換,如來自機(jī)構(gòu)A的報(bào)文,經(jīng)過轉(zhuǎn)發(fā)以另一種格式將消息送到機(jī)構(gòu)B;(2)處理指每筆報(bào)文在進(jìn)入管理機(jī)構(gòu)交換系統(tǒng)后會(huì)有相應(yīng)的處理,包括各種驗(yàn)證、記錄、加解密、改變報(bào)文格式等,這時(shí)對(duì)每筆報(bào)文的一次處理稱為一筆交易。
1.1 系統(tǒng)功能性架構(gòu)
  系統(tǒng)由多個(gè)功能模塊構(gòu)成,其系統(tǒng)架構(gòu)如圖1所示。


1.1.1 交易接入子模塊
  交易接入子模塊接收來自成員機(jī)構(gòu)的交易請(qǐng)求,并將請(qǐng)求均衡分配發(fā)送到交易處理模塊" title="處理模塊">處理模塊中的各應(yīng)用服務(wù)器,同時(shí)還負(fù)責(zé)交易處理模塊處理后向發(fā)卡行發(fā)送的信息并返回發(fā)卡行發(fā)出的處理結(jié)果,最后將交易的結(jié)果返回到收單行。要正確完成這些階段的交易信息發(fā)送工作關(guān)鍵在于交易消息的可靠傳遞。這里采用了消息中間件來完成這些任務(wù)。消息中間件的業(yè)務(wù)實(shí)現(xiàn)非常簡單,且便于應(yīng)用設(shè)計(jì)。由于發(fā)卡行的規(guī)模、各行間ATM機(jī)和POS機(jī)數(shù)量存在差異,且特定時(shí)期(如節(jié)假日、促銷期間)的交易量會(huì)出現(xiàn)階段高峰值,因此必須通過消息中間件的均衡負(fù)載將大量的交易請(qǐng)求平均分配到不同的應(yīng)用服務(wù)器上,以減少某一服務(wù)器因接收大量交易請(qǐng)求導(dǎo)致性能下降,給整個(gè)業(yè)務(wù)帶來的影響。
1.1.2 交易處理子模塊
  交易處理子模塊則是處理來自交易接入模塊的信息,對(duì)其有效性進(jìn)行判斷,并向數(shù)據(jù)庫進(jìn)行交易信息的記載和更改,同時(shí)交易處理模塊還將對(duì)交易進(jìn)行超時(shí)判斷。在系統(tǒng)中,交易處理模塊由一組安裝了交易中間件的應(yīng)用服務(wù)器(如IBM的CICS、BEA的Tuxedo,本文以CICS為例進(jìn)行說明)和消息服務(wù)器(如IBM的WebSphere MQ,本文以MQ為例進(jìn)行說明)的服務(wù)器集群組成。
1.1.3 數(shù)據(jù)處理子模塊
  數(shù)據(jù)處理子模塊包括在線數(shù)據(jù)庫處理系統(tǒng)" title="處理系統(tǒng)">處理系統(tǒng)和查詢清分?jǐn)?shù)據(jù)庫處理系統(tǒng)。在線數(shù)據(jù)庫處理系統(tǒng)負(fù)責(zé)記載和更改交易信息。查詢清分?jǐn)?shù)據(jù)庫處理系統(tǒng)則是利用消息中間件的數(shù)據(jù)傳輸功能每隔幾分鐘將在線數(shù)據(jù)庫的信息傳入查詢清分?jǐn)?shù)據(jù)庫,供內(nèi)部和各發(fā)卡行成員對(duì)交易進(jìn)行查詢。這樣可以減少大量查詢對(duì)在線數(shù)據(jù)庫的性能影響。
  交易的接入和處理均采用MQ群集來做交易服務(wù)器與消息服務(wù)器之間的負(fù)載均衡" title="負(fù)載均衡">負(fù)載均衡。MQ群集服務(wù)缺省采用輪循(Round Robin)算法對(duì)負(fù)載進(jìn)行分配。也可以使用MQ的API接口,通過應(yīng)用監(jiān)測(cè)服務(wù)器的負(fù)載指數(shù)自主決定消息服務(wù)器的負(fù)載均衡算法。通常,大型商業(yè)銀行由于發(fā)卡數(shù)量大,自動(dòng)柜員機(jī)數(shù)量也多,則它作為受理方和發(fā)卡方的機(jī)會(huì)肯定遠(yuǎn)大于較小的發(fā)卡行。采用消息服務(wù)器的負(fù)載均衡能很好地解決高負(fù)載接入時(shí)壓力集中的問題。
2 核心構(gòu)件平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)
2.1 核心構(gòu)件及平臺(tái)特性

  在整個(gè)架構(gòu)中,系統(tǒng)接收來自發(fā)卡行ATM機(jī)取/存款和POS機(jī)消費(fèi)的ISO8583報(bào)文。ISO8583(Financial Transaction Card Originated Message-Interchange Message Specification)標(biāo)準(zhǔn)用來對(duì)廣域網(wǎng)中傳輸?shù)男庞每?、借記卡、銀行卡以及金融交易的信息進(jìn)行監(jiān)測(cè)、捕獲和解碼。系統(tǒng)中核心的部件就是消息中間件群集和交易中間件群集,通過這兩類中間件的使用實(shí)現(xiàn)了銀行卡的交易結(jié)算等服務(wù),同時(shí)這樣的體系架構(gòu)可以很好地做到系統(tǒng)的集中式管理,解決了異構(gòu)環(huán)境下行與行之間互聯(lián)互通的分布式信息集成與交換,能夠保證系統(tǒng)對(duì)海量交易處理的高可用性和高效性。
  消息中間件MOM(Message Orient Middleware)用于不同的平臺(tái)間通信,實(shí)現(xiàn)分布式系統(tǒng)中可靠、高效、實(shí)時(shí)的跨平臺(tái)數(shù)據(jù)傳輸,在整個(gè)架構(gòu)中起到數(shù)據(jù)總線(Data Bus)的作用,由MQ承上啟下地將對(duì)外 TCP 連接與對(duì)內(nèi)交易處理有機(jī)地結(jié)合在一起。MQ負(fù)責(zé)將核心交換子系統(tǒng)與代授權(quán)等其他子系統(tǒng)聯(lián)系在一起。事務(wù)處理中間件TP(Transaction Processing)實(shí)現(xiàn)分布式系統(tǒng)中的大規(guī)模事務(wù)處理,主要用于聯(lián)機(jī)事務(wù)處理(OLTP),管理分布于異構(gòu)或同構(gòu)系統(tǒng)的數(shù)據(jù)一致性,協(xié)調(diào)數(shù)據(jù)庫處理分布式事務(wù),保障整個(gè)系統(tǒng)的性能和可靠性。該類應(yīng)用的交換核心是一個(gè)典型的OLTP系統(tǒng),所以交易中間件是整個(gè)交易工作的基本框架。
2.2 交易系統(tǒng)詳述
2.2.1 交易接入層" title="接入層">接入層詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)
  交易接入層模塊架構(gòu)如圖2所示。


  (1)交易接入層的工作內(nèi)容
  對(duì)于交易接入層,其商業(yè)邏輯包括兩個(gè)部分:①接收上行請(qǐng)求的TCP Sockets的ISO8583報(bào)文消息包,并放入MQ隊(duì)列池進(jìn)行排隊(duì);②發(fā)送下行響應(yīng)的TCP Sockets的ISO8583報(bào)文消息包。
  交易接入子模塊接收來自發(fā)卡行的交易請(qǐng)求,并將交易均衡發(fā)送到交易處理模塊的各應(yīng)用服務(wù)器上,同時(shí)交易接入模塊還負(fù)責(zé)傳送交易處理模塊向發(fā)卡行發(fā)送的信息并將發(fā)卡行發(fā)出的處理結(jié)果返回到收單行。正確完成該階段交易信息發(fā)送的關(guān)鍵在于可靠傳遞交易消息,因此采用MQ消息中間件來完成。
  交易接入子模塊包括輸入網(wǎng)關(guān)和輸出網(wǎng)關(guān)兩部分:①輸入網(wǎng)關(guān)是MQ群集中的一臺(tái)QMGR,主要作用是作為MQ的消息入口把消息分發(fā)至MQ群集中其他本地隊(duì)列,利用MQ群集的功能實(shí)現(xiàn)消息的負(fù)載均衡。在輸入網(wǎng)關(guān)前端由模擬終端向MQ群集發(fā)送ISO8583報(bào)文。②輸出網(wǎng)關(guān)是MQ群集的消息出口,負(fù)責(zé)把消息轉(zhuǎn)換成ISO8583報(bào)文發(fā)送給模擬終端,再由模擬終端通過TCP Sockets發(fā)給成員單位。
  交易接入層負(fù)責(zé)報(bào)文的收發(fā)工作,接收來自發(fā)卡行的ISO8583報(bào)文,將其送入交易處理模塊,并將交易處理模塊的處理結(jié)果以ISO8583報(bào)文格式送回請(qǐng)求機(jī)構(gòu)。交易接入層同時(shí)與兩個(gè)通信模塊進(jìn)行交互,對(duì)外與每一個(gè)成員機(jī)構(gòu)有單工 TCP/IP 連接,對(duì)內(nèi)要與數(shù)據(jù)總線上的MQ系統(tǒng)保持通信。
  (2)交易接入層的負(fù)載均衡
  負(fù)載均衡是接入模塊必須實(shí)現(xiàn)的重要功能,主要包括兩個(gè)方面:①回送響應(yīng)的負(fù)載均衡。發(fā)卡行的上行連接(成員機(jī)構(gòu)到管理機(jī)構(gòu))的負(fù)載由機(jī)構(gòu)自行安排,下行連接(管理機(jī)構(gòu)到發(fā)卡行)的響應(yīng)負(fù)載則由交易核心系統(tǒng)進(jìn)行控制。在設(shè)計(jì)中每個(gè)成員機(jī)構(gòu)的下行消息都從一個(gè)設(shè)定的消息隊(duì)列中取得,所以針對(duì)該機(jī)構(gòu)的響應(yīng)消息連接之間的負(fù)載均衡是通過消息中間件自動(dòng)完成的。②交易處理服務(wù)器間的負(fù)載均衡。上行消息由交易接入層接收后通過MQ群集發(fā)送至交易處理層進(jìn)行處理,處理層可以是配置MQ群集的多機(jī)環(huán)境,并且在每個(gè)隊(duì)列管理器上建立同名的隊(duì)列,它們之間的負(fù)載平衡是通過MQ群集來管理的。
  (3)交易接入層的出錯(cuò)處理
  接入消息的出錯(cuò)處理,如果從消息頭上可以判斷出消息出錯(cuò),或是收到了亂碼,則這種消息為錯(cuò)誤消息,既沒有記錄價(jià)值也無法處理,通常可以在接入層直接丟棄。如果需要斷開連接,或是請(qǐng)求方主動(dòng)斷開連接,監(jiān)控服務(wù)一旦偵測(cè)到,應(yīng)立即在數(shù)據(jù)庫中設(shè)置成員機(jī)構(gòu)連接狀態(tài),使后續(xù)的交易能及時(shí)地改變路由,或轉(zhuǎn)向代授權(quán)系統(tǒng)。至于消息隊(duì)列中的殘留消息可以通過消息超時(shí)設(shè)置,在交易超時(shí)之前進(jìn)行處理,而不會(huì)在通信恢復(fù)后重發(fā)已超時(shí)的消息請(qǐng)求或應(yīng)答。
2.2.2 交易處理層詳細(xì)設(shè)計(jì)
  交易層處理邏輯如圖3所示。


  (1)交易處理層的消息處理
  消息由接入層接收后通過消息中間件群集發(fā)送到交易處理層進(jìn)行處理。交易處理模塊由一組安裝了CICS交易服務(wù)器和MQ消息服務(wù)器的服務(wù)器集群組成。處理層可以是多機(jī)環(huán)境,上面裝有MQ Server,也加入 MQ Cluster,并且每個(gè)隊(duì)列管理器上有同名隊(duì)列,它們之間的負(fù)載均衡由MQ群集管理。交易處理模塊則是處理來自交易接入模塊的信息,對(duì)其有效性進(jìn)行判斷,并向數(shù)據(jù)庫進(jìn)行交易信息的插入和更改,同時(shí)交易處理模塊對(duì)交易進(jìn)行超時(shí)控制。
  (2)交易處理中的消息路由選擇
  請(qǐng)求消息的路由選擇是通過查找路由表" title="路由表">路由表實(shí)現(xiàn)的。路由表是一張存放于后臺(tái)數(shù)據(jù)庫系統(tǒng)中的表,約有20萬~30萬條記錄。但是通常應(yīng)用可以緩存其中最常用的一千種卡記錄。路由表中包含有銀行卡卡號(hào)、發(fā)卡行機(jī)構(gòu)代碼、隊(duì)列名等信息。
  對(duì)于受理方發(fā)往處理中心的請(qǐng)求消息,系統(tǒng)根據(jù)卡號(hào)查找路由表,確定發(fā)卡銀行所對(duì)應(yīng)的MQ消息隊(duì)列。系統(tǒng)的設(shè)計(jì)要求達(dá)到每秒處理3 000筆交易請(qǐng)求,即每秒有3 000條請(qǐng)求消息需要使用路由表查詢,因此路由表查詢效率將對(duì)系統(tǒng)的吞吐量有直接影響。
  消息路由是指從來自成員機(jī)構(gòu)A的消息報(bào)文中判斷它的去向(成員機(jī)構(gòu)B)。對(duì)于交易請(qǐng)求報(bào)文,可以根據(jù)銀行卡號(hào)查詢BIN表,找到相對(duì)應(yīng)的發(fā)卡機(jī)構(gòu)代碼,按照銀行卡交易的國際標(biāo)準(zhǔn)生成相應(yīng)的代碼后發(fā)給發(fā)卡方。對(duì)于消息應(yīng)答報(bào)文,可以根據(jù)相應(yīng)的域找到原來的交易,記錄后修改消息,并發(fā)往受理行。
  (3)交易信息的加密與解密
  交易中需要硬件加密解密的字段有兩個(gè):MAC值和PIN值。MAC值的作用是為了驗(yàn)證消息來源,對(duì)報(bào)文消息加密后形成 MAC碼,受理行、發(fā)卡行和管理中心在收到對(duì)方的消息后要經(jīng)過計(jì)算與MAC碼比較。如果比較一致,說明報(bào)文在傳輸過程中未被修改,也說明對(duì)方是用同一個(gè)密鑰對(duì)報(bào)文消息進(jìn)行加密的,從而對(duì)成員機(jī)構(gòu)進(jìn)行確認(rèn)。對(duì)卡信息的MAC值校驗(yàn)和加/解密處理在CICS中完成。每筆交易信息在CICS中并發(fā)處理,因此對(duì)卡信息的MAC值校驗(yàn)和加/解密處理是并發(fā)的。PIN值是持卡人的密碼,在傳輸全過程中不可以出現(xiàn)明碼。在受理行一側(cè),PIN字段用受理行的密鑰加密,如果管理機(jī)構(gòu)不做轉(zhuǎn)換,直接發(fā)往發(fā)卡行,而發(fā)卡行沒有受理行的密鑰,所以密文無法與持卡人賬戶上的密碼匹配。PIN的轉(zhuǎn)換工作是在硬件加密機(jī)中進(jìn)行的,加密機(jī)中同時(shí)有受理行和發(fā)卡行的密鑰,經(jīng)過計(jì)算實(shí)現(xiàn)從密碼到密碼的轉(zhuǎn)換過程。
  交易加密時(shí)調(diào)用加密API,如果加密機(jī)的性能足夠,可以采用同步調(diào)用。如果需要較長的等待時(shí)間,可以采用異步調(diào)用方式。此外,加密機(jī)可以多臺(tái)并行以增加吞吐量。
參考文獻(xiàn)
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.杭州:浙江大學(xué)出版社,2000
4 張志檁.中間件—技術(shù) 產(chǎn)品 應(yīng)用.北京:中國石化出版社,2002

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。