基于CNAPS的流水号管理方法(一)
详细内容
摘 要:中国国家现代化支付交易清算系统(China National Automation Payment System),简称APS,是中国人民银行在世界银行贷款支持下正在建设中的中央银行支付系统,该系统的主要功能是对各商业银行的资金进行最终的清算。文章分析了目前APS系统可靠性,响应时间等方面的一些不完善之处,介绍了改善系统可靠性,缩短系统响应时间的方法,即流水号管理。
关键词:APS SB分行系统 资金清算 流水号 套接口
商业银行(Special Bank)之间的资金收、付交易,必须经过政府授权的中央银行进行资金清算,以发挥中央银行的宏观调控功能,从而稳定货币、稳定市场。APS系统即是由各级中央银行组成, 因此SB分行系统必须和APS系统通信,通过APS系统完成资金的最终清算。APS系统的可靠、有效运行,将关系到企业、个人的资金是否实现有效、及时、可靠的转移,对维护和健全银行体系,完善金融市场是至关重要的。
APS系统中数据的传送是全双工的。一方面是APS向SB发送信息或文件;另一方面SB也向APS发送信息或文件。以下着重分析APS向SB发送信息或文件时的情况,SB向APS发送信息或文件时的情况与此类似。
1 目前APS系统的一些不完善之处
目前在APS向SB发送信息或文件的路径上存在以下不足之处:接收端不能得到独立的信息或文件;文件请求响应时间过长;传输层能提供的可靠性有限。
1) 不能得到独立的信息和文件
两个应用程序通过TCP连接交换8bit字节构成的字节流。TCP不在字节流中插入记录标识符。我们将这称为字节流服务(byte stream service)。如果一方的应用程序先传10字节,又传20字节,再传50字节,连接的另一方将无法了解发方每次发送了多少字节。收方可以分4次接收这80个字节,每次接收20个字节。一端将字节流放到TCP连接上,同样的字节流将出现在TCP连接的另一端。TCP对字节流的内容不作任何解释。对字节流的解释由TCP连接双方的应用层解释。当APS向SB发送信息或文件时,SB得到的只是无记录标识的字节流,而无法还原出独立的信息或文件。
2)文件请求响应时间过长
在APS系统中,SB作为客户机,APS作为服务器运行,客户是指主动发起通信请求的应用程序,而服务器是被动等待接收通信请求的应用程序。所以在APS向SB发送信息或文件的路径上,APS不会主动向SB发送信息或文件,它必须首先收到SB的请求。
在APS向SB发送信息或文件的路径上,SB向APS发出信息或文件请求的同时启动一个定时器,当定时器超时(仍未接收到正确的信息或文件)SB则认为这个请求丢失或损伤因而进行重传。当APS与SB传送的数据单元是文件时,由于文件数据量很大,正常情况下都要经过很长的时延才能从APS端全部传送到SB端, 因此定时器的时间应设置为比较大的值,SB往往要等待很长的时间才能判断是否重发请求,SB的响应时间很长。特别是当APS发送的文件有一小部分出错,SB端TCP检查到效验和出错时就会抛弃整个文件,接着SB定时器超时,SB重发请求,APS再次重发整个文件,SB从发出第一次请求开始,需要经历很长的时间才能接收到完全正确的文件。
3)传输层能提供的可靠性是有限的
APS系统的传输层采用的是TCP传输控制协议,理论上TCP协议是可靠的,然而实际的传输服务并非毫无错误,但在不可靠的网络之上提供可靠的服务正是传输层要实现的目标。
传输层是增强网络层提供的服务质量,它必须弥补应用层用户要求与网络层所提供的服务之间的差别。用户在建立连接时对各种服务参数(如残余误码率)指定希望的、可接受的最低限度的值,传输层根据网络服务的种类或它能够获得的服务来检查这些参数,决定能否提供所要求的服务。当传输层发现服务质量参数的某些值是无法到达的,传输层甚至不去与目的机器连接,便直接通知应用层连接请求失败。因此传输层能提供的可靠性是有限的。
2 APS系统性能改善方法--流水号管理
改进了的APS系统在APS发送信息或文件的路径上都增加了流水号管理的通信处理机制,进一步增强APS系统可靠性,并缩短了文件请求/发送的响应时间。
一、 对接收方信息或文件不能独立和文件请求响应时间过长的解决
在APS发送信息或文件的路径上,发送数据在APS端,为保证SB端接收到独立的信息或文件,通信上采用SB请求一次,APS发送一次的办法。
APS给它生成的每个信息分配一个流水号,以标识该信息在APS数据流中的位置。通信上SB请求一个流水号,APS才发送流水号为对应值的信息。这样各个信息就能分开。
在APS向SB发送信息路径上流水号的处理过程可分成三步:
1)当系统开始,链路建立后SB向APS发初始化流水号请求,随后APS向SB发送初始化流水号回答,把SB的流水号初始化为0。不是系统开始,如出现故障链路断开再次建立,链路建立后SB会向APS发证实流水号请求,如APS判断SB的流水正确,APS会发出证实流水号回答。
2)接着SB开始不断地向APS发送信息请求并从APS接收信息,直到接收到APS端无信息发送电文为止。当SB端接收到APS的无信息发送电文,隔一段时间,SB又会向APS发送信息请求。
3)当一天结束时,SB端会向APS发送一个结束流水号请求,当SB接收到APS的结束流水号回答后,SB断开链路。