CN112114979B - 远程过程调用方法和装置 - Google Patents

远程过程调用方法和装置 Download PDF

Info

Publication number
CN112114979B
CN112114979B CN202010898170.1A CN202010898170A CN112114979B CN 112114979 B CN112114979 B CN 112114979B CN 202010898170 A CN202010898170 A CN 202010898170A CN 112114979 B CN112114979 B CN 112114979B
Authority
CN
China
Prior art keywords
service
request
calling
list
result
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010898170.1A
Other languages
English (en)
Other versions
CN112114979A (zh
Inventor
郑汉军
黄加荣
陈贵民
黄键
李�杰
周剑宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiamen Anscen Network Technology Co ltd
Original Assignee
Xiamen Anscen Network Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xiamen Anscen Network Technology Co ltd filed Critical Xiamen Anscen Network Technology Co ltd
Priority to CN202010898170.1A priority Critical patent/CN112114979B/zh
Publication of CN112114979A publication Critical patent/CN112114979A/zh
Application granted granted Critical
Publication of CN112114979B publication Critical patent/CN112114979B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object oriented; Remote method invocation [RMI]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请实施例公开了远程过程调用方法和装置。该方法的一具体实施方式包括:响应于目标应用启动,为目标远程服务创建代理,其中,目标远程服务为经过预设配置方式配置的服务;响应于目标应用发起服务调用,通过代理从注册中心获取与被调用服务对应的服务列表,其中,服务列表为包括被调用服务所在的服务端的地址组成的列表;从服务列表中获取可用服务;生成调用可用服务的请求,并将请求发送至可用服务对应的服务端;响应于接收到服务端返回的调用结果,将调用结果返回给目标应用。该实施方式实现了通过将所有的服务都在注册中心统一注册,管理和配置,灵活高效,减少了管理成本,加大了开发效率和部署效率。

Description

远程过程调用方法和装置
技术领域
本申请实施例涉及计算机技术领域,具体涉及远程过程调用方法和装置。
背景技术
远程过程调用(RPC,Remote Procedure Call),就是一个进程调用另外一个进程所提供的方法。在远程过程调用中,将要提供给被调用端进程的所有参数序列化为一个网络消息,然后通过网络传输发送到被调用端进程中。被调用端处理完成相应的服务后,将产生的结果也序列化成一个网络消息,发送到调用端进程。
随着访问量逐渐增大,单一应用满足不了服务调用时,需要将应用进行横向和垂直切分,随着应用的切分,应用间的服务调用不可避免。此时维护服务间的关系变得日益困难。
目前的远程过程调用***包括Dubbo,Feign等。Dubbo较为重量级;Feign基于http协议,包含http头臃长的数据,传输效率有待提高。
发明内容
本申请实施例的目的在于提出了一种改进的远程过程调用方法和装置,来解决以上背景技术部分提到的技术问题。
第一方面,本申请实施例提供了一种远程过程调用方法,该方法包括:响应于目标应用启动,为目标远程服务创建代理,其中,目标远程服务为经过预设配置方式配置的服务;响应于目标应用发起服务调用,通过代理从注册中心获取与被调用服务对应的服务列表,其中,服务列表为包括被调用服务所在的服务端的地址组成的列表;从服务列表中获取可用服务;生成调用可用服务的请求,并将请求发送至可用服务对应的服务端;响应于接收到服务端返回的调用结果,将调用结果返回给目标应用。
在一些实施例中,从服务列表中获取可用服务,包括:响应于确定被调用服务为首次调用,从服务列表中随机获取可用服务;响应于确定被调用服务不是首次调用,从服务列表中获取上一次使用的服务作为可用服务。
在一些实施例中,在从服务列表中获取可用服务之前,该方法还包括:对服务列表包括的服务对应的地址进行运算,得到运算结果;从服务列表中获取上一次使用的服务作为可用服务,包括:确定首次调用的可用服务对应的运算结果作为目标运算结果,并从服务列表中获取与目标运算结果对应的服务作为可用服务。
在一些实施例中,对服务列表包括的服务对应的地址进行运算,得到运算结果,包括:对于服务列表包括的每个服务,对该服务对应的地址按照预设转换方式进行转换,得到转换结果;将所得到的转换结果与服务列表包括的服务的数量进行取模运算,得到取模结果;基于所得到的转换结果和取模结果,生成该服务的运算结果。
在一些实施例中,生成调用可用服务的请求,包括:将可用服务的相关信息封装为调用可用服务的请求,其中,相关信息包括以下至少一种:调用参数,调用类,调用方法。
在一些实施例中,被调用服务为TCP服务。
第二方面,本申请实施例提供了一种应用于服务端的远程过程调用方法,该方法包括:响应于目标应用启动,扫描目标应用中的经过预设配置方式配置的服务;创建服务的实例并缓存实例;在注册中心注册服务;响应于接收到客户端发送的用于调用可用服务的请求,从实例缓存中获取请求对应的实例,其中,请求是客户端根据上述第一方面中任一实施例描述的方法生成的;基于请求包括的内容,运行实例,得到调用结果;将调用结果发送至客户端。
在一些实施例中,基于请求包括的内容,运行实例,得到调用结果,包括:从请求中解析可用服务的相关信息,其中,相关信息包括以下至少一种:调用参数,调用类,调用方法;基于相关信息,运行实例,得到调用结果。
第三方面,本申请实施例提供了一种应用于注册中心的服务列表的生成方法,该方法包括:响应于接收到服务端发送的服务的相关信息,以服务的相关信息作为服务关键字生成服务的临时节点;以服务端的地址作为服务端关键字,在服务的临时节点下建立服务端的临时节点;将同一服务关键字对应的至少一个服务端的临时节点确定为一个服务列表。
在一些实施例中,服务的相关信息包括以下至少一种:类全限定名,方法名,参数类型。
在一些实施例中,该方法还包括:通过心跳机制,确定服务列表中是否存在失效的临时节点;响应于存在失效的临时节点,将失效的临时节点从服务列表中删除。
第四方面,本申请实施例提供了一种应用于客户端的远程过程调用装置,该装置包括:代理模块,用于响应于目标应用启动,为目标远程服务创建代理,其中,目标远程服务为经过预设配置方式配置的服务;调用模块,用于响应于目标应用发起服务调用,通过代理从注册中心获取与被调用服务对应的服务列表,其中,服务列表为包括被调用服务所在的服务端的地址组成的列表;第一获取模块,用于从服务列表中获取可用服务;第一发送模块,用于生成调用可用服务的请求,并将请求发送至可用服务对应的服务端;第二发送模块,用于响应于接收到服务端返回的调用结果,将调用结果返回给目标应用。
第五方面,本申请实施例提供了一种应用于服务端的远程过程调用装置,该装置包括:扫描模块,用于响应于目标应用启动,扫描目标应用中的经过预设配置方式配置的服务;创建模块,用于创建服务的实例并缓存实例;注册模块,用于在注册中心注册服务;第二获取模块,用于响应于接收到客户端发送的用于调用可用服务的请求,从实例缓存中获取请求对应的实例,其中,请求是客户端根据权利要求1-6之一的方法生成的;运行模块,用于基于请求包括的内容,运行实例,得到调用结果;第三发送模块,用于将调用结果发送至客户端。
第六方面,本申请实施例提供了一种应用于注册中心的服务列表的生成装置,该装置包括:生成模块,用于响应于接收到服务端发送的服务的相关信息,以服务的相关信息作为服务关键字生成服务的临时节点;建立模块,用于以服务端的地址作为服务端关键字,在服务的临时节点下建立服务端的临时节点;确定模块,用于将同一服务关键字对应的至少一个服务端的临时节点确定为一个服务列表。
第七方面,本申请实施例提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如第一方面、第二方面、第三方面中任一实现方式描述的方法。
第八方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面、第二方面、第三方面中任一实现方式描述的方法。
本申请实施例提供的远程过程调用方法和装置,通过预先在注册中心设在服务列表,当客户端发起服务调用时,客户端从服务列表中获取可用服务,生成调用可用服务的请求并将请求发送至可以服务对应的服务端,服务端运行请求的服务对应的实例,得到调用结果并将调用结果发送至客户端,从而实现了通过将所有的服务都在注册中心统一注册,管理和配置,灵活高效,减少了管理成本,加大了开发效率和部署效率。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请可以应用于其中的示例性***架构图;
图2是根据本申请的应用于客户端的远程过程调用方法的一个实施例的流程图;
图3是根据本申请的应用于服务端的远程过程调用方法的一个实施例的流程图;
图4是根据本申请的应用于注册中心的服务列表的生成方法的一个实施例的流程图;
图5是根据本申请的应用于客户端的远程过程调用装置的一个实施例的结构示意图;
图6是根据本申请的应用于服务端的远程过程调用装置的一个实施例的结构示意图;
图7是根据本申请的应用于注册中心的服务列表的生成装置的一个实施例的结构示意图;
图8是适于用来实现本申请实施例的电子设备的计算机***的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请实施例的远程过程调用方法的示例性***架构100。
如图1所示,***架构100可以包括客户端101,网络102、服务端103和注册中心104。网络102用以在客户端101、服务端103和注册中心104之间提供通信链路的介质。网络102可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用客户端101通过网络102与服务端103和和注册中心104交互,以接收或发送消息等。客户端101上可以安装有各种通讯客户端应用,例如搜索类应用、网页浏览器应用、购物类应用、即时通信工具等。
客户端101可以是各种电子设备,包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。
服务端103可以是提供各种服务的服务端,例如对客户端101请求的服务执行相应的实例的远程服务执行服务端。远程服务执行服务端可以对客户端101请求的服务执行相应的实例,得到调用结果,并将调用结果反馈给客户端。
注册中心可以是一个服务集群,该服务集群可以维护服务端向其注册的服务与服务地址的列表。
需要说明的是,客户端101和服务端103可以分别执行相应的远程过程调用方法,相应地,客户端101和服务端103中可以分别设置相应的远程过程调用装置。此外,本申请实施例提供的服务列表的生成方法一般由注册中心执行,相应地,服务列表的生成装置一般设置于注册中心中。
应该理解,图1中的客户端、网络、服务端和注册中心的数目仅仅是示意性的。根据实现需要,可以具有任意数目的客户端、网络、服务端和注册中心。
继续参考图2,其示出了根据本申请的应用于客户端的远程过程调用方法的一个实施例的流程200。该方法包括以下步骤:
步骤201,响应于目标应用启动,为目标远程服务创建代理。
在本实施例中,远程过程调用方法的执行主体(例如图1所示的客户端)可以响应于目标应用启动,为目标远程服务创建代理。其中,目标应用可以是安装在上述客户端上的、待进行远程过程调用的应用。目标远程服务为经过预设配置方式配置的服务。例如,目标远程服务可以为目标应用提供的一种被标注的能被识别为是业务端提供的远程服务接口,如配置指定的接口或被特定注解标注的属性或是特定目录下的类。例如存在一个注解@RpcClient,被该注解标注的接口对应的方法可以为目标远程服务。客户端在目标应用启动时为业务端提供的接口创建代理类,代理类封装了服务发现连接,对用户而言,只需调用接口无需去实现接口。
步骤202,响应于目标应用发起服务调用,通过代理从注册中心获取与被调用服务对应的服务列表。
在本实施例中,上述客户端可以响应于目标应用发起服务调用,通过代理从注册中心(如图1所示的注册中心104)获取与被调用服务对应的服务列表。其中,服务列表为包括被调用服务所在的服务端(如图1所示的服务端103)的地址(例如IP地址)组成的列表。具体地,当目标应用发起服务调用时,客户端代理向注册中心(例如zookeeper)通过被调用的方法的类全限定名、方法名和参数类型获取对应的服务列表。通常,在注册中心中,包括以被调用的方法的类全限定名、方法名和参数类型作为关键字的目录,该目录下包括至少一个用于运行被调用的方法的服务端地址列表,该地址列表即服务列表。
在本实施例中,服务即能够被调用的应用程序,该应用程序实现了若干的方法,可以被称做实现该方法的服务,一个方法可以被实现该方法的服务执行,某一应用程序只有实现了某方法才会向注册中心注册自己为该方法的实现者,注册中心在相应的节点下维护应用服务对应的服务端的地址,地址表示可以向该地址对应的服务端上的应用程序调用该方法。
步骤203,从服务列表中获取可用服务。
在本实施例中,上述客户端可以从服务列表中获取可用服务。通常服务列表中包括的服务均为可用服务,上述客户端需要从服务列表中通过各种方式选择一个可用服务。
在本实施例的一些可选的实现方式中,从步骤203可以如下执行:
响应于确定被调用服务为首次调用,从服务列表中随机获取可用服务。
响应于确定被调用服务不是首次调用,从服务列表中获取上一次使用的服务作为可用服务。
通常,上述客户端每次从注册中心获取到可用服务后,可以记录可用服务的相关信息,根据相关信息,可以使每次调用的服务均为同一服务端提供的服务。本实现方式实现了针对某个被调用服务,每次调用到同一服务端,由同一服务端执行服务方法可以提高服务远程调用的效率。
在本实施例的一些可选的实现方式中,在步骤203之前,上述客户端还可以对服务列表包括的服务对应的地址进行运算,得到运算结果。其中,运算方法可以为各种预先设置的方法,例如使用加密算法(例如SHA1算法、MD5算法等)对地址进行加密计算,得到运算结果。
基于此,在可选的实现方式中,上述客户端可以按照如下步骤从服务列表中获取上一次使用的服务作为可用服务:
确定首次调用的可用服务对应的运算结果作为目标运算结果,并从服务列表中获取与目标运算结果对应的服务作为可用服务。
本实现方式同对地址进行运算,根据运算结果可以保证每次调用服务时调用到同一服务端,从而提高了服务远程调用的效率。
在本实施例的一些可选的实现方式中,上述对服务列表包括的服务对应的地址进行运算,得到运算结果,包括:
首先,对于服务列表包括的每个服务,对该服务对应的地址按照预设转换方式进行转换,得到转换结果。作为示例,可以将地址进行hash(哈希)运算,得到hash值作为转换结果。
然后,将所得到的转换结果与服务列表包括的服务的数量进行取模运算,得到取模结果。
作为示例,假设服务列表包括的服务的数量为3,可以将上述hash值对3取模(即取余),取模结果可以为0、1或2。
最后,基于所得到的转换结果和取模结果,生成该服务的运算结果。
作为示例,可以将上述转换结果或取模结果作为该服务的运算结果,或将转换结果和取模结果结合作为该服务的运算结果。
步骤204,生成调用可用服务的请求,并将请求发送至可用服务对应的服务端。
在本实施例中,上述客户端可以生成调用可用服务的请求(即RpcRequest),并将请求发送至可用服务对应的服务端。通常,上述客户端可以将请求用通过序列化(Protostuff)后调用(例如通过使用Netty调用)远程服务。服务端在接收到请求后,通过反序列化获得原始请求,上述请求可以包括上述可用服务的相关内容,服务端可以根据相关内容运行相应的服务方法。
在本实施例的一些可选的实现方式中,上述客户端可以按照如下步骤生成调用可用服务的请求:
将可用服务的相关信息封装为调用可用服务的请求。其中,相关信息包括但不限于以下至少一种:调用参数,调用类,调用方法。通常,服务端可以预先缓存调用类,根据调用类建立实例,通过调用方法和调用参数调用实例方法获取返回结果。
本实现方式通过将可用服务的相关信息封装为请求,可以使服务端准确地的调用服务,提高远程调用的准确性。
步骤205,响应于接收到服务端返回的调用结果,将调用结果返回给目标应用。
在本实施例中,上述客户端可以响应于接收到服务端返回的调用结果,将调用结果返回给目标应用。目标应用可以使用返回结果进行进一步的操作。
在本实施例的一些可选的实现方式中,被调用服务为TCP服务。相应的,在客户端、访问端和注册中心传递的消息遵循TCP协议。本实现方式由于采用了TCP协议,可以免去http协议产生的非必要数据,提高传输效率。
本申请的上述实施例提供的方法,当客户端发起服务调用时,客户端从注册中心的服务列表中获取可用服务,生成调用可用服务的请求并将请求发送至可以服务对应的服务端,服务端运行请求的服务对应的实例,得到调用结果并将调用结果发送至客户端,从而实现了通过将所有的服务都在注册中心统一注册,管理和配置,灵活高效,减少了管理成本,加大了开发效率和部署效率。
进一步参考图3,其示出了根据本申请的一种应用于服务端的远程过程调用方法的一个实施例的流程300。该方法包括以下步骤:
步骤301,响应于目标应用启动,扫描目标应用中的经过预设配置方式配置的服务。
在本实施例中,用于执行远程过程调用方法的执行主体(例如图1所示的服务端103)可以响应于目标应用启动,扫描目标应用中的经过预设配置方式配置的服务。其中,经过预设配置方式配置的服务可以包括用于实现服务的接口、类等。作为示例,存在一个注解@RpcServer,被该注解标注的类会在启动时被扫描。
步骤302,创建服务的实例并缓存实例。
在本实施例中,服务端可以创建服务的实例并缓存实例。例如,服务端可以根据服务包括的类在缓存中创建示例。
步骤303,在注册中心注册服务。
在本实施例中,服务端可以在注册中心(如图1所示的注册中心104)注册服务。具体地,可以在注册中心创建一个上述服务对应的临时节点,在该临时节点下创建包括服务端的地址的子临时节点,从而完成服务的注册。
步骤304,响应于接收到客户端发送的用于调用可用服务的请求,从实例缓存中获取请求对应的实例。
在本实施例中,服务端可以响应于接收到客户端发送的用于调用可用服务的请求,从实例缓存中获取请求对应的实例。其中,上述请求为由客户端根据如图2所示的方法生成并发送的,关于请求的内容可以参考上述图2对应实施例,这里不再赘述。
上述实例缓存用于存储被调用服务的实例,作为示例,服务端可以从请求中解析调用类,根据调用类建立实例并将实例缓存在实例缓存中。
步骤305,基于请求包括的内容,运行实例,得到调用结果。
在本实施例中,服务端可以基于请求包括的内容,运行实例,得到调用结果。作为示例,服务端可以从请求中解析调用方法和调用参数,通过调用方法和调用参数调用实例方法获取调用结果。
在本实施例的一些可选的实现方式中,步骤305可以如下执行:
首先,从请求中解析可用服务的相关信息,其中,相关信息包括但不限于以下至少一种:调用参数,调用类,调用方法。由于上述请求是客户端预先将相关信息封装的,因此,服务端可以从请求中解析相关信息。
然后,基于相关信息,运行实例,得到调用结果。
作为示例,服务端可以从请求中解析调用类,根据调用类建立实例并将实例缓存在实例缓存中,再从请求中解析调用方法和调用参数,通过调用方法和调用参数调用实例方法获取调用结果。
本实现方式通过从封装的请求中解析可用服务的相关信息,可以使服务端准确地的调用服务,提高远程调用服务的准确性。
步骤306,将调用结果发送至客户端。
在本实施例中,服务端可以将调用结果发送至客户端。通常,服务端将调用结果封装为RpcResponse,经过序列化(例如Protostuff)后发送至客户端。
上述图3对应实施例提供的方法,通过在注册中心设在服务列表,使客户端从注册中心获得可用服务,当接收到客户端根据图2对应实施例的方法生成的请求后,根据该请求运行服务对应的实例,得到调用结果并将调用结果反馈至客户端,从而实现了通过将所有的服务都在注册中心统一注册,管理和配置,灵活高效,减少了管理成本,加大了开发效率和部署效率。
进一步参考图4,其示出了根据本申请的应用于注册中心的服务列表的生成方法的一个实施例的流程400。该方法包括以下步骤:
步骤401,响应于接收到服务端发送的服务的相关信息,以服务的相关信息作为服务关键字生成服务的临时节点。
在本实施例中,用于执行远程过程调用方法的执行主体(例如图1所示的注册中心104)可以响应于接收到服务端发送的服务的相关信息,以服务的相关信息作为服务关键字生成服务的临时节点。
其中,上述服务的相关信息用于表征服务的主要内容。通常,注册中心可以以相关信息为关键字建立表征服务的目录作为临时节点。例如,服务端A实现了某业务接口UserService中的userInfo方法,则其会向注册中心发送注册请求,该请求中可以包括接口名和方法名,因此,注册中心可以创建一个UserService节点,该节点下会有userInfo节点。
在本实施例的一些可选的实现方式中,服务的相关信息包括但不限于以下至少一种:类全限定名,方法名,参数类型。本实现方式提供的相关信息,可以全面、准确地表征服务对应的各个方法,有助于更精确地调用提供的服务。
步骤402,以服务端的地址作为服务端关键字,在服务的临时节点下建立服务端的临时节点。
在本实施例中,注册中心可以以服务端的地址作为服务端关键字,在服务的临时节点下建立服务端的临时节点。
继续上述步骤401中的示例,在userinfo节点可以建立一个包括服务器A的ip地址的节点,如果服务器B也向注册中心注册了UserService中的userInfo方法,则在userInfo节点下又添加一个服务器B的ip地址的节点。
步骤403,将同一服务关键字对应的至少一个服务端的临时节点确定为一个服务列表。
在本实施例中,注册中心可以将同一服务关键字对应的至少一个服务端的临时节点确定为一个服务列表。由此,即完成了一个服务的注册。继续上述示例,当需要调用userInfo方法时,从UserService节点开始向子节点下寻找到userInfo节点,再寻找userInfo节点的子节点,此时会发现存在两个节点服务器A的ip和服务器B的ip,此时即找到了该服务的服务列表。
在本实施例的一些可选的实现方式中,注册中心还可以执行如下步骤:
首先,通过心跳机制,确定服务列表中是否存在失效的临时节点。其中,失效的临时节点可以是不再提供服务的服务端对应的节点。
然后,响应于存在失效的临时节点,将失效的临时节点从服务列表中删除。
本实现方式通过心跳机制,可以保证服务列表中的服务均为有效的服务,从而可以避免调用无效的服务端,提高远程调用服务的效率。
上述图4对应实施例提供的方法,通过以接收的服务的相关信息作为服务关键字生成服务的临时节点,以服务端的地址作为服务端关键字,在服务的临时节点下建立服务端的临时节点,从而完成服务列表的创建,实现了将所有服务都在注册中心统一注册,管理和配置,灵活高效,减少了管理成本,加大了开发效率和部署效率。
进一步参考图5,作为对上述各图所示方法的实现,本申请提供了一种应用于客户端的远程过程调用装置一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于如图1所示的客户端设备中。
如图5所示,本实施例的远程过程调用装置500包括:代理模块501,用于响应于目标应用启动,为目标远程服务创建代理,其中,目标远程服务为经过预设配置方式配置的服务;调用模块502,用于响应于目标应用发起服务调用,通过代理从注册中心获取与被调用服务对应的服务列表,其中,服务列表为包括被调用服务所在的服务端的地址组成的列表;第一获取模块503,用于从服务列表中获取可用服务;第一发送模块504,用于生成调用可用服务的请求,并将请求发送至可用服务对应的服务端;第二发送模块505,用于响应于接收到服务端返回的调用结果,将调用结果返回给目标应用。
在本实施例中,代理模块501可以响应于目标应用启动,为目标远程服务创建代理。其中,目标应用可以是安装在上述客户端上的、待进行远程过程调用的应用。目标远程服务为经过预设配置方式配置的服务。例如,目标远程服务可以为目标应用提供的一种被标注的能被识别为是业务端提供的远程服务接口,如配置指定的接口或被特定注解标注的属性或是特定目录下的类。例如存在一个注解@RpcClient,被该注解标注的接口对应的方法可以为目标远程服务。代理模块501在目标应用启动时为业务端提供的接口创建代理类,代理类封装了服务发现连接,对用户而言,只需调用接口无需去实现接口。
在本实施例中,调用模块502可以响应于目标应用发起服务调用,通过代理从注册中心(如图1所示的注册中心104)获取与被调用服务对应的服务列表。其中,服务列表为包括被调用服务所在的服务端(如图1所示的服务端103)的地址(例如IP地址)组成的列表。具体地,当目标应用发起服务调用时,客户端代理向注册中心(例如zookeeper)通过被调用的方法的类全限定名、方法名和参数类型获取对应的服务列表。通常,在注册中心中,包括以被调用的方法的类全限定名、方法名和参数类型作为关键字的目录,该目录下包括至少一个用于运行被调用的方法的服务端地址列表,该地址列表即服务列表。
在本实施例中,服务即能够被调用的应用程序,该应用程序实现了若干的方法,可以被称做实现该方法的服务,一个方法可以被实现该方法的服务执行,某一应用程序只有实现了某方法才会向注册中心注册自己为该方法的实现者,注册中心在相应的节点下维护应用服务对应的服务端的地址,地址表示可以向该地址对应的服务端上的应用程序调用该方法。
在本实施例中,第一获取模块503可以从服务列表中获取可用服务。通常服务列表中包括的服务均为可用服务,上述第一获取模块503需要从服务列表中通过各种方式选择一个可用服务。
在本实施例中,第一发送模块504可以生成调用可用服务的请求(即RpcRequest),并将请求发送至可用服务对应的服务端。通常,上述第一发送模块504可以将请求用通过序列化(Protostuff)后调用(例如通过使用Netty调用)远程服务。服务端在接收到请求后,通过反序列化获得原始请求,上述请求可以包括上述可用服务的相关内容,服务端可以根据相关内容运行相应的服务方法。
在本实施例中,第二发送模块505可以响应于接收到服务端返回的调用结果,将调用结果返回给目标应用。目标应用可以使用返回结果进行进一步的操作。
在本实施例的一些可选的实现方式中,第一获取模块503可以包括:第一获取单元(图中未示出),用于响应于确定被调用服务为首次调用,从服务列表中随机获取可用服务;第二获取单元(图中未示出),用于响应于确定被调用服务不是首次调用,从服务列表中获取上一次使用的服务作为可用服务。
在本实施例的一些可选的实现方式中,该装置500还可以包括:运算模块(图中未示出),用于对服务列表包括的服务对应的地址进行运算,得到运算结果;第二获取单元进一步用于:确定首次调用的可用服务对应的运算结果作为目标运算结果,并从服务列表中获取与目标运算结果对应的服务作为可用服务。
在本实施例的一些可选的实现方式中,运算模块可以包括:转换单元(图中未示出),用于对于服务列表包括的每个服务,对该服务对应的地址按照预设转换方式进行转换,得到转换结果;取模单元(图中未示出),用于将所得到的转换结果与服务列表包括的服务的数量进行取模运算,得到取模结果;生成单元(图中未示出),用于基于所得到的转换结果和取模结果,生成该服务的运算结果。
在本实施例的一些可选的实现方式中,第一发送模块504可以进一步用于:将可用服务的相关信息封装为调用可用服务的请求,其中,相关信息包括以下至少一种:调用参数,调用类,调用方法。
在本实施例的一些可选的实现方式中,被调用服务为TCP服务。
本申请的上述实施例提供的装置,当客户端发起服务调用时,客户端从注册中心的服务列表中获取可用服务,生成调用可用服务的请求并将请求发送至可以服务对应的服务端,服务端运行请求的服务对应的实例,得到调用结果并将调用结果发送至客户端,从而实现了通过将所有的服务都在注册中心统一注册,管理和配置,灵活高效,减少了管理成本,加大了开发效率和部署效率。
进一步参考图6,作为对上述各图所示方法的实现,本申请提供了一种应用于服务端的远程过程调用装置的一个实施例,该装置实施例与图3所示的方法实施例相对应,该装置具体可以应用于如图1所示的服务端中。
如图6所示,本实施例的远程过程调用装置600包括:扫描模块601,用于响应于目标应用启动,扫描目标应用中的经过预设配置方式配置的服务;创建模块602,用于创建服务的实例并缓存实例;注册模块603,用于在注册中心注册服务;第二获取模块604,用于响应于接收到客户端发送的用于调用可用服务的请求,从实例缓存中获取请求对应的实例,其中,请求是客户端根据上述图2对应实施例描述的方法生成的;运行模块605,用于基于请求包括的内容,运行实例,得到调用结果;第三发送模块606,用于将调用结果发送至客户端。
在本实施例中,扫描模块601可以响应于目标应用启动,扫描目标应用中的经过预设配置方式配置的服务。其中,经过预设配置方式配置的服务可以包括用于实现服务的接口、类等。作为示例,存在一个注解@RpcServer,被该注解标注的类会在启动时被扫描。
在本实施例中,创建模块602可以创建服务的实例并缓存实例。例如,创建模块602可以根据服务包括的类在缓存中创建示例。
在本实施例中,注册模块603在注册中心(如图1所示的注册中心104)注册服务。具体地,可以在注册中心创建一个上述服务对应的临时节点,在该临时节点下创建包括服务端的地址的子临时节点,从而完成服务的注册。
在本实施例中,第二获取模块604可以响应于接收到客户端发送的用于调用可用服务的请求,从实例缓存中获取请求对应的实例。其中,上述请求为由客户端根据如图2所示的方法生成并发送的,关于请求的内容可以参考上述图2对应实施例,这里不再赘述。
上述实例缓存用于存储被调用服务的实例,作为示例,服务端可以从请求中解析调用类,根据调用类建立实例并将实例缓存在实例缓存中。
在本实施例中,运行模块605可以基于请求包括的内容,运行实例,得到调用结果。作为示例,服务端可以从请求中解析调用方法和调用参数,通过调用方法和调用参数调用实例方法获取调用结果。
在本实施例中,第三发送模块606可以将调用结果发送至客户端。通常,第三发送模块606将调用结果封装为RpcResponse,经过序列化(例如Protostuff)后发送至客户端。
在本实施例的一些可选的实现方式中,运行模块605可以包括:解析单元(图中未示出),用于从请求中解析可用服务的相关信息,其中,相关信息包括以下至少一种:调用参数,调用类,调用方法;运行单元,用于基于相关信息,运行实例,得到调用结果。
本申请的上述实施例提供的装置,通过在注册中心设在服务列表,使客户端从注册中心获得可用服务,当接收到客户端根据图2对应实施例的方法生成的请求后,根据该请求运行服务对应的实例,得到调用结果并将调用结果反馈至客户端,从而实现了通过将所有的服务都在注册中心统一注册,管理和配置,灵活高效,减少了管理成本,加大了开发效率和部署效率。
进一步参考图7,作为对上述各图所示方法的实现,本申请提供了一种应用于注册中心的服务列表的生成装置的一个实施例,该装置实施例与图4所示的方法实施例相对应,该装置具体可以应用于如图1所示的注册中心中。
如图7所示,本实施例的远程过程调用装置700包括:生成模块701,用于响应于接收到服务端发送的服务的相关信息,以服务的相关信息作为服务关键字生成服务的临时节点;建立模块702,用于以服务端的地址作为服务端关键字,在服务的临时节点下建立服务端的临时节点;确定模块703,用于将同一服务关键字对应的至少一个服务端的临时节点确定为一个服务列表。
在本实施例中,生成模块701可以响应于接收到服务端发送的服务的相关信息,以服务的相关信息作为服务关键字生成服务的临时节点。
其中,上述服务的相关信息用于表征服务的主要内容。通常,注册中心可以以相关信息为关键字建立表征服务的目录作为临时节点。例如,服务端A实现了某业务接口UserService中的userInfo方法,则其会向注册中心发送注册请求,该请求中可以包括接口名和方法名,因此,注册中心可以创建一个UserService节点,该节点下会有userInfo节点。
在本实施例中,建立模块702可以以服务端的地址作为服务端关键字,在服务的临时节点下建立服务端的临时节点。
继续上述生成模块701中的示例,在userinfo节点可以建立一个包括服务器A的ip地址的节点,如果服务器B也向注册中心注册了UserService中的userInfo方法,则在userInfo节点下又添加一个服务器B的ip地址的节点。
在本实施例中,确定模块703可以将同一服务关键字对应的至少一个服务端的临时节点确定为一个服务列表。继续上述示例,当需要调用userInfo方法时,从UserService节点开始向子节点下寻找到userInfo节点,再寻找userInfo节点的子节点,此时会发现存在两个节点服务器A的ip和服务器B的ip,此时即找到了该服务的服务列表。
在本实施例的一些可选的实现方式中,服务的相关信息包括以下至少一种:类全限定名,方法名,参数类型。
在本实施例的一些可选的实现方式中,装置还包括:第二确定模块,用于通过心跳机制,确定服务列表中是否存在失效的临时节点;删除模块,用于响应于存在失效的临时节点,将失效的临时节点从服务列表中删除。
本申请的上述实施例提供的装置,通过以接收的服务的相关信息作为服务关键字生成服务的临时节点,以服务端的地址作为服务端关键字,在服务的临时节点下建立服务端的临时节点,从而完成服务列表的创建,实现了将所有服务都在注册中心统一注册,管理和配置,灵活高效,减少了管理成本,加大了开发效率和部署效率。
下面参考图8,其示出了适于用来实现本申请实施例的电子设备的计算机***800的结构示意图。图8示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图8所示,计算机***800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有***800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本申请的方法中限定的上述功能。
需要说明的是,本申请所述的计算机可读存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读存储介质,该计算机可读存储介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务端上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括代理模块、调用模块、第一获取模块、第一发送模块和第二发送模块。其中,这些模块的名称在某种情况下并不构成对该单元本身的限定,例如,代理模块还可以被描述为“用于响应于目标应用启动,为目标远程服务创建代理的模块”。
作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:响应于目标应用启动,为目标远程服务创建代理,其中,目标远程服务为经过预设配置方式配置的服务;响应于目标应用发起服务调用,通过代理从注册中心获取与被调用服务对应的服务列表,其中,服务列表为包括被调用服务所在的服务端的地址组成的列表;从服务列表中获取可用服务;生成调用可用服务的请求,并将请求发送至可用服务对应的服务端;响应于接收到服务端返回的调用结果,将调用结果返回给目标应用。
此外,当上述一个或者多个程序被该电子设备执行时,还可以使得该电子设备:响应于目标应用启动,扫描目标应用中的经过预设配置方式配置的服务;创建服务的实例并缓存实例;在注册中心注册服务;响应于接收到客户端发送的用于调用可用服务的请求,从实例缓存中获取请求对应的实例,其中,请求是客户端根据上述第一方面中任一实施例描述的方法生成的;基于请求包括的内容,运行实例,得到调用结果;将调用结果发送至客户端。
此外,当上述一个或者多个程序被该电子设备执行时,还可以使得该电子设备:响应于接收到服务端发送的服务的相关信息,以服务的相关信息作为服务关键字生成服务的临时节点;以服务端的地址作为服务端关键字,在服务的临时节点下建立服务端的临时节点;将同一服务关键字对应的至少一个服务端的临时节点确定为一个服务列表。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (9)

1.一种应用于客户端的远程过程调用方法,其特征在于,所述方法包括:
响应于目标应用启动,为目标远程服务创建代理,其中,所述目标远程服务为经过预设配置方式配置的服务;
响应于所述目标应用发起服务调用,通过所述代理从注册中心获取与被调用服务对应的服务列表,其中,所述服务列表为包括所述被调用服务所在的服务端的地址组成的列表;对于所述服务列表包括的每个服务,对该服务对应的地址按照预设转换方式进行转换,得到转换结果;将所得到的转换结果与所述服务列表包括的服务的数量进行取模运算,得到取模结果;基于所得到的转换结果和取模结果,生成该服务的运算结果;
从所述服务列表中获取可用服务;其中,所述从所述服务列表中获取可用服务,包括:响应于确定所述被调用服务为首次调用,从所述服务列表中随机获取可用服务;响应于确定所述被调用服务不是首次调用,确定首次调用的可用服务对应的运算结果作为目标运算结果,并从所述服务列表中获取与所述目标运算结果对应的服务作为可用服务;
生成调用所述可用服务的请求,并将所述请求发送至所述可用服务对应的服务端;
响应于接收到所述服务端返回的调用结果,将所述调用结果返回给所述目标应用。
2.根据权利要求1所述的方法,其特征在于,所述生成调用所述可用服务的请求,包括:
将所述可用服务的相关信息封装为调用所述可用服务的请求,其中,所述相关信息包括以下至少一种:调用参数,调用类,调用方法。
3.根据权利要求1所述的方法,其特征在于,所述服务列表的生成包括:
响应于接收到服务端发送的服务的相关信息,以所述服务的相关信息作为服务关键字生成所述服务的临时节点;
以所述服务端的地址作为服务端关键字,在所述服务的临时节点下建立所述服务端的临时节点;
将同一服务关键字对应的至少一个服务端的临时节点确定为一个服务列表。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
通过心跳机制,确定所述服务列表中是否存在失效的临时节点;
响应于存在失效的临时节点,将所述失效的临时节点从所述服务列表中删除。
5.一种应用于服务端的远程过程调用方法,其特征在于,所述方法包括:
响应于目标应用启动,扫描所述目标应用中的经过预设配置方式配置的服务;
创建所述服务的实例并缓存所述实例;
在注册中心注册所述服务;
响应于接收到客户端发送的用于调用可用服务的请求,从实例缓存中获取所述请求对应的实例,其中,所述请求是所述客户端根据权利要求1所述调用所述可用服务的请求生成的;
基于所述请求包括的内容,运行所述实例,得到调用结果;
将所述调用结果发送至所述客户端。
6.根据权利要求5所述的方法,其特征在于,所述基于所述请求包括的内容,运行所述实例,得到调用结果,包括:
从所述请求中解析所述可用服务的相关信息,其中,所述相关信息包括以下至少一种:调用参数,调用类,调用方法;
基于所述相关信息,运行所述实例,得到调用结果。
7.一种应用于客户端的远程过程调用装置,其特征在于,所述装置包括:
代理模块,用于响应于目标应用启动,为目标远程服务创建代理,其中,所述目标远程服务为经过预设配置方式配置的服务;
调用模块,用于响应于所述目标应用发起服务调用,通过所述代理从注册中心获取与被调用服务对应的服务列表,其中,所述服务列表为包括所述被调用服务所在的服务端的地址组成的列表;对于所述服务列表包括的每个服务,对该服务对应的地址按照预设转换方式进行转换,得到转换结果;将所得到的转换结果与所述服务列表包括的服务的数量进行取模运算,得到取模结果;基于所得到的转换结果和取模结果,生成该服务的运算结果;
第一获取模块,用于从所述服务列表中获取可用服务;其中,所述从所述服务列表中获取可用服务,包括:响应于确定所述被调用服务为首次调用,从所述服务列表中随机获取可用服务;响应于确定所述被调用服务不是首次调用,确定首次调用的可用服务对应的运算结果作为目标运算结果,并从所述服务列表中获取与所述目标运算结果对应的服务作为可用服务;
第一发送模块,用于生成调用所述可用服务的请求,并将所述请求发送至所述可用服务对应的服务端;
第二发送模块,用于响应于接收到所述服务端返回的调用结果,将所述调用结果返回给所述目标应用。
8.根据权利要求7所述的装置,其特征在于,所述调用模块包括:
生成模块,用于响应于接收到服务端发送的服务的相关信息,以所述服务的相关信息作为服务关键字生成所述服务的临时节点;
建立模块,用于以所述服务端的地址作为服务端关键字,在所述服务的临时节点下建立所述服务端的临时节点;
确定模块,用于将同一服务关键字对应的至少一个服务端的临时节点确定为一个服务列表。
9.一种应用于服务端的远程过程调用装置,其特征在于,所述装置包括:
扫描模块,用于响应于目标应用启动,扫描所述目标应用中的经过预设配置方式配置的服务;
创建模块,用于创建所述服务的实例并缓存所述实例;
注册模块,用于在注册中心注册所述服务;
第二获取模块,用于响应于接收到客户端发送的用于调用可用服务的请求,从实例缓存中获取所述请求对应的实例,其中,所述请求是所述客户端根据权利要求1所述调用所述可用服务的请求生成的;
运行模块,用于基于所述请求包括的内容,运行所述实例,得到调用结果;
第三发送模块,用于将所述调用结果发送至所述客户端。
CN202010898170.1A 2020-08-31 2020-08-31 远程过程调用方法和装置 Active CN112114979B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010898170.1A CN112114979B (zh) 2020-08-31 2020-08-31 远程过程调用方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010898170.1A CN112114979B (zh) 2020-08-31 2020-08-31 远程过程调用方法和装置

Publications (2)

Publication Number Publication Date
CN112114979A CN112114979A (zh) 2020-12-22
CN112114979B true CN112114979B (zh) 2024-03-19

Family

ID=73805005

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010898170.1A Active CN112114979B (zh) 2020-08-31 2020-08-31 远程过程调用方法和装置

Country Status (1)

Country Link
CN (1) CN112114979B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112671913B (zh) * 2020-12-25 2022-11-08 珠海金山数字网络科技有限公司 服务注册方法及装置
CN112804303B (zh) * 2020-12-31 2023-11-03 网银在线(北京)科技有限公司 服务提供方法、装置、***、中转平台及存储介质
CN112965763B (zh) * 2021-03-30 2023-08-22 建信金融科技有限责任公司 一种业务处理***、方法、装置和存储介质
CN113259431B (zh) * 2021-05-11 2022-11-11 中国工商银行股份有限公司 服务调用方法、服务调用装置、电子设备以及存储介质
CN113485717A (zh) * 2021-05-17 2021-10-08 江苏航天七零六信息科技有限公司 一种高效的跨语言远程调用(rfc)方法
CN113360377B (zh) * 2021-06-01 2023-11-07 北京京东振世信息技术有限公司 一种测试方法和装置
CN113377465A (zh) * 2021-06-07 2021-09-10 上海商汤智能科技有限公司 基于服务的sdk调用方法及装置、电子设备和存储介质
CN113419876A (zh) * 2021-06-30 2021-09-21 广州华多网络科技有限公司 远程接口代理调用方法、装置以及计算机设备、存储介质
CN114172946B (zh) * 2021-12-06 2024-06-18 京东科技信息技术有限公司 请求结果发送方法、装置、电子设备和计算机可读介质
CN114401303A (zh) * 2021-12-20 2022-04-26 苏州众言网络科技股份有限公司 应用于微服务的服务注册与发现方法、***和装置
CN114116265A (zh) * 2022-01-27 2022-03-01 北京麦颂文化传播有限公司 基于Android***的多个APP间通讯方法及装置
CN114547052B (zh) * 2022-02-14 2024-03-22 山东浪潮超高清视频产业有限公司 一种分布式***缓存更新的方法
CN115640080A (zh) * 2022-10-31 2023-01-24 成都赛力斯科技有限公司 服务调用方法、***、设备以及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5832219A (en) * 1994-02-08 1998-11-03 Object Technology Licensing Corp. Distributed object networking service
CN102567333A (zh) * 2010-12-15 2012-07-11 上海杉达学院 分布式异构数据整合***
CN106411933A (zh) * 2016-11-15 2017-02-15 深圳市彬讯科技有限公司 一种可进行服务治理与语言调用的轻量级rpc框架
CN106506509A (zh) * 2016-11-15 2017-03-15 深圳市彬讯科技有限公司 可进行服务治理与语言调用的轻量级rpc框架实现方法
CN107733922A (zh) * 2017-11-20 2018-02-23 百度在线网络技术(北京)有限公司 用于调用服务的方法和装置
WO2019104973A1 (zh) * 2017-11-30 2019-06-06 平安科技(深圳)有限公司 跨语言调用方法、服务器及存储介质
CN110944018A (zh) * 2019-12-27 2020-03-31 浪潮通用软件有限公司 一种基于注解和动态代理的rpc通信方法及设备、介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7571208B2 (en) * 2005-11-30 2009-08-04 Microsoft Corporation Creating proxies from service description metadata at runtime

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5832219A (en) * 1994-02-08 1998-11-03 Object Technology Licensing Corp. Distributed object networking service
CN102567333A (zh) * 2010-12-15 2012-07-11 上海杉达学院 分布式异构数据整合***
CN106411933A (zh) * 2016-11-15 2017-02-15 深圳市彬讯科技有限公司 一种可进行服务治理与语言调用的轻量级rpc框架
CN106506509A (zh) * 2016-11-15 2017-03-15 深圳市彬讯科技有限公司 可进行服务治理与语言调用的轻量级rpc框架实现方法
CN107733922A (zh) * 2017-11-20 2018-02-23 百度在线网络技术(北京)有限公司 用于调用服务的方法和装置
WO2019104973A1 (zh) * 2017-11-30 2019-06-06 平安科技(深圳)有限公司 跨语言调用方法、服务器及存储介质
CN110944018A (zh) * 2019-12-27 2020-03-31 浪潮通用软件有限公司 一种基于注解和动态代理的rpc通信方法及设备、介质

Also Published As

Publication number Publication date
CN112114979A (zh) 2020-12-22

Similar Documents

Publication Publication Date Title
CN112114979B (zh) 远程过程调用方法和装置
WO2019104973A1 (zh) 跨语言调用方法、服务器及存储介质
CN111045833B (zh) 接口调用的方法和装置
CN111600909A (zh) 数据处理方法、装置、协议转换设备及存储介质
CN112311774B (zh) 一种数据处理方法、装置、电子设备及存储介质
JP5188284B2 (ja) サービス接続システム及びサービス接続方法
CN112507005B (zh) 一种处理报文的方法和装置
CN111930531B (zh) 数据处理、数据生产、数据消费方法、装置、设备及介质
CN111309375B (zh) 生成远程过程调用工具包的方法、装置、介质和电子设备
WO2021179156A1 (zh) 消息处理方法、装置、***以及服务器
CN110704200A (zh) 转换调用接口的方法和装置
CN113821352A (zh) 一种远程服务的调用方法和装置
CN113760536A (zh) 数据缓存方法、装置、电子设备和计算机可读介质
CN112835632B (zh) 一种端能力的调用方法、设备和计算机存储介质
CN114816795A (zh) 一种接口扩展方法、装置、远程调用服务端和***
CN114938395A (zh) 服务响应方法、装置、设备及存储介质
CN112748962B (zh) 应用加载方法、装置、电子设备和计算机可读介质
CN114489622A (zh) 静态资源管理方法、Node.js应用、电子设备和存储介质
CN113778499B (zh) 发布服务的方法、装置、设备和计算机可读介质
CN112394907A (zh) 基于容器的交付***构建方法、应用交付方法和交付***
CN113965628A (zh) 消息调度方法、服务器和存储介质
CN109005250B (zh) 用于访问服务端的方法和装置
CN111460020B (zh) 用于解析消息的方法、装置、电子设备和介质
CN113760693A (zh) 用于微服务***的本地调试的方法和装置
CN109660573B (zh) 数据传输方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB03 Change of inventor or designer information

Inventor after: Zheng Hanjun

Inventor after: Huang Jiarong

Inventor after: Chen Guimin

Inventor after: Huang Jian

Inventor after: Li Jie

Inventor after: Zhou Jianyu

Inventor before: Huang Jiarong

Inventor before: Zheng Hanjun

Inventor before: Chen Guimin

Inventor before: Huang Jian

Inventor before: Li Jie

Inventor before: Zhou Jianyu

CB03 Change of inventor or designer information
GR01 Patent grant
GR01 Patent grant