专利名称:分布式系统中的调用请求处理方法及分布式系统和服务器的制作方法
技术领域:
本发明涉及分布式处理技术领域,具体涉及分布式系统中的调用请求处理 方法及相应的分布式系统和分布式服务器。
技术背景随着计算机技术与网络技术的不断发展,分布式系统架构正得到越来越广 泛的应用。在分布式调用过程中,某些情况下,调用的请求方不能直接获得真 实的实现对象,需要采用中间对象对请求方的调用请求进行处理。例如有时需 要将请求方的粗粒度请求映射到提供执行的细粒度对象,或者以 一个提供管理界面的对象来屏蔽若干实际执行对象等,目前一般采用如下两种处理方法 方法一、主要包括如下步骤1、 请求方向中间对象发起获取对象引用的请求;2、 中间对象选择一个实际执行对象并将引用返回给请求方;3、 请求方按照某种约定发起向实际执行对象的请求;4、 实际执行对象返回结果给请求方。 方法二、主要包括如下步骤1、 请求方向中间对象发起调用请求;2、 中间对象继续调用具体的实际执行对象;3、 实际执行对象返回结果给中间对象;4、 中间对象返回结果给请求方。上述两种方法中各个对象(包括请求方、中间对象以及实际执行对象)之 间的交互通过分布式服务平台进行。在方法一中,请求方的一次服务需求需要 映射为两个请求获取对象引用的请求和真正的处理请求,这会导致性能的降 低和实现复杂度的提高。在方法二中,由于以中间对象发起对实际执行对象的 调用,因此发出请求和返回响应结果都需要经过中间对象,降低了请求的效率; 并且,中间对象需要实现所有实际执行对象的接口,开发难度较高。 发明内容本发明实施例提供一种能够提高效率、简化操作的分布式系统中的调用请求处理方法,包括接收请求方对第一对象的调用请求;按照对所述第一对象 接口能力的判断发送转移请求给所述第一对象,所述转移请求中包括所述请求 方的调用信息;所述第 一对象按照所述转移请求将所述请求方的调用转移到第 二对象;所述第二对象执行所述调用,将执行结果返回给所述请求方。本发明实施例还提供相应的分布式系统,包括分布式服务器、第一对象实 现模块和第二对象实现模块;所述分布式服务器,用于接收请求方对所述第一 对象实现模块的调用请求;按照对所述第一对象实现模块的接口能力的判断发 送转移请求给所述第一对象实现模块,所述转移请求中包括所述请求方的调用 信息;第一对象实现模块,用于按照所述转移请求将所述请求方的调用转移到 所述第二对象实现模块;第二对象实现模块,用于执行所述调用,将执行结果 返回给所述请求方。以及, 一种分布式服务器,包括请求代理单元,用于接收请求方对第一 对象的调用请求;对象适配单元,用于判断所述第一对象未实现所述请求方调 用的接口,产生接口未实现事件;前转单元,用于获取所述接口未实现事件,将所述调用请求转换为对所述第一对象的转移请求,并将所述转移请求发送给 所述第一对象。本发明实施例采用根据调用对象的接口能力进行判断,将发送对象为中间 对象(即第一对象)的调用请求转换为转移请求的方法,使得中间对象只需执 行调用请求的转移操作,由实际执行对象(即第二对象)将结果直接返回给请 求方。这样,请求方只需要发起一次调用即可从实际执行对象直接获得执行结 果,提高了请求的效率;同时,中间对象只需要实现转移接口,并不需要实现 被调用的实际执行对象的真正接口 ,简化了中间对象的开发难度。
图i是本发明实施例一分布式系统中的调用请求处理方法流程示意图; 图2是本发明实施例二分布式系统中的调用请求处理方法流程示意图; 图3是本发明实施例三分布式系统逻辑结构示意图; 图4是本发明实施例四分布式服务器逻辑结构示意图;图5是本发明实施例二方法在实施例三系统中的一个具体应用流程示意图。
具体实施方式
本发明实施例提供了 一种分布式系统中的调用请求处理方法,根据调用对 象的接口能力进行判断,将发送对象为中间对象的调用请求转换为转移请求, 中间对象只需执行调用请求的转移操作,由实际执行对象将结果直接返回给请 求方。本发明实施例还l^供与此调用请求处理方法相应的分布式系统和分布式 服务器。以下分别进行详细说明。实施例一、 一种分布式系统中的调用请求处理方法,流程如图l所示,包括Al、接收请求方对第一对象的调用请求;本发明实施例中,提供对象间交互,即在对象间进行信息交换的服务平台 可以是各种基于接口的分布式系统服务器,包括公共对象请求代理体系结构 (CORBA: Common Object Request Broker Architecture )服务器、简单对象访 问协议(SOAP: Simple Object Access Protocol )服务器、远程方法调用(RMI: Remote Method Invocation)服务器等。所称对象包括请求方、第 一对象、第二 对象在内。A2、按照对被请求的第一对象接口能力的判断发送转移请求给第一对象, 发送的转移请求中包括请求方的调用信息;分布式服务器可以通过被请求的第一对象是否能够实现被调用的接口 ,或 者是否具有转移接口来判定其中间对象的地位,从而将请求方的调用请求转换 为对被调用的第一对象的一个特定的请求一一转移请求。转移请求可通过分布 式服务器对中间对象的转移接口的调用来实现,该接口可以是通用的,也可以 对特定的中间对象设置特定的转移接口 。A3、第一对象按照收到的转移请求将所述请求方的调用转移到第二对象;这里,第一对象可能是若干个实际对象的管理界面,也可能是大粒度请求 到小粒度对象的映射执行者,它自身具有确定调用请求的实际执行者,即第二 对象的能力。在本发明实施例中,第一对象只需实现与第二对象之间的转移接口即可,用来将请求方的调用转移到对应的实际执行对象,不必实现第二对象 的所有真正4妄口。A4、所述第二对象执行所述调用,将执行结果返回给所述请求方。由于第一对象只是将调用请求转移到第二对象,调用的请求者仍为最初的请求方而不是进行调用转移的第一对象,因此,第二对象在完成执行后会将执行结果直接返回给请求方,无需经过第一对象的转发。下面基于现有分布式系统产生标准系统异常的能力,在实施例一的基础上 提供一种优选的实施方法。实施例二、 一种分布式系统中的调用请求处理方法,流程如图2所示,包括Bl、接收请求方对第一对象的调用请求;B2、判断被请求的第一对象未实现请求方调用的接口 ,产生接口未实现 事件;对于一般的分布式服务器,例如CORBA服务器,在调用对象无法实现被 调用的接口时,通常能够产生相应的系统异常事件,本实施例即利用服务器产 生"接口未实现异常,,的能力,来触发对调用请求的转换;当然,若判断第一对象能够实现请求调用的接口,则属于一次普通的对象 调用过程,可采用现有的一般处理方式,不在本发明实施例讨论之列。B3、获取所述接口未实现事件,将所述调用请求转换为对所述第一对象 的转移请求;在产生接口未实现事件后,服务器可提交到增设的相应部件进行处理。为 确保调用转移的准确性,在获取所述接口未实现事件后,还可判断所述第一对 象是否提供转移接口,若是则执行所述调用请求到转移请求的转换。当然,若 否则说明第一对象不是能够实现调用转移的中间对象,可按照现有对该系统异 常事件的处理方式来执行,例如向请求方返回错误信息等。B4、将所述转移请求发送给所述第一对象。B5 、第 一对象按照收到的转移请求将所述请求方的调用转移到第二对象; B6、所述第二对象执行所述调用,将执行结果返回给所述请求方。下面对本发明实施例的分布式系统和服务器进行详细说明。实施例三、 一种分布式系统,如图3所示,包括分布式服务器IO、第一对 象实现模块20和第二对象实现模块30;分布式服务器IO,用于接收请求方对第一对象实现模块20的调用请求;按 照对第 一对象实现模块20的接口能力的判断发送转移请求给第 一对象实现模 块20,所述转移请求中包括所述请求方的调用信息;第一对象实现模块20,用于按照分布式服务器10发送的转移请求将所述请 求方的调用转移到第二对象实现模块3 0;第二对象实现模块30,用于执行所述调用,将执行结果返回给所述请求方。本实施例中分布式服务器10可釆用如下结构,包括请求代理单元11,用于接收请求方对第 一对象实现模块20的调用请求;对象适配单元12,用于在请求代理单元11收到对第一对象实现模块20的调 用请求后,判断第一对象实现模块20未实现所述请求方调用的接口,产生接口 未实现事件;前转单元13,用于获取对象适配单元12提交的接口未实现事件,将所述调 用请求转换为对第 一对象实现模块20的转移请求,并将所述转移请求发送给第 一对象实现模块20。在采用上述结构时,本实施例的分布式服务器可通过在现有分布式服务器 的基础上简单的增设前转单元来实现。实施例四、 一种分布式服务器40,如图4所示,包括请求代理单元41、对 象适配单元42和前转单元43;请求代理单元41,用于接收请求方对第一对象的调用请求;对象适配单元42,用于在请求代理单元41收到对第 一对象的调用请求后, 判断所述第一对象未实现所述请求方调用的接口 ,产生接口未实现事件;前转单元43,用于获取对象适配单元42提交的接口未实现事件,将所述调 用请求转换为对所述第一对象的转移请求,并将所述转移请求发送给所述第一 对象。本实施例中前转单元43可采用如下结构,包括事件捕获子单元431,用于获取所述接口未实现事件;请求转换子单元432,用于在事件捕获子单元431获取接口未实现事件后, 判断所述第一对象是否提供转移接口 ,若是则将所述调用请求转换为对所述第 一对象的转移请求;转移接口子单元433,用于将请求转换子单元432转换后的转移请求发送给 所述第一对象。本实施例分布式服务器可用于实施例三分布式系统中。为更好的理解本发明实施例,以下给出实施例二方法应用于实施例三系统 中的一个具体应用场景。场景说明假定请求方为通过SOAP协议适配器(以下简称SOAP适配器) 提出SOAP请求的SOAP客户,请求的实现方为基于CORBA的分布式系统, SOAP适配器进行SOAP请求到CORBA请求的协议转换。由于SOAP协议是一 种基于服务的协议,而CORBA是一种基于对象的协议,服务是一种粗粒度的 执行实体,而对象是一种细粒度的执行实体,因此在将SOAP请求执行到实际 的CORBA对象时,通常需要进行不同粒度间的映射。本场景中的CORBA服务, 即第 一对象,提供将粗粒度SOAP请求映射到细粒度的CORBA对象上的能力, SOAP客户向它发起请求;CORBA对象,即第二对象,实现请求所调用的接口, 提供实际的执行能力。请求处理流程如图5所示,包括1 、 SOAP客户通过SOAP适配器向CORBA服务发起调用请求;2、 SOAP适配器通过CORBA服务器提交对CORBA服务的调用请求;3、 对象适配单元在查找接口过程中发现此CORBA服务没有实现请求的接 口,将"接口未实现异常"提交到前转单元;4、 前转单元发现CORBA服务具有转移能力,则调用服务的转移接口,将 包含客户调用请求信息的转移请求提交到CORB A服务;5、 CORBA服务根据转移请求以及其中包含的客户调用请求信息,将客户 调用转移提交到真正能够处理该请求的目的CORBA对象;6、 CORBA对象执行请求并返回结果给SOAP适配器;7、 SOAP适配器将结果返回给SOAP客户。通过上述实施例可以看出,本发明实施例采用根据调用对象的接口能力进 行判断,将发送对象为中间对象的调用请求转换为转移请求的方法,使得中间 对象只需执行调用请求的转移操作,由实际执行对象将结果直接返回给请求 方。这样,请求方只需要发起一次调用即可从实际执行对象直接获得执行结果,提高了请求的效率;同时,中间对象只需要实现转移接口,并不需要实现被调 用的实际执行对象的真正接口 ,简化了中间对象的开发难度。以上对本发明实施例所提供的分布式系统中的调用请求处理方法以及相 应的分布式系统和分布式服务器进行了详细介绍,本文中应用了具体个例对本 发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发 明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思 想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容 不应理解为对本发明的限制。
权利要求
1. 一种分布式系统中的调用请求处理方法,其特征在于,包括接收请求方对第一对象的调用请求;按照对所述第一对象接口能力的判断发送转移请求给所述第一对象,所述转移请求中包括所述请求方的调用信息;所述第一对象按照所述转移请求将所述请求方的调用转移到第二对象;所述第二对象执行所述调用,将执行结果返回给所述请求方。
2、 根据权利要求l所述的调用请求处理方法,其特征在于,所述按照对第 一对象接口能力的判断发送转移请求给第 一对象的步骤包括判断所述第一对象未实现所述请求方调用的接口 ,产生接口未实现事件; 获取所述接口未实现事件,将所述调用请求转换为对所述第一对象的转移 请求;将所述转移请求发送给所述第一对象。
3、 根据权利要求2所述的调用请求处理方法,其特征在于,所述按照对第 一对象接口能力的判断发送转移请求给第一对象的步骤还包括在获取所述接口未实现事件后,还判断所述第一对象是否提供转移接口 , 若是则执行所述调用请求到转移请求的转换。
4、 一种分布式系统,其特征在于,包括分布式服务器、第一对象实现 模块和第二对象实现模块;所述分布式服务器,用于接收请求方对所述第一对象实现模块的调用请 求;按照对所述第一对象实现模块的接口能力的判断发送转移请求给所述第一 对象实现模块,所述转移请求中包括所述请求方的调用信息;第一对象实现模块,用于按照所述转移请求将所述请求方的调用转移到所 述第二对象实现模块;第二对象实现模块,用于执行所述调用,将执行结果返回给所述请求方。
5、 根据权利要求4所述的分布式系统,其特征在于,所述分布式服务器包括请求代理单元,用于接收请求方对所述第一对象实现模块的调用请求; 对象适配单元,用于判断所述第一对象实现模块未实现所述请求方调用的接口,产生接口未实现事件;前转单元,用于获取所述接口未实现事件,将所述调用请求转换为对所述 第一对象实现模块的转移请求,并将所述转移请求发送给所述第一对象实现模 块。
6、 根据权利要求5所述的分布式系统,其特征在于,所述前转单元包括 事件捕获子单元,用于获取所述接口未实现事件; 请求转换子单元,用于在获取所述接口未实现事件后,判断所述第一对象实现模块是否提供转移接口 ,若是则将所述调用请求转换为对所述第一对象实 现模块的转移请求;转移接口子单元,用于将所述转移请求发送给所述第一对象实现模块。
7、 一种分布式服务器,其特征在于,包括 请求代理单元,用于接收请求方对第一对象的调用请求; 对象适配单元,用于判断所述第一对象未实现所述请求方调用的接口,产生接口未实现事件;前转单元,用于获取所述接口未实现事件,将所述调用请求转换为对所述 第一对象的转移请求,并将所述转移请求发送给所述第一对象。
8、 根据权利要求7所述的分布式服务器,其特征在于,所述前转单元包括 事件捕获子单元,用于获取所述接口未实现事件;请求转换子单元,用于在获取所述接口未实现事件后,判断所述第一对象 是否提供转移接口 ,若是则将所述调用请求转换为对所述第一对象的转移请 求;转移接口子单元,用于将所述转移请求发送给所述第一对象。
全文摘要
本发明公开了一种分布式系统中的调用请求处理方法,根据调用对象的接口能力进行判断,将发送对象为中间对象的调用请求转换为转移请求,使得中间对象只需执行调用请求的转移操作,由实际执行对象将结果直接返回给请求方。本发明还提供相应的分布式系统和分布式服务器。本发明使得请求方只需要发起一次调用即可从实际执行对象直接获得执行结果,提高了请求的效率;同时,中间对象只需要实现转移接口,并不需要实现被调用的实际执行对象的真正接口,简化了中间对象的开发难度。
文档编号G06F9/46GK101271403SQ20071008828
公开日2008年9月24日 申请日期2007年3月22日 优先权日2007年3月22日
发明者坚 周, 波 彭 申请人:华为技术有限公司