一种实现银企互联通信的装置及方法转让专利

申请号 : CN200910148495.1

文献号 : CN101938507B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 谷春娜鲁志彬邢培昱章峰

申请人 : 中国工商银行股份有限公司

摘要 :

本发明公开了一种实现银企互联通信的装置及方法。该装置包括主控模块、通信性能检测模块、通信性能分析模块和队列管理模块,通信性能检测模块接收并分析对方服务器返回的消息接收响应信息,得到对方服务器的响应时间、单位时间成功率、连续成功次数和连续失败次数这些检测结果和数据;通信性能分析模块对通信性能检测模块得到检测结果和数据进行计算,得到对方服务器的运行稳定性参数;主控模块根据对方服务器的运行稳定性参数将该对方服务器设置于队列管理模块的某通信队列中。利用本发明,解决了银行端的应用服务器因等待企业响应信息的时间较长而导致的稳定性下降的问题,提高了银行端的应用服务器对外服务的能力。

权利要求 :

1.一种实现银企互联通信的装置,其特征在于,该装置包括主控模块、通信性能检测模块、通信性能分析模块和队列管理模块,其中,主控模块分别连接于通信性能检测模块、通信性能分析模块和队列管理模块,通信性能检测模块接收并分析对方服务器返回的消息接收响应信息,得到对方服务器的响应时间、单位时间成功率、连续成功次数和连续失败次数这些检测结果和数据;通信性能分析模块对通信性能检测模块得到的检测结果和数据进行计算,得到对方服务器的运行稳定性参数;主控模块根据对方服务器的运行稳定性参数将该对方服务器设置于队列管理模块的某通信队列中,该通信队列与该对方服务器运行稳定性参数相适应,以减少对方服务器带来的不良影响,保持本方服务器的运行稳定和快捷。

2.根据权利要求1所述的实现银企互联通信的装置,其特征在于,所述主控模块控制整个装置的运行以及与通信性能检测模块、通信性能分析模块或队列管理模块进行交互,完成相关配置参数信息的载入以及对通信性能检测模块、通信性能分析模块或队列管理模块进行启动运行、管理监控操作。

3.根据权利要求2所述的实现银企互联通信的装置,其特征在于,所述相关配置参数用于队列管理模块,包括启动队列数量、服务器最大通道数量、各队列允许最大通道数量和定期主动检测时间间隔,这些参数均保存在装置的配置文件当中,采用手工配置的方式修改。

4.根据权利要求1所述的实现银企互联通信的装置,其特征在于,所述通信性能检测模块连接于主控模块,用于实现对对方服务器的响应速度和正确性进行主动或被动检测,获知对方服务器的响应时间、单位时间成功率、连续成功次数和连续失败次数这些检测结果和数据,并将这些检测结果和数据通过主控模块输出给通信性能分析模块。

5.根据权利要求4所述的实现银企互联通信的装置,其特征在于,所述通信性能检测模块对对方服务器进行主动检测,是通过主动向对方服务器发送探测包,来侦测对方服务器的响应速度和正确性,获知对方服务器的运行状况,并通过主控模块输出给通信性能分析模块;所述探测包是一种简单的http协议消息包,包体内容是固定的字符串。

6.根据权利要求4所述的实现银企互联通信的装置,其特征在于,所述通信性能检测模块对对方服务器进行被动检测,是首先向对方服务器发送业务报文信息,根据对方服务器实际的响应速度和正确性来记录对方服务器的运行状况,并通过主控模块输出给通信性能分析模块。

7.根据权利要求1所述的实现银企互联通信的装置,其特征在于,所述通信性能分析模块连接于主控模块,采用相关分析公式对通信性能检测模块通过主控模块输入的响应时间、单位时间成功率、连续成功次数、连续失败次数这些检测结果和数据进行计算,得到对方服务器的运行状况,并返回给主控模块做后续处理;其中,连续成功次数和连续失败次数是指最近一次统计的客户响应成功和失败不间断的最大次数。

8.根据权利要求1所述的实现银企互联通信的装置,其特征在于,所述队列管理模块连接于主控模块,用于根据通信性能分析模块返回给主控模块的对方服务器的运行状况,判断对方服务器所处的队列,对队列进行管理,适时调整对方服务器所在的队列,以便后续报文调整到该队列进行发送。

9.一种实现银企互联通信的方法,其特征在于,该方法包括:

通信性能检测模块接收并分析对方服务器返回的消息接收响应信息,得到对方服务器的响应时间、单位时间成功率、连续成功次数和连续失败次数这些检测结果和数据,并通过主控模块输出给通信性能分析模块;

通信性能分析模块对通信性能检测模块得到的检测结果和数据进行计算,得到对方服务器的运行稳定性参数,输出给主控模块;

主控模块根据对方服务器的运行稳定性参数将该对方服务器设置于队列管理模块的某通信队列中,该通信队列与该对方服务器运行稳定性参数相适应。

10.根据权利要求9所述的实现银企互联通信的方法,其特征在于,所述通信性能检测模块接收并分析对方服务器返回的消息接收响应信息进一步包括:通信性能检测模块对对方服务器的响应速度和正确性进行主动或被动检测。

11.根据权利要求10所述的实现银企互联通信的方法,其特征在于,所述通信性能检测模块对对方服务器的响应速度和正确性进行主动检测由主控模块触发,获取对方服务器在队列管理模块所属的通信队列,通过该队列的空闲通道向对方服务器发送探测包,来侦测对方服务器的响应速度和正确性,获知对方服务器的运行状况,并将对方服务器的运行状况通过主控模块输出给通信性能分析模块;所述探测包是一种简单的http协议消息包,包体内容是固定的字符串。

12.根据权利要求11所述的实现银企互联通信的方法,其特征在于,所述主控模块触发向对方服务器发送探测包,是根据定期主动检测时间间隔参数,每隔固定时间间隔,查询能够采用主动模式检测的对方服务器集合,依次循环通过主动检测模式向各个对方服务器发送探测包实现的。

13.根据权利要求10所述的实现银企互联通信的方法,其特征在于,所述通信性能检测模块对对方服务器的响应速度和正确性进行被动检测具体包括:通信性能检测模块向对方服务器发送业务报文信息,根据对方服务器实际的响应速度和正确性来记录对方服务器的运行状况,并通过主控模块输出给通信性能分析模块。

14.根据权利要求13所述的实现银企互联通信的方法,其特征在于,所述通信性能检测模块向对方服务器发送业务报文信息,是当本方服务器向主控模块发送具体的业务报文数据时,主控模块将该具体的业务报文数据转发给该通信性能检测模块,由该通信性能检测模块向对方服务器进行该具体的业务报文数据的透明转发。

15.根据权利要求14所述的实现银企互联通信的方法,其特征在于,所述透明转发是将业务报文数据的http消息头和消息体信息不做任何改变的转发到对方服务器,以期实现对于业务功能的透明,不影响业务功能模块的开发和使用。

说明书 :

一种实现银企互联通信的装置及方法

技术领域

[0001] 本发明是关于本方服务器与对方服务器采用http通讯时,避免因为对方服务器产生问题,导致本方服务器长时间堵塞,从而影响其他对外服务的正常运行,具体是涉及一种实现银企互联通信的装置及方法。

背景技术

[0002] 网上银行为企业提供Web Service服务。银行与企业的一般通讯方式主要是以HTTPS协议的方式进行。HTTPS实际上应用了完全套接字层(SSL)作为HTTP应用层的子层。
[0003] 随着网上银行业务的蓬勃发展,银行业务系统更加多样和复杂,为客户提供的服务更加人性化、快捷。当企业的交易指令提交以后,如果银行在处理完成后,企业需要银行在批量处理完成后第一时间通知企业交易的结果,以便企业自身做后续的业务处理和对账服务。
[0004] 当银行给客户发送通信消息的时候,按照HTTP(S)协议的要求,银行服务端应用程序应该等待客户的HTTP(S)响应,并检查HTTP(S)响应消息的状态码。任何不是200(OK)的状态码都说明当HTTP(S)连接和信息发送后发生了一个问题或者错误,需要做相关的后续处理保证企业一定收到了通知消息。银行端的应用服务器等待企业客户的状态码为200的响应信息也是为了确保企业正常接收并处理了交易结果信息。
[0005] 当企业端服务器不能及时给银行端服务器返回响应的时候,根据常见的做法,银行端服务器会在发送请求前设置连接超时时间和读超时时间。连接超时时间是指银行端服务器与企业端服务器建立连接所等待的最大时间。读超时时间是指银行端服务器等待企业端服务器返回请求响应信息所等待的最大时间。当等待建立连接或者等待响应消息时间超过设置的超时时间,银行端服务器会主动断开这个链接,分别抛出连接超时和读超时的异常。
[0006] 在企业客户的系统运行可能存在不正常,或者技术能力相对较弱的情况下,会导致银行端的应用服务器、应用程序会较长时间等待企业的响应信息。而银行端的应用服务器的处理能力是相对的。如果大部分处理能力都处于等待企业的响应信息的时候,银行端的应用服务器的对外服务能力会较大下降,从而对服务器的正常运行产生不良影响,严重的情况下会导致服务器不能提供正常的对外服务。

发明内容

[0007] (一)要解决的技术问题
[0008] 有鉴于此,本发明的主要目的在于提供一种银企互联通信装置及方法,以解决银行端的应用服务器因等待企业响应信息的时间较长而导致的稳定性下降的问题,提高银行端的应用服务器对外服务的能力,使银行端的系统运行的更稳定,同时为客户提供更快捷、友好的服务。
[0009] (二)技术方案
[0010] 为达到上述目的的一个方面,本发明提供了一种实现银企互联通信的装置,该装置包括主控模块、通信性能检测模块、通信性能分析模块和队列管理模块,其中,主控模块分别连接于通信性能检测模块、通信性能分析模块和队列管理模块,通信性能检测模块接收并分析对方服务器返回的消息接收响应信息,得到对方服务器的响应时间、单位时间成功率、连续成功次数和连续失败次数这些检测结果和数据;通信性能分析模块对通信性能检测模块得到检测结果和数据进行计算,得到对方服务器的运行稳定性参数;主控模块根据对方服务器的运行稳定性参数将该对方服务器设置于队列管理模块的某通信队列中,该通信队列与该对方服务器运行稳定性参数相适应,以减少对方服务器带来的不良影响,保持本方服务器的运行稳定和快捷。
[0011] 上述方案中,所述主控模块控制整个装置的运行以及与通信性能检测模块、通信性能分析模块或队列管理模块进行交互,完成相关配置参数信息的载入以及对通信性能检测模块、通信性能分析模块或队列管理模块进行启动运行、管理监控操作。
[0012] 上述方案中,所述相关配置参数用于队列管理模块,包括启动队列数量、服务器最大通道数量、各队列允许最大通道数量和定期主动检测时间间隔,这些参数均保存在装置的配置文件当中,采用手工配置的方式修改。
[0013] 上述方案中,所述通信性能检测模块连接于主控模块,用于实现对对方服务器的响应速度和正确性进行主动或被动检测,获知对方服务器的响应时间、单位时间成功率、连续成功次数和连续失败次数这些检测结果和数据,并将这些检测结果和数据通过主控模块输出给通信性能分析模块。
[0014] 上述方案中,所述通信性能检测模块对对方服务器进行主动检测,是通过主动向对方服务器发送探测包,来侦测对方服务器的响应速度和正确性,获知对方服务器的运行状况,并通过主控模块输出给通信性能分析模块;所述探测包是一种简单的http协议消息包,包体内容是固定的字符串。
[0015] 上述方案中,所述通信性能检测模块对对方服务器进行被动检测,是首先向对方服务器发送业务报文信息,根据对方服务器实际的响应速度和正确性来记录对方服务器的运行状况,并通过主控模块输出给通信性能分析模块。
[0016] 上述方案中,所述通信性能分析模块连接于主控模块,采用相关分析公式对通信性能检测模块通过主控模块输入的响应时间、单位时间成功率、连续成功次数、连续失败次数这些检测结果和数据进行计算,得到对方服务器的运行状况,并返回给主控模块做后续处理;其中,连续成功次数和连续失败次数是指最近一次统计的客户响应成功和失败不间断的最大次数。
[0017] 上述方案中,所述队列管理模块连接于主控模块,用于根据通信性能分析模块返回给主控模块的对方服务器的运行状况,判断对方服务器所处的队列,对队列进行管理,适时调整对方服务器所在的队列,以便后续报文调整到该队列进行发送。
[0018] 为达到上述目的的另一个方面,本发明提供了一种实现银企互联通信的方法,该方法包括:
[0019] 通信性能检测模块接收并分析对方服务器返回的消息接收响应信息,得到对方服务器的响应时间、单位时间成功率、连续成功次数和连续失败次数这些检测结果和数据,并通过主控模块输出给通信性能分析模块;
[0020] 通信性能分析模块对通信性能检测模块得到检测结果和数据进行计算,得到对方服务器的运行稳定性参数,输出给主控模块;
[0021] 主控模块根据对方服务器的运行稳定性参数将该对方服务器设置于队列管理模块的某通信队列中,该通信队列与该对方服务器运行稳定性参数相适应。
[0022] 上述方案中,所述通信性能检测模块接收并分析对方服务器返回的消息接收响应信息进一步包括:通信性能检测模块对对方服务器的响应速度和正确性进行主动或被动检测。
[0023] 上述方案中,所述通信性能检测模块对对方服务器的响应速度和正确性进行主动检测由主控模块触发,获取对方服务器在队列管理模块所属的通信队列,通过该队列的空闲通道向对方服务器发送探测包,来侦测对方服务器的响应速度和正确性,获知对方服务器的运行状况,并将对方服务器的运行状况通过主控模块输出给通信性能分析模块;所述探测包是一种简单的http协议消息包,包体内容是固定的字符串。
[0024] 上述方案中,所述主控模块触发向对方服务器发送探测包,是根据定期主动检测时间间隔参数,每隔固定时间间隔,查询能够采用主动模式检测的对方服务器集合,依次循环通过主动检测模式向各个对方服务器发送探测包实现的。
[0025] 上述方案中,所述通信性能检测模块对对方服务器的响应速度和正确性进行被动检测具体包括:通信性能检测模块向对方服务器发送业务报文信息,根据对方服务器实际的响应速度和正确性来记录对方服务器的运行状况,并通过主控模块输出给通信性能分析模块。
[0026] 上述方案中,所述通信性能检测模块向对方服务器发送业务报文信息,是当本方服务器向主控模块发送具体的业务报文数据时,主控模块将该具体的业务报文数据转发给该通信性能检测模块,由该通信性能检测模块向对方服务器进行该具体的业务报文数据的透明转发。
[0027] 上述方案中,所述透明转发是将业务报文数据的http消息头和消息体信息不做任何改变的转发到对方服务器,以期实现对于业务功能的透明,不影响业务功能模块的开发和使用。
[0028] (三)有益效果
[0029] 1、利用本发明,解决了银行端的应用服务器因等待企业响应信息的时间较长而导致的稳定性下降的问题,提高了银行端的应用服务器对外服务的能力。
[0030] 2、利用本发明,可以有效的解决当第三方服务器发生故障或者性能降低时,有效屏蔽此问题带给本方服务器的影响,保证服务器的稳定运行。同时能保证第三方正常后能及时恢复信息的正常发送,避免信息的大量累积待发送。
[0031] 3、利用本发明,能够有充足时间确保第三方有足够时间解决其系统存在的问题,而不必做其他数据或者代码变更以屏蔽此影响。
[0032] 4、本发明装置的部署,可以根据双方的实际情况部署,可以单独部署在一台物理机器上,与企业核心应用服务器分离;也可以和应用服务器部署在同一台物理机器上;具体视企业的实际情况,包括资金、设备等确定。部署在同一台机器上可以节省开销,对于小型企业是不错的选择。进一步地,装置可以一方部署,也可以双方部署,根据发送报文的信息量而定;发送报文多,避免通讯堵塞的需求多,则建议部署;如果发送报文少,接收报文多,则可以只由对方部署;
[0033] 5、本发明具体通讯队列建议的数量,队列属性中的通道的数量、队列所属的通信状态值范围,可以根据企业实际需求调整;并提供了OA可视化界面进行管理,灵活而方便。

附图说明

[0034] 图1是本发明提供的实现银企互联通信的装置的结构示意图;
[0035] 图2是本发明提供的实现银企互联通信的装置在网络系统中部署的示意图;
[0036] 图3是本发明提供的实现银企互联通信的方法流程图;
[0037] 图4是本发明提供的通信性能检测模块主动检测模式的处理流程图;
[0038] 图5是本发明提供的通信性能检测模块被动检测模式的处理流程图;
[0039] 图6是本发明提供的通信性能分析模块的处理流程图;
[0040] 图7是本发明提供的队列管理模块的处理流程图;
[0041] 图8是依照本发明实施例提供的实现银企互联通信的方法流程图。

具体实施方式

[0042] 为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
[0043] 本发明的核心思想是:首先对对方服务器返回的消息接收响应信息进行统计分析,然后采用相应的算法计算分析的结果,得到对方服务器的运行稳定性参数,最后本方服务器根据对方服务器的运行稳定性参数将该对方服务器设置于队列管理模块的某通信队列中,该通信队列与该对方服务器运行稳定性参数相适应,减少对方服务器带来的不良影响,从而保持本方服务器的运行稳定和快捷。
[0044] 如图1所示,图1为本发明提供的实现银企互联通信的装置的结构示意图,该装置包括主控模块、通信性能检测模块、通信性能分析模块和队列管理模块。其中,主控模块分别连接于通信性能检测模块、通信性能分析模块和队列管理模块,通信性能检测模块接收并分析对方服务器返回的消息接收响应信息,得到对方服务器的响应时间、单位时间成功率、连续成功次数和连续失败次数这些检测结果和数据;通信性能分析模块对通信性能检测模块得到检测结果和数据进行计算,得到对方服务器的运行稳定性参数;主控模块根据对方服务器的运行稳定性参数将该对方服务器设置于队列管理模块的某通信队列中,该通信队列与该对方服务器运行稳定性参数相适应,以减少对方服务器带来的不良影响,保持本方服务器的运行稳定和快捷。
[0045] 主控模块是整个装置的核心,用于控制整个装置的运行以及与通信性能检测模块、通信性能分析模块或队列管理模块进行交互,完成相关配置参数信息的载入以及对通信性能检测模块、通信性能分析模块或队列管理模块进行启动运行、管理监控操作。这些相关配置参数主要用于队列管理模块,包括启动队列数量、服务器最大通道数量、各队列允许最大通道数量、定期主动检测时间间隔等参数,这些参数均保存在装置的配置文件当中,采用手工配置的方式修改。
[0046] 通信性能检测模块连接于主控模块,用于实现对对方服务器的响应速度和正确性进行主动或被动检测,获知对方服务器的响应时间、单位时间成功率、连续成功次数和连续失败次数这些检测结果和数据,并将这些检测结果和数据通过主控模块输出给通信性能分析模块。
[0047] 通信性能检测模块分为两部分功能:主动检测功能和被动检测功能。
[0048] 其一,主动检测功能,是通过主动向对方服务器发送探测包,来侦测对方服务器的响应速度和正确性,获知对方服务器的运行状况,并通过主控模块输出给通信性能分析模块,以便本方服务器尽早作出决策的模块,是一种前馈的做法;这里所说的探测包就是一种简单的http协议消息包,包体内容只是固定的字符串,无其他业务含义。此种方式需要列入主动检测目标清单的对方服务器部署开发和部署相应的检测响应模块。
[0049] 其二,被动检测功能,本方服务器首先向对方服务器发送业务报文信息,根据对方服务器实际的响应速度和正确性来记录对方服务器的运行状况,并通过主控模块输出给通信性能分析模块,使本方服务器能作出相应决策的模块,是一种反馈的做法。
[0050] 通信性能分析模块连接于主控模块,采用相关分析公式对通信性能检测模块通过主控模块输入的响应时间、单位时间成功率、连续成功次数、连续失败次数这些检测结果和数据进行计算,得到对方服务器的运行状况,并返回给主控模块做后续处理。其中,连续成功次数和连续失败次数是指最近一次统计的客户响应成功和失败不间断的最大次数。这是为了获得客户最近服务器运行状况,以便本方服务器根据分析结果作出最快的调整。
[0051] 队列管理模块连接于主控模块,用于根据通信性能分析模块返回给主控模块的对方服务器的运行状况,判断对方服务器所处的队列,对队列进行管理,适时调整对方服务器所在的队列,以便后续报文调整到该队列进行发送。
[0052] 如图2所示,图2为本发明提供的实现银企互联通信的装置在网络系统中部署的示意图。该装置应用在现有网络结构中,不影响现有网络的拓扑结构,报文接收和发送通过装置进行转发,装置可以部署在一台独立的服务器,也可以部署在现有业务应用服务器上。
[0053] 该装置可以如上,在本方部署实现本方服务器的通信检测;也可以同时在对方服务器进行双向部署,这样就实现了双向通信检测,从而使通信检测能力增强。
[0054] 该装置通过队列管理客户通信通道,通过分析现有客户服务器的通信行为,分析客户的通信性能,及时调整和管理客户所属队列,根据客户本身性能实行差异化管理和服务。
[0055] 基于上述提供的实现银企互联通信的装置,图3示出了本发明提供的实现银企互联通信的方法流程图,该方法包括以下步骤:
[0056] 步骤1:通信性能检测模块对对方服务器的响应速度和正确性进行主动或被动检测;
[0057] 步骤2:通信性能检测模块接收并分析对方服务器返回的消息接收响应信息,得到对方服务器的响应时间、单位时间成功率、连续成功次数和连续失败次数这些检测结果和数据,并通过主控模块输出给通信性能分析模块;
[0058] 步骤3:通信性能分析模块对通信性能检测模块得到检测结果和数据进行计算,得到对方服务器的运行稳定性参数,输出给主控模块;
[0059] 步骤4:主控模块根据对方服务器的运行稳定性参数将该对方服务器设置于队列管理模块的某通信队列中,该通信队列与该对方服务器运行稳定性参数相适应。
[0060] 上述步骤1中,所述通信性能检测模块对对方服务器的响应速度和正确性进行主动检测由主控模块触发,获取对方服务器在队列管理模块所属的通信队列,通过该队列的空闲通道向对方服务器发送探测包,来侦测对方服务器的响应速度和正确性,获知对方服务器的运行状况,并将对方服务器的运行状况通过主控模块输出给通信性能分析模块;所述探测包是一种简单的http协议消息包,包体内容是固定的字符串。主控模块触发向对方服务器发送探测包,是根据定期主动检测时间间隔参数,每隔固定时间间隔,查询能够采用主动模式检测的对方服务器集合,依次循环通过主动检测模式向各个对方服务器发送探测包实现的。
[0061] 上述步骤1中,所述通信性能检测模块对对方服务器的响应速度和正确性进行被动检测具体包括:通信性能检测模块向对方服务器发送业务报文信息,根据对方服务器实际的响应速度和正确性来记录对方服务器的运行状况,并通过主控模块输出给通信性能分析模块。通信性能检测模块向对方服务器发送业务报文信息,是当本方服务器向主控模块发送具体的业务报文数据时,主控模块将该具体的业务报文数据转发给该通信性能检测模块,由该通信性能检测模块向对方服务器进行该具体的业务报文数据的透明转发。该透明转发是将业务报文数据的http消息头和消息体信息不做任何改变的转发到对方服务器,以期实现对于业务功能的透明,不影响业务功能模块的开发和使用。
[0062] 为了更加清楚明确的说明本发明提供的这种实现银企互联通信的装置和方法,下面对各个模块的流程进行详细说明:
[0063] (1)通信性能检测模块的主动检测模式处理流程,参考附图4。这种检测方式需要主控模块主动触发,获取企业所属队列,通过该队列空闲通道向企业进行检测包发送,等待企业响应结果。
[0064] 主动检测模式是一种用于尽早了解对方服务器运行状态,以使本方服务器提早作出准备,避免对真正的业务数据和功能产生影响的一种模式。
[0065] 根据定期主动检测时间间隔参数,主控模块每隔参数设置的固定时间间隔,查询可以采用主动模式检测的对方服务器集合,依次循环通过主动检测模式向各个对方服务器发送探测包,该探测包包体内容是一个固定的字符串(本发明采用ICBCDETECTPACKAGE),并等待对方服务器的响应。收到对方服务器的http状态返回码是200的响应后,响应包包体无需企业返回任何信息,收集对方服务器响应的速度和响应的正确性的数据,将收集好的数据通过主控模块传给通信性能分析模块进行分析。因为这种主动检测是一种技术的探测手段,和业务数据无关,所以采用这种模式需要对方服务器做相关配合动作,对本发明的探测包做一个正确的响应,才能达到主动检测的目的。因此需要在数据库表中根据企业配合状况存储可以采用这种模式的对方服务器集合。本发明在这里存储的是对方服务器的IP地址和端口,来标识不同的服务器。考虑到采用此方式的客户目前较少,如果此集合有更新,本发明采用手工执行更新删除脚本的方式进行修改,无需启动服务器,在下次循环时自动加入主动检测列表。
[0066] 这种模式的好处是能够尽早获取对方状态,尽可能小的影响真正业务处理。缺点是需要对方服务器做一个配合响应的动作处理。而且这种主动检测是以牺牲一定的资源来实现的;频率太高可能会导致服务器很多资源用于这个检测,频率太低可能达不到理想效果,这个需要根据实际业务量进行合理设定。
[0067] (2)通信性能检测模块的被动检测模式处理流程,参考附图5。
[0068] 被动检测模式是一种发生具体业务时,根据业务处理情况了解对方服务器状态的一种模式。这种检测模式是对所有对方服务器默认生效的,所有发送过业务请求数据的对方服务器均会自动进行检测。这是与主动检测模式有区别的地方。
[0069] 当本方服务器向主控模块发送具体的业务报文数据时,主控模块转发给该通信性能检测模块做报文给对方服务器的透明转发,并等待对方服务器的响应。这里所说的透明转发,是指将业务报文数据的http消息头和消息体信息不做任何改变的转发到对方服务器,以期实现对于业务功能的透明,不影响业务功能模块的开发和使用。在收到此报文信息的响应数据后,收集对方服务器响应的速度和响应的正确的数据。将收集好的数据通过主控模块传给通信性能分析模块进行分析。任何具体的业务报文均需要通过被动检测模式进行发送,并进行后续的通信性能分析和队列调整动作。
[0070] 这种被动检测模式的缺点是被动的获取对方状态,当检测分析出对方服务器通信性能已经下降时,此时相关业务功能和本方服务器已经受到了一定程度的影响,但仍能够使队列管理模块作出相应对策。
[0071] 通信性能检测模块与本方服务器交互的数据结构如下:
[0072]客户身份标识
发送的报文信息
[0073] 与本方服务器交互
[0074] 通信性能检测模块与主控模块、队列管理模块交互的数据结构如下:
[0075]客户身份标识
检测标识(主动or被动)
检测结果信息
[0076] 与主控模块、队列管理模块交互
[0077] 其中客户身份标识为了区分不同的对方服务器,作为对方服务器在本方保存信息中的唯一身份。客户身份标识可以根据各应用实际确定其具体结构,可以是一个简单的代码,也可以是复杂的客户信息;对于一般应用,可以使用对方的通讯IP地址作为客户标识即可。这种结构的设计对原有系统改造不大。
[0078] (3)通信性能分析模块的处理流程,参考附图6。
[0079] 通信性能分析模块的主要功能是将通信性能检测模块收集的数据进行分析计算。收集的数据主要是响应速度、响应正确性等信息。
[0080] 下面给出本发明分析的一个具体例子:
[0081] 本实施例采用的公式主要是使用权重公式计算方法。收集的参数包括响应的速度A(单位:秒)和单位时间(30分钟)内连续正确响应的次数B、单位时间(30分钟)内连续失败响应的次数C、单位时间(30分钟)内响应成功率D。
[0082] 以上收集的参数中单位时间内响应成功率是一个相对长时间的因素,这是综合考虑了对方服务器(即企业服务器)整体性能的情况;同时其他参数如响应速度、连续响应成功失败次数是实时因素,主要是为了降低对方服务器短时间出现问题导致大量消息堵塞无法正常发送的问题。
[0083] 响应的速度在0-5秒之内,本实施例认为其响应速度是及时的;5-15秒是良好的;15秒-30秒是一般的;30秒以上认为对方服务器性能下降严重;
[0084] 单位时间(30分钟)内连续正确响应的次数,本实施例认为连续超过10次,对方服务器处理非常好;5-10次对方服务器处理较好;3-5次对方服务器处理一般;小于3次则认为对方服务器处理较差;
[0085] 单位时间(30分钟)内连续失败响应的次数,本实施例认为小于1次,对方服务器处理非常好;1-3次对方服务器处理较好;3-5次对方服务器处理一般;大于5次则认为对方服务器处理较差;
[0086] 单位时间(30分钟)内响应成功率,本实施例认为大于95%对方服务器处理非常好;80%-95%对方服务器处理较好;50%-80%对方服务器处理一般;50%以下说明对方服务器处理已经处于较差的状态。
[0087] 根据以上参数分析,本实施例使用权重公式计算:
[0088] (60-A)+3B-C+100D,其中60是本实施例允许的客户响应的最大等待超时时间(60秒)。客户响应时间越快,(60-A)值越大。考虑到客户连续响应成功说明客户的服务器(即对方服务器)工作较为正常,故增加了3倍的权重值。成功率也是本实施例一个比较注重的因素,所以在此比例上增加了100倍的权重值;故得出以上公式。
[0089] 根据实际应用不同情况,以及实际应用的不同关注点,此公式应灵活调整。
[0090] 本实施例将客户响应状况分为四种情况:即优秀、良好、一般、较差。
[0091] 以上四种情况分别计算出的值区间为[175-190],[131-175],[84-131],[0-84];
[0092] 根据以上计算出的标准区间,所以本实施例最终确定各个状态区如下:
[0093] 区间1:[175-∞);
[0094] 区间2:[131-175);
[0095] 区间3:[84-131);
[0096] 区间4:[0-84);
[0097] 下面举例说明连续成功失败的统计规则;在主控模块运行时,在单位时间30分钟的时间内,本实施例对某一个客户的每次发送结果进行收集。对于连续成功和连续失败的次数,本实施例统计单位时间内的最大值。比如客户先连续成功响应了报文10次,然后第11次报文失败;第12次报文发送,客户又成功响应,且之后连续成功响应了20次,那么本实施例认为客户在本次单位时间内连续成功次数为21次;连续失败次数统计相同。
[0098] (4)队列管理模块的处理流程,参考附图7。
[0099] 队列管理模块主要使用如下配置参数:
[0100] 启动队列数量
[0101] 服务器最大通道数量
[0102] 各队列允许最大通道数量
[0103] 队列1-N是否运行超过自身最大通道数量(0:不允许;1:允许)[0104] 定期主动检测时间间隔
[0105] 以上参数根据实际装置所在服务器性能进行设置;本实施例根据服务器配置和性能确定可以使用的最大的通道数量,假设为MAX;本实施例一般设置启动队列数量为N,N根据实际情况设置,按照本实施例通信检测模块的例子,本实施例设置N为4;定期主动检测时间间隔根据实际情况进行设置,本实施例一般设置为30分钟;
[0106] 各队列允许最大通道数量根据每个通道承担的业务量进行分配。假设本实施例以上面所计算的区间值为例,本实施例经过数据统计分析得知50%的客户通信性能落在区间1值[175-∞)内,30%的客户通信性能落在区间2值[131-175)内,15%的客户通信性能落在区间3值[84-131)内,5%的客户通信性能落在区间4值[0-84)内;那么本实施例在分配各队列允许最大通道数量时按照此比例进行分配,使用服务器最大通道数量MAX乘以比例,得出的就是各队列的标准的各队列允许最大通道数量。
[0107] 队列1-N是否运行超过自身最大通道数量,这个参数是考虑到存在如下问题,比如当发送性能较好的队列中的业务量较大时,为了保证服务器资源利用的有效性,本实施例允许部分队列突破自身的允许最大通道数量,从发送性能差一些的队列中借用一些通道,这样就避免了通信性能较好区间的队列通道处理繁忙,排队处理;而通信性能较差的队列通道空闲,无业务处理。
[0108] 在上面的例子中,本实施例分配了四个区间,其中区间1、区间2本实施例认为是通信性能较为不错的,允许这两个队列可以突破自身允许最大通道数量;而区间3、区间4,本实施例认为通信性能较差,即使使用更多的通道也无法达到业务处理数据量明显提高的效果,所以设置为不允许;那么这四个队列从优秀到较差分别设置为1、1、0、0;这样当区间1和2队列存在排队现象时,本实施例可以从区间3和4队列中获取空闲队列使用,进行业务数据处理,保证资源的有效利用。这四个队列任何时候的通道总和不会超过服务器最大通道数量MAX。
[0109] 通过以上描述,可以看出队列管理模块在启动时会根据队列管理参数,根据管理参数中的启动队列数量参数启动N个相应的队列,并在各队列中根据各队列允许最大通道数量参数建立相应数量的通信通道。同一队列内的通道可以排队共享使用,个别队列的通道可以被别的队列共享使用。
[0110] 主控模块接收到通信状态值时,会将值转发给队列管理模块。此模块根据通信状态值,根据其值所属区间,找到所属的队列值,和原队列值比较,如果出现了变化,则将此客户调整到相应的新队列中;作此调整后,以后此客户的报文信息将从新调整队列通道中发送。
[0111] 通信性能检测模块在每次发送信息时都要通过主控模块从队列管理模块中获取对方服务器所属队列,从此队列中找到空闲通道使用发送信息。
[0112] 队列管理模块主要数据结构和操作方法如下表所示:
[0113]
[0114] 按照上面划分的例子,下面来解释队列管理模块的工作逻辑。主控模块通过调用构造函数建立队列管理模块,并初始化N个队列,队列中预先获取该队列的最大通道数量值,并不建立通道;当一个请求到达队列时,主控模块调用队列管理模块判断客户所属队列。如果客户身份标识不存在,说明是一个新的客户,则将客户身份标识放入优秀所属队列中,对于新客户,默认是通信性能优秀的客户。然后从相应所属队列中取出空闲通道进行发送;当没有空闲通道时,判断此队列是否已经达到自身允许最大的通道数量,没有的话,则启动新的通道进行发送;否则判断该队列超过自身最大数量参数配置;如果可以超过,则在不超过服务器允许最大数量的前提下,获取空闲通道进行业务处理,否则该请求报文只能排队处理,等待有空闲通道可以分配使用。这里采用的通道分配原则是按照时间排队原则分配处理。处理完成后则释放该通道资源,关闭通道,使服务器资源释放出来。主控模块通过调用队列管理模块函数,根据实时计算分析结果动态调整客户所属队列属性;
[0115] 以上是对装置的各个模块分别做的详细说明。下面对整个装置、系统的运行流程做一个整体流程说明。
[0116] 首先装置启动后,主控模块读取相关参数,并控制其他三个子模块分别启动;请参考附图8整体处理流程图,装置内部通信全部通过主控模块进行,便于管理。
[0117] 装置运行检测过程的处理流程。
[0118] 步骤100:开始;
[0119] 步骤101:主控模块定时启动线程进行主动检测,这是主动检测模式;
[0120] 步骤102:主控模块检查是否存在下一个主动检测模式的客户;如果有进入103步骤,否则进入步骤128结束本次检测;
[0121] 步骤103:主控模块线程取出下一个主动检测模式的客户身份标识;
[0122] 步骤201:主控模块使用servlet监听本方服务器发送的请求数据;
[0123] 步骤202:主控模块接收到本方服务器发送的请求数据,这是被动检测模式;
[0124] 步骤203:主控模块线程取出下一个主动检测模式的客户身份标识;
[0125] 步骤104:主控模块输入客户身份标识给队列管理模块;
[0126] 步骤105:进入队列管理模块;
[0127] 步骤106:队列管理模块调用方法判断输入的客户身份标识所属队列;
[0128] 步骤107:队列管理模块是否取到客户所属队列;取到进入步骤109,否则进入步骤108;
[0129] 步骤108:没有说明是新客户,则默认客户所属队列为优秀队列;
[0130] 步骤109:队列管理模块获取该队列空闲通道,是否存在空闲通道;
[0131] 步骤110:排队等待一段时间,重新尝试获取空闲通道;
[0132] 步骤111:将该通道实例引用返回给主控模块;
[0133] 步骤112:返回主控模块;
[0134] 步骤113:主控模块将通道实例引用发送给通信性能检测模块;
[0135] 步骤114:进入通信性能检测模块;
[0136] 步骤115:通信性能检测模块使用该通道发送请求或者探测包;
[0137] 步骤116:通信性能检测模块发送完成后等待响应报文;
[0138] 步骤117:是否在超时时间内获取到响应报文;
[0139] 步骤118:获取到响应报文,响应结果为成功,记录响应时间,单位时间(30分钟)内连续发送成功次数累加;
[0140] 步骤218:响应报文无法获取到,响应结果为失败,响应速度为超时时间,单位时间(30分钟)内连续发送失败次数累加;
[0141] 步骤119:将以上响应报文和响应数据返回给主控模块;
[0142] 步骤120:返回主控模块;
[0143] 步骤121:主控模块将响应结构和报文返回给本方服务器,且将收集的响应数据发送给通信性能分析模块;
[0144] 步骤122:通信性能分析模块根据收集的相关响应数据计算属性区间;
[0145] 步骤123:通信性能分析模块将值返回主控模块;
[0146] 步骤124:主控模块将值转到队列管理模块;
[0147] 步骤125:进入队列管理模块;
[0148] 步骤126:队列管理模块判断与当前属性值是否在同一区间内;
[0149] 步骤127:队列管理模块调整所属队列;
[0150] 步骤128:结束。
[0151] 在实际应用中,可以只有其中发送报文占主导地位的一方部署装置,可以确保当对方发生问题时及时调整,避免堵塞现象的发生。如果双方均要发送一定数量的报文,则建议双方均部署此装置,可以互相检测对方服务器的运行状况,保证整个通信的畅通,并及时通知对方作出调整,确保业务稳定运行。
[0152] 以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。