一种服务调用方法及装置制造方法

文档序号:7800599阅读:89来源:国知局
一种服务调用方法及装置制造方法
【专利摘要】本发明公开了一种服务调用方法及装置。所述方法包括:接收服务客户端或浏览器通过接口发起的对应服务的调用请求;获取与所述接口对应的服务的至少两个远程访问地址;根据设定的分配算法从所述至少两个远程访问地址中选择一个远程访问地址,作为与所述接口对应的服务所唯一匹配的远程访问地址;基于hession协议和所选择的远程访问地址远程调用与所述接口对应的服务。本发明实施例提供的技术方案能够实现轻量级的SOA架构,减小内存资源的消耗,提高通信效率和异地调用机制的稳定性和可靠性。
【专利说明】一种服务调用方法及装置
【技术领域】
[0001 ] 本发明实施例涉及计算机【技术领域】,尤其涉及一种服务调用方法及装置。
【背景技术】
[0002]SOA (service-oriented architecture,面向服务的体系结构)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来,即根据需求通过网络将松散耦合的粗粒度应用软件进行分布式部署、组合和使用。其中,接口独立于实现服务的硬件平台、操作系统和编程语言。在SOA中,资源被作为可通过标准方式访问的独立服务提供给网络中的其他成员,SOA与大多数通用的客户端/服务器模型的不同之处在于,它着重强调软件组件的松散耦合,并使用独立的标准接口。
[0003]Web Service (网页服务)作为SOA的一种实现方式,是通过标准的Web协议可编程访问的Web组件,也即是一个平台独立的、松耦合的、自包含的、基于可编程的Web的应用程序,使用HTTP和XML进行通信,通过SOAP协议实现异地调用。Web Service能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件,就可相互交换数据或集成,其优点是支持标准化,有广泛且成熟的应用开发平台。
[0004]但是,以上现有技术存在如下缺陷:一方面,现有的SOA技术主要基于WebService,耗用内存资源较多,其重量级和通信效率均较低;另一方面,现有的SOA技术实现的异地服务调用机制稳定性和可靠性较差,尤其是对于客户端发起大量的并发服务调用请求时,服务端不能够快速准确的处理这些请求。

【发明内容】

[0005]本发明实施例提供一种服务调用方法及装置,以实现轻量级的SOA架构,减小内存资源的消耗,提高通信效率和异地调用机制的稳定性和可靠性。
[0006]第一方面,本发明实施例提供了一种服务调用方法,该方法包括:
[0007]接收服务客户端或浏览器通过接口发起的对应服务的调用请求;
[0008]获取与所述接口对应的服务的至少两个远程访问地址;
[0009]根据设定的分配算法从所述至少两个远程访问地址中选择一个远程访问地址,作为与所述接口对应的服务所唯一匹配的远程访问地址;
[0010]基于hession协议和所选择的远程访问地址远程调用与所述接口对应的服务。
[0011]第二方面,本发明实施例还提供了一种远程服务访问装置,该装置包括:
[0012]请求接收单元,用于接收服务客户端或浏览器通过接口发起的对应服务的调用请求;
[0013]地址获取单元,用于获取与所述接口对应的服务的至少两个远程访问地址;
[0014]地址选择单元,用于根据设定的分配算法从所述至少两个远程访问地址中选择一个远程访问地址,作为与所述接口对应的服务所唯一匹配的远程访问地址;
[0015]远程服务调用单元,用于基于hession协议和所选择的远程访问地址远程调用与所述接口对应的服务。
[0016]本发明实施例一方面通过获取与接口对应的服务的至少两个远程访问地址,并根据从这些远程访问地址中选取的一个远程访问地址进行远程服务调用,能够实现对于客户端发起大量的并发调用请求时,通过合理的分配原则访问远程服务器集群中的不同服务器以进行服务调用,大大提高了异地服务调用机制的稳定性和可靠性;另一方面,通过基于hession协议远程调用与所述接口对应的服务,由于Hession协议精简且高效,使得异地服务调用系统的架构是轻量级的,减小了客户端和服务端内存资源的消耗,提高了通信效率。
【专利附图】

【附图说明】
[0017]图1是本发明实施例一提供的一种服务调用方法的流程示意图;
[0018]图2是本发明实施例二提供的一种服务调用装置的结构示意图。
【具体实施方式】
[0019]下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
[0020]图1是本发明实施例一提供的一种服务调用方法的流程示意图,本实施例可适用于网页浏览器或者服务客户端发起对服务的访问请求时,通过SOA (Service OrientedArchitecture,面向服务的体系结构)系统调用服务的情况。其中SOA系统(即SOA组件)包括客户端与服务端,其客户端是与现有的网页浏览器或者服务客户端部署在一起的软件产品;其服务端是与所述网页浏览器或者服务客户端对应的服务器集群中的各服务器所部署在一起的软件产品。
[0021]该方法可以由SOA系统的客户端来执行,具体包括如下步骤:
[0022]步骤110、接收服务客户端或浏览器通过接口发起的对应服务的调用请求;
[0023]步骤120、获取与接口对应的服务的至少两个远程访问地址;
[0024]步骤130、根据设定的分配算法从所述至少两个远程访问地址中选择一个远程访问地址,作为与接口对应的服务所唯一匹配的远程访问地址;
[0025]步骤140、基于hession协议和所选择的远程访问地址远程调用与接口对应的服务。
[0026]在本实施例中,服务客户端或浏览器可通过接口发起对应服务的调用请求,例如通过接口 SOAFactory.getFactory ().getService (IService)来发起一个服务调用请求。
[0027]SOA系统的客户端在接收到该调用请求后,首先获取与接口对应的服务的至少两个远程访问地址。当只存在一个唯一的远程服务器能够实现该服务时,该服务对应一个远程访问地址。本实施例中,SOA系统的服务端是与所述网页浏览器或者服务客户端对应的远程服务器集群中的各服务器部署在一起,存在至少两个远程服务器能够实现该服务,即该服务对应至少两个远程访问地址。具体的获取远程访问地址的过程可以为:查找本地SOAProperties中的配置信息,根据该配置信息获取与接口对应的服务的至少两个远程访问地址。其中,SOAProperties包含有用户预先设置的与各种接口所对应的服务的远程访问地址等配置信息。[0028]然后,SOA系统的客户端根据设定的分配算法从所获取的至少两个远程访问地址中选择一个远程访问地址,作为与接口对应的服务所唯一匹配的远程访问地址。具体的选择过程可以为:随机从所获取的至少两个远程访问地址中选择一个远程访问地址,作为与接口对应的服务所唯一匹配的远程访问地址。这里采用随机选择这种简单高效的分配算法,能够避免资源耗费,缩短服务调用时间。
[0029]为了能够提高服务调用的成功率,在后续服务调用过程中,SOA系统的客户端可实时或按预设周期检测与所选择的远程访问地址唯一匹配的服务是否可用,如果不可用,则再次为与接口对应的服务重新选择一个唯一匹配的远程访问地址。
[0030]当然,设定的分配算法除随机分配之外,还可按照所调用的服务的类型等其他方式进行分配,例如SOA系统的客户端在接收到一个接口的服务调用请求时,可首先分析该服务调用请求所属的服务类型,然后根据预设的服务类型与该接口下的多个访问地址之间的映射关系,选择一个与所分析得到的服务类型相对应的远程访问地址,作为此次服务调用时与接口对应的服务所唯一匹配的远程访问地址。
[0031]在得到与接口对应的服务所唯一匹配的远程访问地址后,SOA系统的客户端基于hession协议和所选择的远程访问地址远程调用与接口对应的服务。SOA系统的服务端在接收到SOA系统的客户端的远程调用请求后,从与其部属在一起的服务器获取相应服务,并将该服务经SOA系统的客户端下发至网页浏览器或者服务客户端。Hessian是一个轻量级的远程服务访问工具,使用简单的方法提供了 RMI (Remote Method Invocation,远程方法调用)的功能。相比WebService, Hessian更简单、快捷。Hessian协议采用的是二进制RPC (Remote Procedure Call,远程过程调用)协议,很适合于发送二进制数据。
[0032]本实施例提出的技术方案,一方面通过获取与接口对应的服务的至少两个远程访问地址,并根据从这些远程访问地址中选取的一个远程访问地址进行远程服务调用,能够实现对于客户端发起大量的并发调用请求时,通过合理的分配原则访问远程服务器集群中的不同服务器以进行服务调用,大大提高了异地服务调用机制的稳定性和可靠性;另一方面,通过基于hession协议远程调用与所述接口对应的服务,由于Hession协议精简且高效,使得异地服务调用系统的架构是轻量级的,减小了客户端和服务端内存资源的消耗,提高了通信效率。
[0033]在上述技术方案的基础上,在执行完接收服务客户端或浏览器通过接口发起的对应服务的调用请求的步骤110之后,在执行获取与接口对应的服务的至少两个远程访问地址的步骤120之前,还包括:判断所接收的调用请求类型;如果判断所接收的调用请求类型为本地服务调用请求,则通过接口调用本地存储的与接口对应的服务,即不再需要通过远程调用即可实现的本地服务;如果判断所接收的调用请求类型为远程服务调用请求时,则执行获取与接口对应的服务的至少两个远程访问地址的步骤120。
[0034]其中,判断所接收的调用请求类型,可具体为:判断sping beans的定义中是否包含所述接口,如果是,则判断所接收的调用请求类型为本地服务调用请求,否则判断所接收的调用请求类型为远程服务调用请求。
[0035]这样,通过判断所接收的调用请求类型为本地服务调用请求时,通过接口调用本地存储的与接口对应的服务,而不再通过远程调用,能够进一步的缩短服务调用时间,降低资源耗费,提高服务调用效率。[0036]现以一具体的例子,对上述技术方案提供的服务调用方法作进一步说明。其服务调用过程包括:
[0037] 服务客户端通过接口 IAuthentication发起一个服务调用,如SOAFactory.getFactory0.getService (!Authentication).authen(username, password);
[0038]SOA系统根据sping beans的定义判断接口 IAuthentication对应的服务是否是远程服务;
[0039]在判断是远程服务的情况下,SOA系统根据SOAProperties中的配置,找到与接 P !Authentication 对应的两个远程访问地址:http://192.168.5.233:5480/aa/hessian-remote 和 http://192.168.5.234:5480/aa/hessian-remote ;
[0040]随机选择一个远程访问地址http://192.168.5.234:5480/aa/hessian-remote作为与接口 IAuthentication对应的服务唯一匹配的远程访问地址,但如果所选服务在调用过程中发现不可用,则需重新选择与接口 IAuthentication对应的服务唯一匹配的远程访问地址 http://192.168.5.233:5480/aa/hessian-remote ;
[0041]根据选定的远程访问地址通过hessian协议调用远程服务。
[0042]图2是本发明实施例二提供的一种服务调用装置的结构示意图。本实施例可适用于网页浏览器或者服务客户端发起对服务的访问请求时调用服务的情况。具体的,所述装置包括:
[0043]请求接收单元210,用于接收服务客户端或浏览器通过接口发起的对应服务的调用请求;
[0044]地址获取单元220,用于获取与所述接口对应的服务的至少两个远程访问地址;
[0045]地址选择单元230,用于根据设定的分配算法从所述至少两个远程访问地址中选择一个远程访问地址,作为与所述接口对应的服务所唯一匹配的远程访问地址;
[0046]远程服务调用单元240,用于基于hession协议和所选择的远程访问地址远程调用与所述接口对应的服务。
[0047]进一步的,地址获取单元220,具体用于查找本地SOAProperties中的配置信息,根据所述配置信息获取与所述接口对应的服务的至少两个远程访问地址。
[0048]进一步的,地址选择单元230,具体用于:随机从所述至少两个远程访问地址中选择一个远程访问地址,作为与所述接口对应的服务所唯一匹配的远程访问地址;在后续服务调用过程中,按预设周期检测与所选择的远程访问地址唯一匹配的服务是否可用,如果不可用,则再次为与所述接口对应的服务重新选择一个唯一匹配的远程访问地址。
[0049]进一步的,所述装置还包括请求判断单元(未示出)和本地服务调用单元(未示出),其中:
[0050]请求判断单元,用于在所述请求接收单元接收服务客户端或浏览器通过接口发起的对应服务的调用请求之后,在所述地址获取单元获取与所述接口对应的服务的至少两个远程访问地址之前,判断所接收的调用请求类型;
[0051]本地服务调用单元,用于如果所述请求判断单元判断所接收的调用请求类型为本地服务调用请求,则通过所述接口调用本地存储的与所述接口对应的服务;
[0052]地址获取单元220,具体用于如果请求判断单元判断所接收的调用请求类型为远程服务调用请求时,则获取与所述接口对应的服务的至少两个远程访问地址。[0053]进一步的,请求判断单元,具体用于判断sping beans的定义中是否包含所述接口,如果是,则判断所接收的调用请求类型为本地服务调用请求,否则判断所接收的调用请求类型为远程服务调用请求。
[0054]上述产品可执行本发明任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。
[0055]注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
【权利要求】
1.一种服务调用方法,其特征在于,包括: 接收服务客户端或浏览器通过接口发起的对应服务的调用请求; 获取与所述接口对应的服务的至少两个远程访问地址; 根据设定的分配算法从所述至少两个远程访问地址中选择一个远程访问地址,作为与所述接口对应的服务所唯一匹配的远程访问地址; 基于hession协议和所选择的远程访问地址远程调用与所述接口对应的服务。
2.根据权利要求1所述的服务调用方法,其特征在于,在所述接收服务客户端或浏览器通过接口发起的对应服务的调用请求之后,在所述获取与所述接口对应的服务的至少两个远程访问地址之前,还包括:判断所接收的调用请求类型; 如果判断所接收的调用请求类型为本地服务调用请求,则通过所述接口调用本地存储的与所述接口对应的服务; 如果判断所接收的调用请求类型为远程服务调用请求时,则执行所述获取与所述接口对应的服务的至少两个远程访问地址。
3.根据权利要求2所述的服务调用方法,其特征在于,所述判断所接收的调用请求类型,包括:判断sping beans的定义中是否包含所述接口,如果是,则判断所接收的调用请求类型为本地服务调用请求,否则判断所接收的调用请求类型为远程服务调用请求。
4.根据权利要求1所述的服务调用方法,其特征在于,所述获取与所述接口对应的服务的至少两个远程访问地址,包括:查找本地SOAProperties中的配置信息,根据所述配置信息获取与所述接口对应的服务的至少两个远程访问地址。
5.根据权利要求1所述的服务调用方法,其特征在于,所述根据设定的分配算法从所述至少两个远程访问地址中选择一个远程访问地址,作为与所述接口对应的服务所唯一匹配的远程访问地址,包括: 随机从所述至少两个远程访问地址中选择一个远程访问地址,作为与所述接口对应的服务所唯一匹配的远程访问地址; 在后续服务调用过程中,按预设周期检测与所选择的远程访问地址唯一匹配的服务是否可用,如果不可用,则再次为与所述接口对应的服务重新选择一个唯一匹配的远程访问地址。
6.一种服务调用装置,其特征在于,包括: 请求接收单元,用于接收服务客户端或浏览器通过接口发起的对应服务的调用请求; 地址获取单元,用于获取与所述接口对应的服务的至少两个远程访问地址; 地址选择单元,用于根据设定的分配算法从所述至少两个远程访问地址中选择一个远程访问地址,作为与所述接口对应的服务所唯一匹配的远程访问地址; 远程服务调用单元,用于基于hession协议和所选择的远程访问地址远程调用与所述接口对应的服务。
7.根据权利要求6所述的服务调用装置,其特征在于,还包括请求判断单元和本地服务调用单元,其中: 所述请求判断单元,用于在所述请求接收单元接收服务客户端或浏览器通过接口发起的对应服务的调用请求之后,在所述地址获取单元获取与所述接口对应的服务的至少两个远程访问地址之前,判断所接收的调用请求类型;所述本地服务调用单元,用于如果所述请求判断单元判断所接收的调用请求类型为本地服务调用请求,则通过所述接口调用本地存储的与所述接口对应的服务; 所述地址获取单元,具体用于如果所述请求判断单元判断所接收的调用请求类型为远程服务调用请求时,则获取与所述接口对应的服务的至少两个远程访问地址。
8.根据权利要求7所述的服务调用装置,其特征在于,所述请求判断单元,具体用于判断sping beans的定义中是否包含所述接口,如果是,则判断所接收的调用请求类型为本地服务调用请求,否则判断所接收的调用请求类型为远程服务调用请求。
9.根据权利要求6所述的服务调用装置,其特征在于,所述地址获取单元,具体用于查找本地SOAProperties中的配置信息,根据所述配置信息获取与所述接口对应的服务的至少两个远程访问地址。
10.根据权利要求6所述的服务调用装置,其特征在于,所述地址选择单元,具体用于: 随机从所述至少两个远程访问地址中选择一个远程访问地址,作为与所述接口对应的服务所唯一匹配的远程访问地址; 在后续服务调用过程中,按预设周期检测与所选择的远程访问地址唯一匹配的服务是否可用,如果不可用, 则再次为与所述接口对应的服务重新选择一个唯一匹配的远程访问地址。
【文档编号】H04L29/08GK103905551SQ201410130263
【公开日】2014年7月2日 申请日期:2014年4月2日 优先权日:2014年4月2日
【发明者】王继东, 蔡抒扬, 王鹏, 胡道生, 夏曙光 申请人:北京中交兴路车联网科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1