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