《电子技术应用》
您所在的位置:首页 > 通信与网络 > 业界动态 > 基于EAI的银行卡跨行交易系统的设计与实现

基于EAI的银行卡跨行交易系统的设计与实现

2008-05-05
作者:艾 飞1,曹先彬2,叶 静3

  摘 要: 通过分析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

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。