首页> 中国专利> 分布式系统中的调用请求处理方法及分布式系统和服务器

分布式系统中的调用请求处理方法及分布式系统和服务器

摘要

本发明公开了一种分布式系统中的调用请求处理方法,根据调用对象的接口能力进行判断,将发送对象为中间对象的调用请求转换为转移请求,使得中间对象只需执行调用请求的转移操作,由实际执行对象将结果直接返回给请求方。本发明还提供相应的分布式系统和分布式服务器。本发明使得请求方只需要发起一次调用即可从实际执行对象直接获得执行结果,提高了请求的效率;同时,中间对象只需要实现转移接口,并不需要实现被调用的实际执行对象的真正接口,简化了中间对象的开发难度。

著录项

  • 公开/公告号CN101271403A

    专利类型发明专利

  • 公开/公告日2008-09-24

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN200710088282.5

  • 发明设计人 周坚;彭波;

    申请日2007-03-22

  • 分类号G06F9/46(20060101);

  • 代理机构11227 北京集佳知识产权代理有限公司;

  • 代理人彭愿洁;逯长明

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2023-12-17 20:49:36

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2010-01-06

    授权

    授权

  • 2008-11-19

    实质审查的生效

    实质审查的生效

  • 2008-09-24

    公开

    公开

说明书

技术领域

本发明涉及分布式处理技术领域,具体涉及分布式系统中的调用请求处理方法及相应的分布式系统和分布式服务器。

背景技术

随着计算机技术与网络技术的不断发展,分布式系统架构正得到越来越广泛的应用。在分布式调用过程中,某些情况下,调用的请求方不能直接获得真实的实现对象,需要采用中间对象对请求方的调用请求进行处理。例如有时需要将请求方的粗粒度请求映射到提供执行的细粒度对象,或者以一个提供管理界面的对象来屏蔽若干实际执行对象等,目前一般采用如下两种处理方法:

方法一、主要包括如下步骤:

1、请求方向中间对象发起获取对象引用的请求;

2、中间对象选择一个实际执行对象并将引用返回给请求方;

3、请求方按照某种约定发起向实际执行对象的请求;

4、实际执行对象返回结果给请求方。

方法二、主要包括如下步骤:

1、请求方向中间对象发起调用请求;

2、中间对象继续调用具体的实际执行对象;

3、实际执行对象返回结果给中间对象;

4、中间对象返回结果给请求方。

上述两种方法中各个对象(包括请求方、中间对象以及实际执行对象)之间的交互通过分布式服务平台进行。在方法一中,请求方的一次服务需求需要映射为两个请求:获取对象引用的请求和真正的处理请求,这会导致性能的降低和实现复杂度的提高。在方法二中,由于以中间对象发起对实际执行对象的调用,因此发出请求和返回响应结果都需要经过中间对象,降低了请求的效率;并且,中间对象需要实现所有实际执行对象的接口,开发难度较高。

发明内容

本发明实施例提供一种能够提高效率、简化操作的分布式系统中的调用请求处理方法,包括:接收请求方对第一对象的调用请求;按照对所述第一对象接口能力的判断发送转移请求给所述第一对象,所述转移请求中包括所述请求方的调用信息;所述第一对象按照所述转移请求将所述请求方的调用转移到第二对象;所述第二对象执行所述调用,将执行结果返回给所述请求方。

本发明实施例还提供相应的分布式系统,包括分布式服务器、第一对象实现模块和第二对象实现模块;所述分布式服务器,用于接收请求方对所述第一对象实现模块的调用请求;按照对所述第一对象实现模块的接口能力的判断发送转移请求给所述第一对象实现模块,所述转移请求中包括所述请求方的调用信息;第一对象实现模块,用于按照所述转移请求将所述请求方的调用转移到所述第二对象实现模块;第二对象实现模块,用于执行所述调用,将执行结果返回给所述请求方。

以及,一种分布式服务器,包括:请求代理单元,用于接收请求方对第一对象的调用请求;对象适配单元,用于判断所述第一对象未实现所述请求方调用的接口,产生接口未实现事件;前转单元,用于获取所述接口未实现事件,将所述调用请求转换为对所述第一对象的转移请求,并将所述转移请求发送给所述第一对象。

本发明实施例采用根据调用对象的接口能力进行判断,将发送对象为中间对象(即第一对象)的调用请求转换为转移请求的方法,使得中间对象只需执行调用请求的转移操作,由实际执行对象(即第二对象)将结果直接返回给请求方。这样,请求方只需要发起一次调用即可从实际执行对象直接获得执行结果,提高了请求的效率;同时,中间对象只需要实现转移接口,并不需要实现被调用的实际执行对象的真正接口,简化了中间对象的开发难度。

附图说明

图1是本发明实施例一分布式系统中的调用请求处理方法流程示意图;

图2是本发明实施例二分布式系统中的调用请求处理方法流程示意图;

图3是本发明实施例三分布式系统逻辑结构示意图;

图4是本发明实施例四分布式服务器逻辑结构示意图;

图5是本发明实施例二方法在实施例三系统中的一个具体应用流程示意图。

具体实施方式

本发明实施例提供了一种分布式系统中的调用请求处理方法,根据调用对象的接口能力进行判断,将发送对象为中间对象的调用请求转换为转移请求,中间对象只需执行调用请求的转移操作,由实际执行对象将结果直接返回给请求方。本发明实施例还提供与此调用请求处理方法相应的分布式系统和分布式服务器。以下分别进行详细说明。

实施例一、一种分布式系统中的调用请求处理方法,流程如图1所示,包括:

A1、接收请求方对第一对象的调用请求;

本发明实施例中,提供对象间交互,即在对象间进行信息交换的服务平台可以是各种基于接口的分布式系统服务器,包括公共对象请求代理体系结构(CORBA:Common Object Request Broker Architecture)服务器、简单对象访问协议(SOAP:Simple Object Access Protocol)服务器、远程方法调用(RMI:Remote Method Invocation)服务器等。所称对象包括请求方、第一对象、第二对象在内。

A2、按照对被请求的第一对象接口能力的判断发送转移请求给第一对象,发送的转移请求中包括请求方的调用信息;

分布式服务器可以通过被请求的第一对象是否能够实现被调用的接口,或者是否具有转移接口来判定其中间对象的地位,从而将请求方的调用请求转换为对被调用的第一对象的一个特定的请求--转移请求。转移请求可通过分布式服务器对中间对象的转移接口的调用来实现,该接口可以是通用的,也可以对特定的中间对象设置特定的转移接口。

A3、第一对象按照收到的转移请求将所述请求方的调用转移到第二对象;

这里,第一对象可能是若干个实际对象的管理界面,也可能是大粒度请求到小粒度对象的映射执行者,它自身具有确定调用请求的实际执行者,即第二对象的能力。在本发明实施例中,第一对象只需实现与第二对象之间的转移接口即可,用来将请求方的调用转移到对应的实际执行对象,不必实现第二对象的所有真正接口。

A4、所述第二对象执行所述调用,将执行结果返回给所述请求方。

由于第一对象只是将调用请求转移到第二对象,调用的请求者仍为最初的请求方而不是进行调用转移的第一对象,因此,第二对象在完成执行后会将执行结果直接返回给请求方,无需经过第一对象的转发。

下面基于现有分布式系统产生标准系统异常的能力,在实施例一的基础上提供一种优选的实施方法。

实施例二、一种分布式系统中的调用请求处理方法,流程如图2所示,包括:

B1、接收请求方对第一对象的调用请求;

B2、判断被请求的第一对象未实现请求方调用的接口,产生接口未实现事件;

对于一般的分布式服务器,例如CORBA服务器,在调用对象无法实现被调用的接口时,通常能够产生相应的系统异常事件,本实施例即利用服务器产生“接口未实现异常”的能力,来触发对调用请求的转换;

当然,若判断第一对象能够实现请求调用的接口,则属于一次普通的对象调用过程,可采用现有的一般处理方式,不在本发明实施例讨论之列。

B3、获取所述接口未实现事件,将所述调用请求转换为对所述第一对象的转移请求;

在产生接口未实现事件后,服务器可提交到增设的相应部件进行处理。为确保调用转移的准确性,在获取所述接口未实现事件后,还可判断所述第一对象是否提供转移接口,若是则执行所述调用请求到转移请求的转换。当然,若否则说明第一对象不是能够实现调用转移的中间对象,可按照现有对该系统异常事件的处理方式来执行,例如向请求方返回错误信息等。

B4、将所述转移请求发送给所述第一对象。

B5、第一对象按照收到的转移请求将所述请求方的调用转移到第二对象;

B6、所述第二对象执行所述调用,将执行结果返回给所述请求方。

下面对本发明实施例的分布式系统和服务器进行详细说明。

实施例三、一种分布式系统,如图3所示,包括分布式服务器10、第一对象实现模块20和第二对象实现模块30;

分布式服务器10,用于接收请求方对第一对象实现模块20的调用请求;按照对第一对象实现模块20的接口能力的判断发送转移请求给第一对象实现模块20,所述转移请求中包括所述请求方的调用信息;

第一对象实现模块20,用于按照分布式服务器10发送的转移请求将所述请求方的调用转移到第二对象实现模块30;

第二对象实现模块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服务具有转移能力,则调用服务的转移接口,将包含客户调用请求信息的转移请求提交到CORBA服务;

5、CORBA服务根据转移请求以及其中包含的客户调用请求信息,将客户调用转移提交到真正能够处理该请求的目的CORBA对象;

6、CORBA对象执行请求并返回结果给SOAP适配器;

7、SOAP适配器将结果返回给SOAP客户。

通过上述实施例可以看出,本发明实施例采用根据调用对象的接口能力进行判断,将发送对象为中间对象的调用请求转换为转移请求的方法,使得中间对象只需执行调用请求的转移操作,由实际执行对象将结果直接返回给请求方。这样,请求方只需要发起一次调用即可从实际执行对象直接获得执行结果,提高了请求的效率;同时,中间对象只需要实现转移接口,并不需要实现被调用的实际执行对象的真正接口,简化了中间对象的开发难度。

以上对本发明实施例所提供的分布式系统中的调用请求处理方法以及相应的分布式系统和分布式服务器进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号