一种利用自扩展的阻塞算法将同步服务调用转换为异步并行式调用的方法

文档序号:6376829阅读:413来源:国知局

专利名称::一种利用自扩展的阻塞算法将同步服务调用转换为异步并行式调用的方法
技术领域
:本发明涉及Web环境应用领域,特别是涉及一种利用自扩展的阻塞算法将同步服务调用转换为异步并行式调用的方法,实现将长耗时阻塞的同步服务调用解耦为独立的多线程非阻塞式异步调用,通过使用本发明在Web领域下,在面向可拆分的批量服务请求时,如数据库操作、文件传输,批量短信email发送等,分流分批地异步并行处理,可以提高服务的吞吐量,并有设定超时阻塞等待时间,保证可靠响应速度。
背景技术
:Web开发者们熟知,一个同步服务调用请求往往是在“接收消息->处理消息->送回消息”这种trivial式的同步阻塞式流程上,当遇到长耗时阻塞的同步服务调用时,如数据库操作、文件传输,批量短信email发送等,同步服务调用通常会被长时间阻塞,从而是调用者响应体验较差;本策略基于Web应用环境下,实现了一种利用自扩展的阻塞算法将同步服务调用转换为异步并行式调用的方法,将长耗时阻塞的同步服务调用解耦为独立的多线程非阻塞式异步调用,提高服务的吞吐量,并有设定超时阻塞等待时间,保证可靠响应速度。
发明内容本发明所要解决的技术问题是在Web环境下,同步服务调用请求往往是在“接收消息->处理消息->送回消息”这种trivial式的同步阻塞式流程上,当遇到长耗时阻塞的服务调用时,调用者通常要等待很长的时间才得到返回结构,响应速度极差。当遇到服务调用的是批量可拆分的服务时,只能串行执行等待结果,导致时间浪费,资源利用率不高等问题;为实现上述发明目的,本发明提供一种利用自扩展的阻塞算法将同步服务调用转换为异步并行式调用的方法,将长耗时阻塞的同步服务调用解耦为独立的多线程非阻塞式异步调用,提高服务的吞吐量,并有设定超时阻塞等待时间,保证可靠响应速度;本转换器由主调入口部分、等待对象池部分、转换器部分、资源服务组件等几部分组成,转换过程分为服务分发并阻塞等待、资源服务调用、应答唤醒并归并返回三个步骤;其中,其中所述第一步骤的服务分发并阻塞等待,单线程的,体现在主调入口部分,这部分包括一个单线程调度的主调线程和自定义的分发策略,用于:当有请求进入调用Web服务方法,主调线程将根据已定义的策略将服务方法及数据包分拆,并dispatch分发起独立资源服务调用,然后主线程进入限时阻塞等待;其中所述第二步骤的资源服务调用,多线程并行,体现在资源服务组件部分,这部分的接口调用通过共享队列解耦,使用主调服务方法与资源服务方法接口解耦合,用于:子线程执行资源服务调用,异步并行地进行,并将执行结果封装为应答消息返回;其中所述第三步骤的应答唤醒并归并返回,单线程的,体现在转换器部分,有结果收集器,专门收集应答结果,用于:专门的接收线程接收应答并归并,唤醒被阻塞的主调线程并返回归并的结果。利用同步对象的等待通知功能,使主调用线程能够在分拆并dispatch送出资源服务请求之后挂起,应答到来之际被唤醒;如果调用过程,某个资源服务失败或者超时,异常将会被抛出,并会唤醒被阻塞的主线程并返回超时结果,以保证限时响应;由上述方案可以看出,本发明提供一种利用自扩展的阻塞算法将同步服务调用转换为异步并行式调用的方法实现,在Web环境下,将长耗时阻塞的同步服务调用解耦为独立的多线程非阻塞式异步调用,提高服务的吞吐量,在面向可拆分的批量服务请求时能拆分并行处理,这样可以保证可靠的限时响应。为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例一中系统结构原理不意图;图2为本发明实施例一中转换过程时序图;图3为本发明实施例一中数据处理过程图。具体实施例方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。实施例一,参见图1,本发明提供一种利用自扩展的阻塞算法将同步服务调用转换为异步并行式调用的方法实现,将长耗时阻塞的同步服务调用解耦为独立的多线程非阻塞式异步调用,提高服务的吞吐量,在面向可拆分的批量服务请求时能拆分并行处理,这样可以保证可靠的限时响应;上述将同步服务调用转换为异步并行式调用的结构原理示意图参见图1,具体包括以下几个部分:图中SlOl表示:主调入口部分,这部分包括一个单线程调度的主调线程和自定义的分发策略,用于:当有请求进入调用同步服务方法,主调线程将根据已定义的策略将服务方法及数据包分拆,并dispatch分发起独立资源服务调用,然后主线程进入限时阻塞等待;图中S102表示:等待对象池部分,这部分包括自扩展的阻塞算法,一种扩展实现的同步对象的等待通知算法,在转换机制中,对调用者线程进行阻塞等待与应答唤醒;请求进入时候主调线程先向消息等待对象池(Waitablepool)注册登记一入口,并在应答结果归并后由接受者线程在等待对象池唤醒;等待对象池负责缓存所有等待对象;图中S103表示:排队路由方法部分,这部分有结果收集器,专门收集应答结果,专门的接收线程接收应答并归并,唤醒被阻塞的主调线程并返回归并的结果。利用同步对象的等待通知功能,使主调用线程能够在分拆并dispatch送出资源服务请求之后挂起,应答到来之际被唤醒;图中S104表示:资源服务组件部分,这个属于提供多种资源组件服务,调用方式是并发异步式;每个资源组件服务均可在不同的线程上运行,在主调中被拆分的子服务可以委托各个资源服务组件调用。上述将同步调用转换为异步并行式调用的转换过程时序示意图参见图2,具体包括以下处理流程:步骤SI,服务分发并阻塞等待,单线程的,体现在主调入口部分;其中部署SI划分为S1-1、S1-2、S1-3、S1-4、S1_5几小步,子步骤S1-1,经外部请求,主调用发起同步服务调用;子步骤S1-2,向缓存中的等待对象池请求Waitable对象,供阻塞用;子步骤S1-3,若等待对象池中不存在则创建新,并入池;子步骤S1-4,主调线程将根据已定义的策略将服务方法及数据包分拆,并dispatch分发起独立资源服务调用;子步骤S1-5,主调线程进入限时阻塞等待,期待结果响应;步骤S2,资源服务调用,多线程并行,体现在资源服务组件部分其中部署S2划分为S2-1、S2-2两小步,子步骤S2-1,多线程地异步地发起资源组件服务,传入数据参数;子步骤S2-2,收集调用结果,并返回;步骤S3,应答唤醒并归并返回,单线程的,体现在转换器部分,其中部署S3划分为S3-1、S3-2两小步,专门的接收线程接收应答并归并,唤醒被阻塞的主调线程并返回归并的结果上述将同步调用转换为异步调用服务所涉及的数据流程示意图参见图3,具体有以下流程:图中Q表示一个请求数据单元,针对资源组件服务来划分粒度,多个Q组合在一起表示一批数据包单元,并存放在请求队列中;图中R表示一个结果数据单元,针对资源组件服务来划分粒度,是对于请求数据单元Q的执行结果,多个R组合在一起表示一批结果数据包单元,并存放在返回队列中;步骤S1-1,请求进入,由转换引擎根据已定义的策略将请求数据包分拆成多个独立数据单元(manyQ),并入队列待分发;步骤S1-2,专门的分发器对上一步队列中存储的数据单元批量地dispath给资源组件服务,分发方式根据数据包体描述方式选择已定义策略;步骤S2,资源服务组件接收数据单元(Q),并进行服务调用,后得到调用结果R,并返回;这个过程是异步的,并发的,可以批量调用。步骤S3,结果收集(manyR),并根据策略归并,由接收线程应答给与主调线程,主调线程接收到应答(manyR)后被唤醒,并回传服务调用结果;由上可见,本发明提供的一种利用自扩展的同步阻塞算法将同步服务调用转换为异步并行式调用的方法,有以下优点。(I)服务调用批量处理,并可拆分处理,提供吞吐量。本发明具有缩短响应时间提供吞吐量等特点,在面向可拆分的批量服务请求时,如数据库操作、文件传输,批量短信email发送等,能异常分批地并行加速处理,保证可靠的限时响应。(2)同步调用转异步调用,期间对调用者透明。Web服务方法大多体现在“接收消息->处理消息->送回消息”这种trivial的同步阻塞式流程处理,当遇到长耗时阻塞的同步服务调用时,如数据库操作、文件传输,批量短信email发送等,同步服务调用通常会被长时间阻塞,而通过本发明所用的方法,能使同步服务调用者平滑地过渡,让调用者觉得它在使用的服务方法是同步阻塞式的一般服务。(3)限时返回,增加响应度。同步服务调用通常会被长时间阻塞,这样的用户体验极差,通过采用本发明的方面,使调用能限时返回,增加资源服务对调用者的响应能力。通过以上的方法实施例的描述,所属领域的技术人员可以清楚地了解到本发明是一套软件解决方案,更多地可借助软件加必需的通用硬件平台的方式集成到Web应用环境来实现。本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件服务的形式体现出来,并作为其中一部分软件服务集合到Web应用系统应用产品中。对于系统实施例而言,由于其基本相应于方法实施例,所以相关之处参见方法实施例的部分说明即可。其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。在本申请所提供的几个实施例中,应该理解到,所揭露的系统和方法,在没有超过本申请的精神和范围内,可以通过其他的方式实现。上面列举的将本发明集成到Web系统应用中的实施例只是一种示范性的例子,不应该作为限制,所给出的具体内容不应该限制本申请的目的。以上所述仅是本发明的具体实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。权利要求1.一种利用自扩展的阻塞算法将同步服务调用转换为异步并行式调用的方法,其特征在于将长耗时阻塞的同步服务任务划分为独立子服务并在不同的线程上执行,提高服务的吞吐量,在面向可拆分的批量服务请求时,能异常分批地并行加速处理,保证可靠的限时响应;本转换方法分为服务分发并阻塞等待、资源服务调用、应答唤醒并归并返回三个步骤;其中,第一步骤是服务分发并阻塞等待,单线程的,当有请求进入调用Web服务方法,主调线程将根据已定义的策略将服务方法及数据包分拆,并dispatch分发起独立资源服务调用,然后主线程进入限时阻塞等待;第二步骤是资源服务调用,多线程并行,子线程执行资源服务调用,异步并行地进行,并将执行结果封装为应答消息返回;第三步骤是应答唤醒并归并返回,单线程的,专门的接收线程接收应答并归并,唤醒被阻塞的主调线程并返回归并的结果。利用同步对象的等待通知功能,使主调用线程能够在分拆并dispatch送出资源服务请求之后挂起,应答到来之际被唤醒;如果调用过程,某个资源服务失败或者超时,异常将会被抛出,并会唤醒被阻塞的主线程并返回超时结果,以保证限时响应。2.根据权利要求1所述的方法,其特征在于,还包括:同步到异步的转换机制,用于:实现同步端与异步端的交互转换,使同步服务调用对请求者透明;所述同步端,对应权利要求1所述之第一步骤所处端,是指同步服务调用主线程,在请求进入时获取登记等待对象(Waitableobject),再进行服务分发后invoke可Waitable对象进行阻塞等待;所述异步端,对应权利要求1所述之第三步骤所处端,是指多线程调用资源服务后,并单线程接收调用结果,并作wakeup应答返回予主调线程;同步的一端必然是用等待对象池(Waitablepool),将请求分拆入队列,再由定制的分发策略dispatch送出资源服务请求之后挂起,期待应答在一定时间内返回;异步的一端必然是专门的消息接收单线程,接收资源服务调用结果,并将其归并封装为应答消息返回;中间的资源服务,采用异步并行的方式,多线程地调用。3.根据权利要求2所述的方法,其特征在于,还包括:自扩展的阻塞算法,一种扩展实现的同步对象的等待通知算法,用于:实现权利要求2中所述的同步到异步的转换机制,对调用者线程进行阻塞等待与应答唤醒;本发明实现的上述算法,是基于语言底层的同步原语实现的,在其上封装而成,抽象出来,就是getOrWaitforNewPacket和postAndNotify两个接口;对同步对象,采用Map的缓存结构保存所有已分配的正在阻塞等待的Waitable对象,供转换使用。全文摘要本发明公开了一种利用自扩展的阻塞算法将同步服务调用转换为异步并行式调用的方法,将长耗时阻塞的同步服务调用解耦为独立的多线程非阻塞式异步调用,提高服务的吞吐量,并有设定超时阻塞等待时间,保证可靠响应速度。本转换方法分为服务分发并阻塞等待、资源服务调用、应答唤醒并归并返回三个步骤。采用自扩展的阻塞算法,一种扩展实现的同步对象的等待通知算法,用在同步到异步的转换机制,对调用者线程进行阻塞等待与应答唤醒。本发明具有缩短响应时间提供吞吐量等特点,在面向可拆分的批量服务请求时,如数据库操作、文件传输,批量短信email发送等,能异常分批地并行加速处理,保证可靠的限时响应。文档编号G06F9/48GK103164273SQ20121033728公开日2013年6月19日申请日期2012年9月6日优先权日2012年9月6日发明者黄智彬,汤湛成,丁保剑申请人:佳都新太科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1