企业分布式应用间实现非阻塞方式相互调用的系统及方法技术方案

技术编号:7059965 阅读:285 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种企业分布式应用间实现非阻塞方式相互调用的系统,其包括用以进行基于java.nio数据包的数据读写操作的NIO读写模块、连接NIO读写模块的线程池管理模块和数据打解包模块、连接NIO读写模块并连接外部系统的请求处理模块,以及连接线程池管理模块和数据打解包模块的响应回调管理模块。本发明专利技术还涉及一种企业分布式应用间实现非阻塞方式相互调用的方法。采用了该发明专利技术的企业分布式应用间实现非阻塞方式相互调用的系统及方法,由于其包括NIO读写模块、线程池管理、数据打解包、请求处理、响应回调管理操作五个核心部分,其可通过有效地保护系统资源,实现不受外部因素的干扰,从而保证当前系统自身的稳定运行。

【技术实现步骤摘要】

本专利技术涉及计算机系统
,特别涉及企业应用系统
,具体是指。
技术介绍
随着企业应用间的信息交互越来越频繁,这种通过集成已有的不同计算机应用来提供新的服务的需要也越来越普遍。例如金融行业银电联网代收费系统,跨行转账系统,均涉及不同应用间的相互调用,这些应用对于调用的高效性和稳定性的要求都很高。通常,此类调用以TCP作为通信层,显示跨地域、跨网段的调用,并且各个应用间交互的数据格式也不尽相同。在业界一般的做法,是使用堵塞式的IO操作,当每次发出调用请求后就会同步等待请求响应,而在等待的这段时间内会造成线程被占用,实际上该线程在发出调用请求后就只是处于等待状态。这种调用的实现方法很容易受外部因素的干扰而影响当前系统自身的稳定运行。 这些外部因素干扰包括(1)网络拥堵造成的外部系统的响应延时;(2)在等待外部系统的响应时的网络中断;(3)由于外部系统本身处理能力限制造成无法处理请求因此也没有响应返回。因此,在请求量过大,响应时间过长的情况下,就会引起大量线程等待,造成CPU 和内存的浪费,从而使调用方的应用无法响应,甚至内存溢出,应用需要重启。这就严重制约了此类调用的高效性和稳定性。本专利技术中NIO是指JDK中Java, nio的包,Java, nio的包是在jdkl. 4以后被提出来的,和原来的i/o开发模式相比较,nio提供了更高的性能,求偶基于IO事件的处理模型, 以及面向块(block-oriented)的1/0的编程模式。Reactor (反应器)用于负责对10事件做出相应的响应动作。
技术实现思路
本专利技术的目的是克服了上述现有技术中的缺点,提供一种通过异步10操作、并采用线程池管理和响应超时管理,能有效保证调用的高效性和稳定性,且结构简单,应用范围广泛的。为了实现上述的目的,本专利技术的企业分布式应用间实现非阻塞方式相互调用的系统具有如下构成NIO读写模块,用以进行基于java. nio数据包的数据读写操作;线程池管理模块,连接所述的NIO读写模块,用以维护一线程池;数据打解包模块,连接所述的NIO读写模块,用以对数据进行打包和解包;请求处理模块,连接所述的NIO读写模块并连接所述的外部系统,用以根据所获得至请求向所述的NIO读写模块发送读写指令;以及响应回调管理模块,连接所述的线程池管理模块和数据打解包模块,用以实现对请求的相应回调。在企业分布式应用间实现非阻塞方式相互调用的系统中,所述的NIO读写模块具体包括异步I/O API单元、事件模型单元和Codec框架单元,所述的异步I/O API单元分别连接所述的事件模型单元和Codec框架单元,所述的事件模型单元还连接所述的Codec框架单元。在企业分布式应用间实现非阻塞方式相互调用的系统中,所述的事件模型单元为基于拦截链模式的事件模型单元。本专利技术还提供一种基于权利要求1所述的实现企业分布式应用间实现非阻塞方式相互调用的方法,该方法包括以下步骤(1)所述的请求处理模块启动轮询监听连接请求的反应器,等待客户端发起连接请求;(2)客户端发起连接请求时,所述的轮询监听连接请求的反应器监听到该连接请求,所述的请求处理模块建立和客户端的连接,并将所建立的连接注册到一个轮询监听连接读写请求的反应器上;(3)客户端发出数据,被所述的轮询监听连接读写请求的反应器监听到;(4)所述的NIO读写模块读取数据;(5)所述的数据打解包模块获得所读取的数据并将数据解包为业务请求进行处理;(6)业务请求被处理后,响应回调管理模块获得处理结果,并将其发送至所述的数据打解包模块;(7)所述的数据打解包模块进行数据打包;(8)所述的数据打解包模块将打包数据发送至所述的NIO读写模块;(9)所述的NIO读写模块将数据写入客户端。在企业分布式应用间实现非阻塞方式相互调用的方法中,所述的NIO读写模块具体包括异步I/O API单元、事件模型单元和Codec框架单元,所述的异步I/O API单元分别连接所述的事件模型单元和Codec框架单元,所述的事件模型单元还连接所述的Codec 框架单元,所述的步骤OTO读写模块读取数据,具体为所述的异步1/0 API单元对已读取的数据进行缓存,并根据缓存内容对尚未读取的数据进行读取。在企业分布式应用间实现非阻塞方式相互调用的方法中,该方法中所述的数据打解包模块获得所读取的数据并将数据解包为业务请求进行处理,具体为所述的数据打解包模块对所读取数据依照设定的数据格式进行解包。在企业分布式应用间实现非阻塞方式相互调用的方法中,该方法中所述的数据打解包模块进行数据打包,具体为所述的数据打解包模块对所写入的数据依照设定的数据格式进行打包。在企业分布式应用间实现非阻塞方式相互调用的方法中,该方法中所述的NIO读写模块将数据写入客户端,包括以下步骤(1)所述的NIO读写模块将数据写入客户端;(2)在数据未写入完成时,所述的事件模型单元注册一个包含未写入数据的写事件。在企业分布式应用间实现非阻塞方式相互调用的方法中,该方法所述的线程池管理模块执行一超时管理线程,当该线程池管理模块所执行的超时管理线程发现有处理时间超时的请求时,线程池管理模块生成超时异常并发送至所述的响应回调管理模块。在企业分布式应用间实现非阻塞方式相互调用的方法中,该方法中所述数据打解包模块进行数据打包,具体为数据打解包模块根据设定的异常数据格式对异常信息进行数据打包。采用了该专利技术的在,其系统包括NIO读写模块、线程池管理、数据打解包、请求处理、响应回调管理操作五个核心部分,其通过有效地保护系统资源,实现不受外部因素的干扰,从而保证当前系统自身的稳定运行。本专利技术在,其工作性能稳定可靠,适用范围较为广泛。附图说明图1为本专利技术的在企业分布式应用间实现非阻塞方式相互调用的系统中所采用的NIO处理逻辑示意图。图2为本专利技术的在企业分布式应用间实现非阻塞方式相互调用的方法中的请求处理序列图。具体实施例方式为了能够更清楚地理解本专利技术的
技术实现思路
,特举以下实施例详细说明。请参阅图1所示,为本专利技术的在企业分布式应用间实现非阻塞方式相互调用的系统中所采用的NIO处理逻辑示意图。在一种实施方式中,企业分布式应用间相互调用的系统包括NIO读写模块,用以进行基于java. nio数据包的数据读写操作;线程池管理模块,连接所述的NIO读写模块,用以维护一线程池;数据打解包模块,连接所述的NIO读写模块,用以对数据进行打包和解包;请求处理模块,连接所述的NIO读写模块并连接所述的外部系统,用以根据所获得至请求向所述的NIO读写模块发送读写指令;以及响应回调管理模块,连接所述的线程池管理模块和数据打解包模块,用以实现对请求的相应回调。其中,所述的NIO读写模块具体包括异步I/O API单元、事件模型单元和Codec框架单元,所述的异步I/O API单元分别连接所述的事件模型单元和Codec框架单元,所述的事件模型单元还连接所述的Codec框架单元。且所述的事件模型单元为基于拦截链模式的事件模型单元。基于该实施方式的在企业分布式应用间实现非阻塞方式相互调用的方法具体包括以下步骤(1)所述的请求处理模块启动轮询监听连接请求的反应器,等待客户端发起连接请求;(2)客户端发起连接请求时,所述的轮询监听连接请求的反应器监听到本文档来自技高网
...

【技术保护点】
1.一种企业分布式应用间实现非阻塞方式相互调用的系统,其特征在于,所述的SOA应用间相互调用的系统包括:NIO读写模块,用以进行基于java.nio数据包的数据读写操作;线程池管理模块,连接所述的NIO读写模块,用以维护一线程池;数据打解包模块,连接所述的NIO读写模块,用以对数据进行打包和解包;请求处理模块,连接所述的NIO读写模块并连接所述的外部系统,用以根据所获得至请求向所述的NIO读写模块发送读写指令;以及响应回调管理模块,连接所述的线程池管理模块和数据打解包模块,用以实现对请求的相应回调。

【技术特征摘要】

【专利技术属性】
技术研发人员:王文斌
申请(专利权)人:上海普元信息技术股份有限公司
类型:发明
国别省市:31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1