消息中间件在联网交易系统中的应用设计与实现
2009-02-25
作者:单纯1 杨富玉2
1. 引言
2005年中国人民银行、国家税务总局和财政部启动了以国库为中心的税(税务)、库(国库)、银(银行)横向联网建设工程。其中横向联网系统的实时交易处理流程主要有两种:
第一种为从税务发起的实时扣税:
(1) 纳税人到税务大厅,或者通过税务网上自助纳税系统,发起纳税,纳税人等候处理结果;
(2) 税务征管系统接收到纳税请求后,将扣税报文发送到人民银行国库信息处理系统(Treasury Information Processing System , 以下简称TIPS);
(3) TIPS进行信息校验,并存储扣税信息,然后将扣税信息转发到纳税人的开户银行;
(4) 开户银行按照扣税指令,进行校验后,对指定账户进行扣款,将扣款回执传回TIPS;
(5) TIPS进行信息匹配,并更改扣税状态,将扣税回执转发给税务征管系统;
(6) 税务征管系统匹配扣税回执,将扣税结果,反馈给纳税大厅,或者网上纳税系统;
(7) 纳税人获知纳税结果。
第二种为从银行发起的缴税:
(1) 纳税人到银行大厅,或者通过网上银行,发起缴税请求,纳税人等候处理结果;
(2) 银行后台系统接收到缴税请求后,将缴税请求报文发送到TIPS;
(3) TIPS存储缴税请求信息后,将缴税请求信息转发到税务征管系统;
(4) 税务征管系统检索纳税信息,将扣税报文发送至TIPS;
(5) TIPS存储扣税报文,并返回银行系统;
(6) 银行系统收到扣税报文后,匹配缴款请求,并反馈给银行对公大厅,或者网上银行;
(7) 纳税人确认纳税项目和金额;
(8) 银行后台系统收到扣税确认后,从指定账户扣款,将扣款回执传回TIPS;
(9) TIPS进行信息匹配,并更改扣税状态,将扣税回执转发给税务征管系统;
(10) 税务征管系统按照扣税回执,更改纳税信息状态。
2. 系统分析
在上述两种业务流程中,纳税人无论在税务端发起,还是在银行端发起,都要等待处理结果,系统平均响应时间应不超过5秒,最大响应时间不超过20秒。如果响应时间超过20秒,业务发起端就要自动发起冲正指令,取消此笔交易。
其中联网税务节点包括32个省级国税、32个省级地税、600余个地市级国地税,总数将达到700个左右。联网银行节点包括14个全国性商业银行,100余个城市商业银行,100余个城市和农村信用社,总数将达到300余个左右。在纳税高峰期,TIPS需要每秒钟转接处理报文1000笔。这就要求横向联网系统必须具有高性能、高可用和高扩展性,是对系统实时处理的挑战。
在整个联网交易中,存在四种角色,即交易发起者(人机交互界面)、数据交换服务发起者、数据交换服务中转者和数据交换服务响应者。如图1所示。
图1发起/请求/中转/响应模式示意图
交易发起者,具体是指征管系统前台操作员操作征管软件发起纳税;或者纳税人操作网上自助纳税系统纳税;或者银行柜台操作员操作银行系统前台发起纳税;或者纳税人操作网上银行自助纳税。
数据交换服务发起者,包括构造请求报文,并将请求报文发送至数据交换服务中转者;接收响应/回执报文,以及对响应/回执报文的解析和其他后续处理。
数据交换服务中转者,负责请求报文和响应/回执数据包的转发,及数据处理。
数据交换服务响应者,负责接收、解析、处理请求报文,根据处理结果构造响应/回执报文,并将响应/回执报文转发给数据交换服务中转者。
按照客户端/服务器模型,可以将上述4个角色,划分成3对客户端/服务器关系。交易发起者和数据交换服务发起者之间,交易发起者(人机交互界面)为客户端,数据交换服务发起者为服务器端。数据交换服务发起者和数据交换服务中转者之间,数据交换服务发起者为客户端,数据交换服务中转者为服务器端。数据交换服务中转者和数据交换服务响应者之间,数据交换服务中转者为客户端,数据交换服务响应者为服务器端。客户端和服务器端处理模式分同步和异步两种模式[1]。同步模式表示客户端向服务器端发起请求后,等待服务器处理完请求并返回结果。异步模式表示客户端向服务器端发起请求后,不等待服务器返回结果。
由于存在从税务发起和银行发起两种实时交易流程。因此税务系统既有可能为数据交换发起者,又有可能为数据交换服务响应者;银行系统既有可能为数据交换服务响应者,又有可能为数据交换服务发起者。这样便意味着税务系统、TIPS和银行系统均有可能成为服务器端。
3. 联网体系架构设计
图2 联网体系架构示意图
如图2所示,TIPS、税务、银行通过消息中间件建立起数据交换通道。TIPS中心由数据库、基于J2EE架构的交易服务和数据交换平台三部分组成。外部通讯网关、企业服务总线和内部通讯网关通过基于消息中间件的集群技术[2]整合成一个相互独立、可平行扩展的统一整体。外部通讯网关通过消息中间件和税务、银行连接;企业服务总线(ESB)[3]负责对报文预处理,并进行消息路由的操作,ESB通过内外通讯网关分别与交易服务和税务、银行系统进行消息交互。交易服务通过JMS/MDB[4]方式实现对消息中间件的操作。
以税务发起实时扣税交易为例,消息的流转过程为:
(1) 税务征管系统提交请求报文,发送到外部通讯网关;
(2) 通讯网关通过消息中间件的集群机制将请求报文转发到ESB;
(3) ESB系统收到请求报文,进行预处理,然后通过内部通讯网关转发到交易服务;
(4) 交易服务通过JMS/MDB与内部通讯网关进行交互,进行业务处理后,将请求报文通过内部通讯网关转发给ESB,并通知ESB将请求报文转给商业银行;
(5) 转发的请求报文经过外部通讯网关到达商业银行;
(6) 商业银行进行相应的业务处理后,发送回执信息;
(7) 回执信息经过外部通讯网关,到达ESB;
(8) ESB系统进行回执报文的预处理,然后通过内部通讯网关转发给交易服务;
(9) 交易服务进行业务处理后,将回执报文通过内部通讯网关转发给ESB,并通知ESB将回执报文发送给税务;
(10) 回执报文经过外部通讯网关,到达税务,扣税交易结束。
4. 基于消息中间件的通讯实现
IBM MQSeries(以下简称MQ)提供一个具有工业标准、安全、可靠的消息传输系统。MQ的关键功能之一是确保信息可靠传输,同时,MQ是灵活的应用程序通信方案[5]。
TIPS与税务、商业银行通过配置MQ Server的通道实现通讯。在创建通道时,需要设置队列管理器名称、服务器连接通道名称、主机名或IP地址、侦听端口、发送通道名称、接收通道名称、发送队列名称、接收队列名称、字符集等配置项。
税务、TIPS和商业银行都配置发送和接收2个通道。为了满足实时交易流程要求,将MQ通道属性设置成非持久(即内存方式Non-Persistent),同时设置消息的过期时间,如10秒,这样消息有一定的生命周期。同时再辅助以冲正流程设计,保证交易的完整性。
数据交换服务发起者和数据交换服务中转者,都存在报文匹配的要求。存在两种报文匹配机制。第一种为基于报文内容的匹配(异步模式),即从接收通道接收报文后,根据业务关键字组合,从存储数据库查找原发起报文,实现与原发起报文的匹配;第二种为利用消息中间件提供的同步模式下的消息过滤和匹配机制。基于报文内容的匹配(异步模式),适合数据交换服务中转者采用;利用消息中间件提供的同步模式下的消息过滤和匹配机制,适合数据交换服务发起者采用。
利用消息中间件提供的消息过滤和匹配机制如图3所示。
图3 消息过滤和匹配机制图
其中同步模式匹配机制为:
(1) 人机交互界面向交易请求服务发起交易申请,阻塞等待;
(2) 交易请求服务得到交易申请后,首先将交易申请转换成MQ消息报文,并将MQ的CorrelId属性值设为约定值,如“REQ”。然后会将MQ消息报文发送至MQ队列。在报文发送成功后,程序会保存MQ返回的MsgId;
(3) 交易请求服务按照CorrelId属性值为MsgId从接收队列中捕获回执报文,并将处理结果返回人机交互界面。
异步模式匹配机制:
(1) 交易响应服务从接收队列接收到报文,进行业务处理,如果需要匹配其他业务,直接根据业务关键字,基于数据库进行检索匹配;
(2) 将回执报文中的CorrelId设为对应请求报文中MsgId的值,将回执报文发送到发送队列。
5.结论
2006年2月15日系统成功地在北京、湖南、贵州三省市上线运行,参加试运行的单位包括北京地税、湖南国税等12家税务局,工、农、中、建等14家全国性商业银行和北京银行、贵州省农联社等8家地方性金融机构,以及13个国库部门。
经过几个月的运行表明,在联网实时交易中,采用消息中间件,实时性可以满足设计要求。当因为网络、交易处理异常等各种原因引起超时的时候,数据交换服务发起者发起冲正交易,同时每隔一定时间,以数据交换中转者为基准进行对账,可以保证交易完整性。
6.参考文献
[1] S Goel; H Sharda; D Taniar, Messaging in distributed systems , International Journal of Computer Systems Science & Engineering , 2003(6), 339-355
[2] 邱岩; 王卫兵,消息中间件的集群技术,计算机工程,2003(2),107-108,200.
[3] Christy Bass, J.Michael Lee. Building a Business Case for EAI. EAI Journal.2002(1),18-20.
[4] Richard MonsonHaefelEnterprise Java beans O′Reilly & associates 2001.
[5] 王小霞,消息中间件在数据交换中的应用研究及其面临的挑战,电子技术应用,2005(1),1-4.