CN111580987A - 远程过程调用方法、装置、存储介质及终端设备 - Google Patents

远程过程调用方法、装置、存储介质及终端设备 Download PDF

Info

Publication number
CN111580987A
CN111580987A CN202010316388.1A CN202010316388A CN111580987A CN 111580987 A CN111580987 A CN 111580987A CN 202010316388 A CN202010316388 A CN 202010316388A CN 111580987 A CN111580987 A CN 111580987A
Authority
CN
China
Prior art keywords
target
interface
stub
communication channel
client
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.)
Pending
Application number
CN202010316388.1A
Other languages
English (en)
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.)
Shenzhen Ubtech Technology Co ltd
Original Assignee
Shenzhen Ubtech 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 Shenzhen Ubtech Technology Co ltd filed Critical Shenzhen Ubtech Technology Co ltd
Priority to CN202010316388.1A priority Critical patent/CN111580987A/zh
Publication of CN111580987A publication Critical patent/CN111580987A/zh
Pending legal-status Critical Current

Links

Images

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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • 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/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/541Client-server
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/549Remote execution

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

远程过程调用方法、装置、存储介质及终端设备
技术领域
本申请属于通信技术领域,尤其涉及一种远程过程调用方法、装置、计算机可读存储介质及终端设备。
背景技术
GRPC为***提供的一种远程过程调用(Remote Procedure Call,RPC)框架。在GRPC框架中,客户端的应用可以像调用本地对象一样直接调用远程服务端上的应用。在传统的远程过程调用中,客户端在每一次的调用过程中都需要先与远程服务端建立通信通道,然后通过当前所建立的通信通道来调用远程服务端上的应用,即传统的远程过程调用中,客户端与远程服务端之间的通信通道是在每一次调用过程中实时建立的。由于通信通道的建立比较耗时,传统通过实时建立通信通道来进行远程过程调用的方式使得远程过程调用的性能较差。
发明内容
本申请实施例提供了一种远程过程调用方法、装置、计算机可读存储介质及终端设备,可以解决现有的远程过程调用性能较差的问题。
第一方面,本申请实施例提供了一种远程过程调用方法,包括:
获取远程过程调用请求,所述远程过程调用请求中包括客户端请求调用的目标接口的接口信息;
根据所述接口信息确定所述目标接口对应的候选通信通道,所述候选通信通道为存储于所述客户端本地的通信通道,所述候选通信通道为所述客户端根据注册中心中所述目标接口的第一注册信息预先建立的通信通道;
利用预设的负载均衡策略从所述候选通信通道中选取目标通信通道,并使用所述目标通信通道调用所述目标接口。
在第一方面的一种可能的实现方式中,所述根据所述接口信息确定所述目标接口对应的候选通信通道,可以包括:
根据所述接口信息判断所述客户端本地中是否存储有目标存根,所述目标存根为所述客户端之前调用所述目标接口时所创建的存根;
若所述客户端本地中存储有所述目标存根,则使用所述目标存根调用所述目标接口;
若所述客户端本地中未存储有所述目标存根,则根据所述接口信息确定所述目标接口对应的候选通信通道。
可选的,所述使用所述目标存根调用所述目标接口,可以包括:
确定所述目标存根的存根状态;
若所述存根状态为第一预设状态,则根据所述接口信息确定所述目标接口对应的候选通信通道;
若所述存根状态为第二预设状态,则使用所述目标存根调用所述目标接口。
示例性的,所述确定所述目标存根的存根状态,可以包括:
检测所述目标存根对应的目标接口在所述注册中心中的注册状态,所述注册状态包括有效状态和无效状态;
当所述目标存根对应的目标接口在所述注册中心中的注册状态为有效状态时,则确定所述目标存根的存根状态为所述第二预设状态;
当所述目标存根对应的目标接口在所述注册中心中的注册状态为无效状态时,则确定所述目标存根的存根状态为所述第一预设状态。
在第一方面的一种可能的实现方式中,所述使用所述目标通信通道调用所述目标接口,可以包括:
建立所述目标通信通道对应的目标存根,并将所述目标通信通道对应的目标存根存储于所述客户端本地;
使用所述目标通信通道对应的目标存根调用所述目标接口。
可选地,所述远程过程调用方法,还可以包括:
获取所述注册中心中各候选接口的第二注册信息,所述候选接口包括所述目标接口;
根据各所述候选接口的第二注册信息调整所述客户端本地中各所述候选接口对应的候选通信通道。
第二方面,本申请实施例提供了一种远程过程调用装置,可以包括:
调用请求获取模块,用于获取远程过程调用请求,所述远程过程调用请求中包括客户端请求调用的目标接口的接口信息;
候选通道确定模块,用于根据所述接口信息确定所述目标接口对应的候选通信通道,所述候选通信通道为存储于所述客户端本地的通信通道,所述候选通信通道为所述客户端根据注册中心中所述目标接口的第一注册信息预先建立的通信通道;
远程过程调用模块,用于利用预设的负载均衡策略从所述候选通信通道中选取目标通信通道,并使用所述目标通信通道调用所述目标接口。
在第二方面的一种可能的实现方式中,所述候选通道确定模块,可以包括:
目标存根判断单元,用于根据所述接口信息判断所述客户端本地中是否存储有目标存根,所述目标存根为所述客户端之前调用所述目标接口时所创建的存根;
目标存根调用单元,用于若所述客户端本地中存储有所述目标存根,则使用所述目标存根调用所述目标接口;
候选通道确定单元,用于若所述客户端本地中未存储有所述目标存根,则根据所述接口信息确定所述目标接口对应的候选通信通道。
可选地,所述目标存根调用单元,可以包括:
存根状态确定分单元,用于确定所述目标存根的存根状态;
候选通道确定分单元,用于若所述存根状态为第一预设状态,则根据所述接口信息确定所述目标接口对应的候选通信通道;
目标存根调用分单元,用于若所述存根状态为第二预设状态,则使用所述目标存根调用所述目标接口。
示例性的,所述存根状态确定分单元,具体用于检测所述目标存根对应的目标接口在所述注册中心中的注册状态,所述注册状态包括有效状态和无效状态;当所述目标存根对应的目标接口在所述注册中心中的注册状态为有效状态时,则确定所述目标存根的存根状态为所述第二预设状态;当所述目标存根对应的目标接口在所述注册中心中的注册状态为无效状态时,则确定所述目标存根的存根状态为所述第一预设状态。
在第二方面的一种可能的实现方式中,所述远程过程调用模块,可以包括:
目标存根建立单元,用于建立所述目标通信通道对应的目标存根,并将所述目标通信通道对应的目标存根存储于所述客户端本地;
远程过程调用单元,用于使用所述目标通信通道对应的目标存根调用所述目标接口。
可选地,所述远程过程调用装置,还可以包括:
注册信息获取模块,用于获取所述注册中心中各候选接口的第二注册信息,所述候选接口包括所述目标接口;
候选通道调整模块,用于根据各所述候选接口的第二注册信息调整所述客户端本地中各所述候选接口对应的候选通信通道。
第三方面,本申请实施例提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面中任一项所述的远程过程调用方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面中任一项所述的远程过程调用方法。
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面中任一项所述的远程过程调用方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
本申请实施例与现有技术相比存在的有益效果是:
本申请实施例中,可根据服务端在注册中心中注册的各接口的注册信息预先建立客户端与各接口对应的候选通信通道,并可将所建立的候选通信通道保存于客户端本地。因此,在进行远程过程调用时,可根据远程过程调用请求中所包括的客户端请求调用的目标接口的接口信息从客户端本地中确定目标接口对应的候选通信通道,并可利用预设的负载均衡策略从候选通信通道中选取目标通信通道,以使用目标通信通道来调用目标接口。即通过预先建立并缓存通信通道的方式来避免远程过程调用过程中通信通道的建立,可极大地减少远程过程调用中通信通道建立所耗费的时间,提高远程过程调用的性能。另外,通过负载均衡策略来进行目标通信通道的选取,也可有助于提高远程过程调用的性能,提升用户体验。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例一提供的远程过程调用方法所适用于的调用***的***示意图;
图2是本申请实施例一提供的远程过程调用方法的流程示意图;
图3是本申请实施例二提供的远程过程调用方法所适用于的调用***的***示意图;
图4是本申请实施例二提供的远程过程调用方法的流程示意图;
图5是本申请实施例三提供的远程过程调用装置的结构示意图;
图6是本申请实施例提供的终端设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定***结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的***、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请实施例提供的远程过程调用方法可以应用于手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)等终端设备上,本申请实施例对终端设备的具体类型不作任何限制。
【实施例一】
图1示出了本申请实施例一提供的远程过程调用方法所适用于的调用***的***示意图。如图1所示,本实施例提供的调用***可以包括注册中心、客户端和服务端,客户端和服务端分别与注册中心连接。其中,客户端为请求调用接口的一端,服务器端为提供接口供客户端调用的一端,客户端和服务端均可以为终端设备。
示例性的,为提高接口调用性能,服务端可以为集群设置的服务端。应理解,注册中心可以为zookeeper注册中心,或者可以为consul注册中心,或者可以为eureka注册中心。
需要说明的是,当服务端可提供应用的接口供客户端调用时,该服务端可以将该服务端对应的IP地址、该服务端中可供调用的应用对应的端口号以及该应用中可供调用的接口对应的接口名称等信息注册于注册中心。示例性的,服务端可通过获取该服务端的配置文件,并可根据配置文件确定该服务端是否可提供应用的接口供客户端调用,当确定该服务端可提供应用的接口供客户端调用时,该服务端可以根据配置文件确定该服务端对应的IP地址、该服务端可供调用的应用对应的端口号以及该应用中可供调用的接口对应的接口名称等信息,并注册于注册中心。在此,为确保IP地址获取的准确性,服务端也可以动态获取该服务端对应的IP地址。
在此,注册中心可通过定时轮询等方式检测注册于注册中心的各接口是否可被调用,当检测到某一接口不可被调用时,注册中心即可将该接口的注册状态标记为无效状态(即不可被调用的状态)或者从注册中心中删除该接口。可以理解的是,在服务端提供的应用停止服务时,服务端也可以向注册中心发送通知信息,以通知注册中心下线或删除该应用所对应的接口。
应理解,客户端启动后,客户端可连接至注册中心,并可获取注册中心中各接口所对应的第一注册信息(即各接口对应的接口名称、各接口对应的应用的端口号以及各接口对应的服务端的IP地址等)。示例性的,客户端可根据客户端中配置文件的配置信息(该配置信息可以包括注册中心的地址、负载均衡策略以及服务端注册在注册中心的路径等)连接至注册中心,以获取注册中心中的各接口所对应的第一注册信息。当客户端从注册中心中获取到各接口对应的第一注册信息后,客户端即可以根据各接口对应的IP地址及端口号与各接口建立通信通道,并可将所建立的通信通道与各接口关联保存于客户端本地,以作为各接口对应的候选通信通道。在此,不同的服务端可提供相同的接口,且客户端与同一接口之间可建立一条或者多条通信通道。其中,可提供相同接口的服务端数量以及客户端与同一接口之间所建立的通信通道的数量可根据具体情况确定,本申请实施例对此不作限定。
需要说明的是,在客户端连接至注册中心后,客户端可以实时监听注册中心中的接口变化,并可以根据接口变化进行客户端本地中通信通道的调整。具体地,当服务端注册于注册中心的接口发生变化时,服务端可以向注册中心发送通知信息,以通知注册中心进行该服务端对应的注册信息的增加、修改或者删除等,或者注册中心也可自行检测服务端的接口变化,并可以根据接口变化自行进行服务端对应的注册信息的增加、修改或者删除。此时,与注册中心连接的客户端则可以根据注册信息的增加、修改或者删除来进行客户端本地中通信通道的增加、修改或者删除。
下面将结合上述的调用***详细描述本申请实施例一提供的远程过程调用方法。其中,本实施例的执行主体可以为调用***中的客户端,所述客户端可以手机、平板电脑、计算机等终端设备。如图2所示,本实施例中的远程过程调用方法,可以包括:
S201、获取远程过程调用请求,所述远程过程调用请求中包括客户端请求调用的目标接口的接口信息;
应理解,在需要进行远程过程调用时,客户端即可以生成一远程过程调用请求,该远程过程调用请求中可以包括客户端所请求调用的目标接口的接口信息,其中,目标接口的接口信息至少可以包括目标接口的接口名称。
S202、根据所述接口信息确定所述目标接口对应的候选通信通道,所述候选通信通道为存储于所述客户端本地的通信通道,所述候选通信通道为所述客户端根据注册中心中所述目标接口的第一注册信息预先建立的通信通道;
由前述描述可知,客户端本地中预先存储有客户端与注册于注册中心的各接口对应的通信通道。因此,在获取客户端所请求调用的目标接口的接口信息后,客户端即可以根据目标接口的接口信息(如接口名称)查找客户端本地中是否存储有该目标接口对应的通信通道,当客户端本地中存储有该目标接口对应的通信通道时,即可以将所查找到的通信通道确定为该目标接口对应的候选通信通道。
S203、利用预设的负载均衡策略从所述候选通信通道中选取目标通信通道,并使用所述目标通信通道调用所述目标接口。
在此,预设的负载均衡策略可以为轮询策略或者随机策略,也可以为用户自定义的策略。由前述描述可知,客户端可以根据客户端配置文件中的配置信息来确定该预设的负载均衡策略。
需要说明的是,当该目标接口对应的候选通信通道只包含一条时,客户端则可以直接使用该候选通信通道来进行该目标接口的调用。当该目标接口对应的候选通信通道包含多条时,客户端即可以利用该预设的负载均衡策略从这多条候选通信通道中选取一条目标通信通道,并可以使用所选取的目标通信通道来进行该目标接口的调用。例如,在图1所示的客户端请求调用的接口1的场景中,当客户端利用轮询策略选择出目标通信通道为通信通道2时,客户端则可以使用通信通道2来调用服务端B所提供的接口1。
具体地,客户端在使用所述目标通信通道调用所述目标接口时,可以首先建立所述目标通信通道对应的目标存根,然后可以使用所述目标通信通道对应的目标存根调用所述目标接口。其中,目标存根为客户端进行远程目标接口调用的本地对象,用于接收客户端本地的方法调用,并将其委派给远程的具体实现对象(如目标接口)。应理解,目标存根可以为BlockingStub(即一对一阻塞式的),也可以为FutureStub(即一对一的非阻塞式的),还可以为Stub(即一对多的非阻塞式的)。在此,本实施例中的目标存根的建立过程具体可参见现有的存根建立过程,且所建立的目标存根的具体类型可以根据实际调用过程所对应的具体参数确定,本实施例对此不作限定。
可选地,所述远程过程调用方法,还可以包括:获取所述注册中心中各候选接口的第二注册信息,所述候选接口包括所述目标接口;根据各所述候选接口的第二注册信息调整所述客户端本地中各所述候选接口对应的候选通信通道。
可以理解的是,当服务端提供的接口发生变化时,该接口注册于注册中心中的注册信息也会发生变化,在此,客户端可实时获取注册中心中各候选接口的第二注册信息,当根据第二注册信息确定某一候选接口发生变化时,客户端即可以根据第二注册信息调整客户端本地所存储的该候选接口所对应的候选通信通道。
例如,在客户端本地存储有服务端A提供的候选接口A对应的候选通信通道的场景中,当服务端A中候选接口A所对应的应用A停止服务时,服务端A即可以通知注册中心下线或者删除服务端A对应的候选接口A在注册中心中的注册信息,此时,客户端即可以根据候选接口A对应的已下线或已删除的注册信息删除客户端本地所存储的客户端与服务端A中的候选接口A之间的所有候选通信通道。
本实施例中,可根据服务端在注册中心中注册的各接口的注册信息预先建立客户端与各接口对应的候选通信通道,并可将所建立的候选通信通道保存于客户端本地。因此,在进行远程过程调用时,可根据远程过程调用请求中所包括的客户端请求调用的目标接口的接口信息从客户端本地中确定目标接口对应的候选通信通道,并可利用预设的负载均衡策略从候选通信通道中选取目标通信通道,以使用目标通信通道来调用目标接口。即通过预先建立并缓存通信通道的方式来避免远程过程调用过程中通信通道的建立,可极大地减少远程过程调用中通信通道建立所耗费的时间,提高远程过程调用的性能。另外,通过负载均衡策略来进行目标通信通道的选取,也可有助于提高远程过程调用的性能,提升用户体验。
【实施例二】
图3示出了本申请实施例二提供的远程过程调用方法所适用于的调用***的***示意图。如图3所示,本实施例提供的调用***可以包括注册中心、客户端和服务端,客户端和服务端分别与注册中心连接。其中,本实施例提供的调用***与实施例一提供的调用***的区别在于,本实施例的客户端中可预先存储有客户端之前的调用过程中所使用的目标存根。
下面将结合上述的调用***详细描述本申请实施例二提供的远程过程调用方法。如图4所示,本实施例中的远程过程调用方法,可以包括:
S401、获取远程过程调用请求,所述远程过程调用请求中包括客户端请求调用的目标接口的接口信息;
在此,S401与实施例一中的S201的内容相似,基本原理相同,为简明起见,在此不再赘述。
S402、根据所述接口信息判断所述客户端本地中是否存储有目标存根,所述目标存根为所述客户端之前调用所述目标接口时所创建的存根;
S403、若所述客户端本地中存储有所述目标存根,则使用所述目标存根调用所述目标接口;
S404、若所述客户端本地中未存储有所述目标存根,则根据所述接口信息确定所述目标接口对应的候选通信通道;
对于上述S402至S404,应理解,客户端在之前的远程过程调用中,当通过某一通信通道调用某一接口时,客户端可以基于该通信通道建立存根,并使用所建立的存根来调用该接口,同时还可以将所建立的存根与该接口关联保存于客户端本地,以便客户端下一次进行该接口的调用时,可以直接利用客户端本地所存储的存根来进行该接口的调用,减少通信通道的选取过程以及减少存根的建立过程,从而提高远程过程调用的调用速度和性能,提升用户体验。其中,基于同一通信通道所建立的存根可以为一个,也可以为多个,具体数量可根据实际情况确定,本实施例对此不作限定。
因此,在获取客户端所请求调用的目标接口的接口信息后,客户端即可以先根据该接口信息查找客户端本地中是否存储有与该接口信息相匹配的目标存根,当客户端本地中存储有与该接口信息相匹配的目标存根时,客户端则可以直接使用该目标存根来进行该目标接口的调用。
例如,在图3所示的客户端请求调用接口2的场景中,因客户端本地中存储有之前调用接口2所建立的目标存根(即图3所示的存根3),因此,在本次调用中,客户端则可以直接使用存根3来调用服务端C所提供的接口2。
应理解,当根据该接口信息确定的目标存根为一个时,客户端则可以直接使用该目标存根来进行目标接口的调用。而当根据该接口信息确定的目标存根为两个或者两个以上时,客户端则可以通过预设的负载均衡策略来进行目标存根的选择,并可以使用最终选择的目标存根来进行目标接口的调用。其中,该预设的负载均衡策略可以为与目标通信通道选取所对应的负载均衡策略为同一的策略,也可以为用户另行设置的策略,本实施例对此不作限定。
例如,在图3所示的客户端请求调用接口1的场景中,因客户端本地中存储有之前调用接口1所建立的目标存根(即图3所示的存根1、2和4),因此在本次调用中,客户端可以首先通过负载均衡策略从存根1、2和4中进行目标存根的选取,假定所选取的目标存根为存根2,然后客户端则可以使用存根2来调用服务端A所提供的接口1。
示例性的,为确保远程过程调用的有效性,客户端在使用目标存根调用目标接口时,可以首先确定目标存根的存根状态;当目标存根的存根状态为第一预设状态(即无效状态)时,即认为所获取的目标存根不可用,此时客户端则可根据接口信息确定目标接口对应的候选通信通道;当目标存根的存根状态为第二预设状态(即有效状态)时,客户端则可以使用该目标存根来调用该目标接口。
应理解,在目标存根存在多个的情况下,客户端可以在所有目标存根均不可用时,再根据接口信息进行候选通信通道的确定。即在目标存根存在多个的情况下,当根据预设的负载均衡策略选取的第一个目标存根不可用时,客户端可随即根据预设的负载均衡策略选取第二个目标存根,并可继续判断第二个目标存根是否可用,当第二个目标存根不可用时,则可继续根据预设的负载均衡策略选取第三个、第四个目标存根等,直到所有的目标存根均不可用时,客户端则可以根据接口信息进行候选通信通道的确定。
当然,本实施例中,客户端也可以在利用预设的负载均衡策略所确定的第一个目标存根不可用时,直接根据接口信息进行候选通信通道的确定,本实施例对此不作限定。
具体地,客户端可以通过检测目标存根对应的目标接口在注册中心中的注册状态来确定目标存根的存根状态,其中,目标接口在注册中心中的注册状态可以包括有效状态和无效状态,无效状态即为目标接口对应的注册信息为已下线或者已删除的信息;当目标存根对应的目标接口在注册中心中的注册状态为有效状态时,则可以确定目标存根的存根状态为第二预设状态(即可以使用的有效状态);当目标存根对应的目标接口在注册中心中的注册状态为无效状态时,则可以确定目标存根的存根状态为第一预设状态(即不可以使用的无效状态)。
S405、利用预设的负载均衡策略从所述候选通信通道中选取目标通信通道,并使用所述目标通信通道调用所述目标接口。
在此,S405与实施例一中的S203的内容相似,基本原理相同,为简明起见,在此不再赘述。
示例性的,客户端在使用目标通信通道调用目标接口时,可以首先建立目标通信通道对应的目标存根,然后可以使用目标通信通道对应的目标存根调用目标接口。示例性的,为提高下一次进行目标接口调用的调用速度和性能,客户端在建立该目标通信通道对应的目标存根后,还可以将该目标通信通道对应的目标存根与该目标接口关联存储于客户端本地,以方便客户端下一次进行该目标接口的调用时,可直接从客户端本地获取目标存根来进行接口调用,提升接口调用性能。
本实施例中,通过将客户端之前的远程过程调用中所建立的目标存根存储于客户端本地,使得后续在进行相同目标接口的调用时,可以直接使用客户端本地的目标存根来调用该目标接口,以减少目标通信通道的选取过程以及减少目标存根的建立过程,可极大地提高远程过程调用的调用速度和性能,提升用户体验。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
【实施例三】
对应于上文实施例所述的远程过程调用方法,图5示出了本申请实施例三提供的远程过程调用装置的结构框图,为了便于说明,仅示出了与本申请实施例三相关的部分。
参照图5,所述远程过程调用装置,可以包括:
调用请求获取模块501,用于获取远程过程调用请求,所述远程过程调用请求中包括客户端请求调用的目标接口的接口信息;
候选通道确定模块502,用于根据所述接口信息确定所述目标接口对应的候选通信通道,所述候选通信通道为存储于所述客户端本地的通信通道,所述候选通信通道为所述客户端根据注册中心中所述目标接口的第一注册信息预先建立的通信通道;
远程过程调用模块503,用于利用预设的负载均衡策略从所述候选通信通道中选取目标通信通道,并使用所述目标通信通道调用所述目标接口。
在一种可能的实现方式中,所述候选通道确定模块502,可以包括:
目标存根判断单元,用于根据所述接口信息判断所述客户端本地中是否存储有目标存根,所述目标存根为所述客户端之前调用所述目标接口时所创建的存根;
目标存根调用单元,用于若所述客户端本地中存储有所述目标存根,则使用所述目标存根调用所述目标接口;
候选通道确定单元,用于若所述客户端本地中未存储有所述目标存根,则根据所述接口信息确定所述目标接口对应的候选通信通道。
可选地,所述目标存根调用单元,可以包括:
存根状态确定分单元,用于确定所述目标存根的存根状态;
候选通道确定分单元,用于若所述存根状态为第一预设状态,则根据所述接口信息确定所述目标接口对应的候选通信通道;
目标存根调用分单元,用于若所述存根状态为第二预设状态,则使用所述目标存根调用所述目标接口。
示例性的,所述存根状态确定分单元,用于检测所述目标存根对应的目标接口在所述注册中心中的注册状态,所述注册状态包括有效状态和无效状态;当所述目标存根对应的目标接口在所述注册中心中的注册状态为有效状态时,则确定所述目标存根的存根状态为所述第二预设状态;当所述目标存根对应的目标接口在所述注册中心中的注册状态为无效状态时,则确定所述目标存根的存根状态为所述第一预设状态。
在一种可能的实现方式中,所述远程过程调用模块503,可以包括:
目标存根建立单元,用于建立所述目标通信通道对应的目标存根,并将所述目标通信通道对应的目标存根存储于所述客户端本地;
远程过程调用单元,用于使用所述目标通信通道对应的目标存根调用所述目标接口。
可选地,所述远程过程调用装置,还可以包括:
注册信息获取模块,用于获取所述注册中心中各候选接口的第二注册信息,所述候选接口包括所述目标接口;
候选通道调整模块,用于根据各所述候选接口的第二注册信息调整所述客户端本地中各所述候选接口对应的候选通信通道。
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述***中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
图6为本申请一实施例提供的终端设备的结构示意图。如图6所示,该实施例的终端设备6包括:至少一个处理器60(图6中仅示出一个)、存储器61以及存储在所述存储器61中并可在所述至少一个处理器60上运行的计算机程序62,所述处理器60执行所述计算机程序62时实现上述任意各个远程过程调用方法实施例中的步骤。
所述终端设备6可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。该终端设备可包括,但不仅限于,处理器60、存储器61。本领域技术人员可以理解,图6仅仅是终端设备6的举例,并不构成对终端设备6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。
所称处理器60可以是中央处理单元(Central Processing Unit,CPU),该处理器60还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器61在一些实施例中可以是所述终端设备6的内部存储单元,例如终端设备6的硬盘或内存。所述存储器61在另一些实施例中也可以是所述终端设备6的外部存储设备,例如所述终端设备6上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器61还可以既包括所述终端设备6的内部存储单元也包括外部存储设备。所述存储器61用于存储操作***、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器61还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行时实现可实现上述各个方法实施例中的步骤。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读存储介质至少可以包括:能够将计算机程序代码携带到装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (10)

1.一种远程过程调用方法,其特征在于,包括:
获取远程过程调用请求,所述远程过程调用请求中包括客户端请求调用的目标接口的接口信息;
根据所述接口信息确定所述目标接口对应的候选通信通道,所述候选通信通道为存储于所述客户端本地的通信通道,所述候选通信通道为所述客户端根据注册中心中所述目标接口的第一注册信息预先建立的通信通道;
利用预设的负载均衡策略从所述候选通信通道中选取目标通信通道,并使用所述目标通信通道调用所述目标接口。
2.如权利要求1所述的远程过程调用方法,其特征在于,所述根据所述接口信息确定所述目标接口对应的候选通信通道,包括:
根据所述接口信息判断所述客户端本地中是否存储有目标存根,所述目标存根为所述客户端之前调用所述目标接口时所创建的存根;
若所述客户端本地中存储有所述目标存根,则使用所述目标存根调用所述目标接口;
若所述客户端本地中未存储有所述目标存根,则根据所述接口信息确定所述目标接口对应的候选通信通道。
3.如权利要求2所述的远程过程调用方法,其特征在于,所述使用所述目标存根调用所述目标接口,包括:
确定所述目标存根的存根状态;
若所述存根状态为第一预设状态,则根据所述接口信息确定所述目标接口对应的候选通信通道;
若所述存根状态为第二预设状态,则使用所述目标存根调用所述目标接口。
4.如权利要求3所述的远程过程调用方法,其特征在于,所述确定所述目标存根的存根状态,包括:
检测所述目标存根对应的目标接口在所述注册中心中的注册状态,所述注册状态包括有效状态和无效状态;
当所述目标存根对应的目标接口在所述注册中心中的注册状态为有效状态时,则确定所述目标存根的存根状态为所述第二预设状态;
当所述目标存根对应的目标接口在所述注册中心中的注册状态为无效状态时,则确定所述目标存根的存根状态为所述第一预设状态。
5.如权利要求1所述的远程过程调用方法,其特征在于,所述使用所述目标通信通道调用所述目标接口,包括:
建立所述目标通信通道对应的目标存根,并将所述目标通信通道对应的目标存根存储于所述客户端本地;
使用所述目标通信通道对应的目标存根调用所述目标接口。
6.如权利要求1至5中任一项所述的远程过程调用方法,其特征在于,所述远程过程调用方法,还包括:
获取所述注册中心中各候选接口的第二注册信息,所述候选接口包括所述目标接口;
根据各所述候选接口的第二注册信息调整所述客户端本地中各所述候选接口对应的候选通信通道。
7.一种远程过程调用装置,其特征在于,包括:
调用请求获取模块,用于获取远程过程调用请求,所述远程过程调用请求中包括客户端请求调用的目标接口的接口信息;
候选通道确定模块,用于根据所述接口信息确定所述目标接口对应的候选通信通道,所述候选通信通道为存储于所述客户端本地的通信通道,所述候选通信通道为所述客户端根据注册中心中所述目标接口的第一注册信息预先建立的通信通道;
远程过程调用模块,用于利用预设的负载均衡策略从所述候选通信通道中选取目标通信通道,并使用所述目标通信通道调用所述目标接口。
8.如权利要求7所述的远程过程调用装置,其特征在于,所述候选通道确定模块,包括:
目标存根判断单元,用于根据所述接口信息判断所述客户端本地中是否存储有目标存根,所述目标存根为所述客户端之前调用所述目标接口时所创建的存根;
目标存根调用单元,用于若所述客户端本地中存储有所述目标存根,则使用所述目标存根调用所述目标接口;
候选通道确定单元,用于若所述客户端本地中未存储有所述目标存根,则根据所述接口信息确定所述目标接口对应的候选通信通道。
9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述的远程过程调用方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的远程过程调用方法。
CN202010316388.1A 2020-04-21 2020-04-21 远程过程调用方法、装置、存储介质及终端设备 Pending CN111580987A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010316388.1A CN111580987A (zh) 2020-04-21 2020-04-21 远程过程调用方法、装置、存储介质及终端设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010316388.1A CN111580987A (zh) 2020-04-21 2020-04-21 远程过程调用方法、装置、存储介质及终端设备

Publications (1)

Publication Number Publication Date
CN111580987A true CN111580987A (zh) 2020-08-25

Family

ID=72126634

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010316388.1A Pending CN111580987A (zh) 2020-04-21 2020-04-21 远程过程调用方法、装置、存储介质及终端设备

Country Status (1)

Country Link
CN (1) CN111580987A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112162873A (zh) * 2020-09-28 2021-01-01 杭州安恒信息技术股份有限公司 一种远程调用方法、电子装置和存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1995017718A1 (en) * 1993-12-20 1995-06-29 Taligent, Inc. Object-oriented remote procedure call networking system
CN101909061A (zh) * 2010-08-06 2010-12-08 福建升腾资讯有限公司 基于远程显示协议的动态虚拟通道的创建和应用方法
CN104639539A (zh) * 2015-01-27 2015-05-20 深圳市汇朗科技有限公司 接口调用的方法和装置
CN106998343A (zh) * 2016-01-26 2017-08-01 阿里巴巴集团控股有限公司 一种远程过程调用处理方法、装置及***
CN110134528A (zh) * 2019-04-15 2019-08-16 平安普惠企业管理有限公司 微服务框架的接口信息存储调用方法、装置和终端设备
CN110674061A (zh) * 2019-09-24 2020-01-10 上海商汤临港智能科技有限公司 一种机器设备的控制方法及装置、存储介质
WO2020019972A1 (zh) * 2018-07-23 2020-01-30 百富计算机技术(深圳)有限公司 一种应用之间的通信方法、终端设备及存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1995017718A1 (en) * 1993-12-20 1995-06-29 Taligent, Inc. Object-oriented remote procedure call networking system
US5491800A (en) * 1993-12-20 1996-02-13 Taligent, Inc. Object-oriented remote procedure call networking system
CN101909061A (zh) * 2010-08-06 2010-12-08 福建升腾资讯有限公司 基于远程显示协议的动态虚拟通道的创建和应用方法
CN104639539A (zh) * 2015-01-27 2015-05-20 深圳市汇朗科技有限公司 接口调用的方法和装置
CN106998343A (zh) * 2016-01-26 2017-08-01 阿里巴巴集团控股有限公司 一种远程过程调用处理方法、装置及***
WO2020019972A1 (zh) * 2018-07-23 2020-01-30 百富计算机技术(深圳)有限公司 一种应用之间的通信方法、终端设备及存储介质
CN110134528A (zh) * 2019-04-15 2019-08-16 平安普惠企业管理有限公司 微服务框架的接口信息存储调用方法、装置和终端设备
CN110674061A (zh) * 2019-09-24 2020-01-10 上海商汤临港智能科技有限公司 一种机器设备的控制方法及装置、存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112162873A (zh) * 2020-09-28 2021-01-01 杭州安恒信息技术股份有限公司 一种远程调用方法、电子装置和存储介质
CN112162873B (zh) * 2020-09-28 2024-03-26 杭州安恒信息技术股份有限公司 一种远程调用方法、电子装置和存储介质

Similar Documents

Publication Publication Date Title
US8832304B2 (en) Protocol agnostic notification system
CN111163130B (zh) 一种网络服务***及其数据传输方法
CN109976787B (zh) 应用程序升级方法、装置、终端及计算机可读存储介质
CN108429739B (zh) 一种识别蜜罐的方法、***及终端设备
CN114637703B (zh) 数据访问装置、方法、可读介质和电子设备
CN114268667B (zh) 数据转发方法、装置、计算机设备及存储介质
CN114244654B (zh) 一种url的转发方法、装置、设备及计算机存储介质
CN113076281B (zh) 一种Ceph内核客户端进行通信的方法、***、设备及介质
CN112818336A (zh) 一种数据访问方法、数据访问装置及计算机可读存储介质
CN112702362B (zh) Tcp/ip协议栈的增强方法、装置、电子设备及存储介质
CN111580987A (zh) 远程过程调用方法、装置、存储介质及终端设备
CN111597041B (zh) 一种分布式***的调用方法、装置、终端设备及服务器
CN114697888B (zh) 5g消息处理方法、装置及存储介质
CN110784510A (zh) 目标服务节点接入总线的方法、服务节点的信息交互方法
CN114116184B (zh) 虚拟场景中的数据处理方法及装置、设备、介质
CN113115400B (zh) 一种通信方法及装置
CN113055250B (zh) 一种联网通信方法、装置、终端设备及存储介质
CN113051077A (zh) 一种用户请求的处理方法、装置、终端设备及存储介质
CN110519357B (zh) 文件传输方法及***、计算机装置及存储介质
CN113556370A (zh) 一种服务调用方法和装置
CN113032820A (zh) 文件存储方法、访问方法、装置、设备及存储介质
CN114915610B (zh) 发送网络请求的方法、装置、电子设备和存储介质
CN117640667B (zh) 交易信息访问方法及装置、终端设备、存储介质
CN114785794B (zh) 资源分配方法、装置、设备、介质和***
CN115002749B (zh) Ip地址分配方法、装置、存储介质以及电子设备

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