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

远程调用方法和装置 Download PDF

Info

Publication number
CN106970843A
CN106970843A CN201610024394.3A CN201610024394A CN106970843A CN 106970843 A CN106970843 A CN 106970843A CN 201610024394 A CN201610024394 A CN 201610024394A CN 106970843 A CN106970843 A CN 106970843A
Authority
CN
China
Prior art keywords
service
address
grouping information
destination
called
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.)
Granted
Application number
CN201610024394.3A
Other languages
English (en)
Other versions
CN106970843B (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.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201610024394.3A priority Critical patent/CN106970843B/zh
Publication of CN106970843A publication Critical patent/CN106970843A/zh
Application granted granted Critical
Publication of CN106970843B publication Critical patent/CN106970843B/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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本公开是关于一种远程调用方法和装置,其中方法包括:求取服务地址列表和分组信息的交集,所述服务地址列表包括提供所述目标服务的各服务提供设备的IP地址,所述分组信息包括本次RPC调用的路由分组中包括的各个服务的服务提供设备的IP地址,由所述交集中确定一个IP地址作为调用所述目标服务的目标地址;根据所述目标地址调用所述目标服务,并将所述路由分组的分组信息传输至所述目标地址对应的服务提供设备,以使得所述服务提供设备根据所述分组信息调用下一个服务。本公开降低了实现路由分组的RPC调用时的网络开销。

Description

远程调用方法和装置
技术领域
本公开涉及网络技术,尤其涉及一种远程调用方法和装置。
背景技术
面向服务的体系结构(Service-Oriented Architecture,SOA)是一个组件模型,利用该SOA模型开发的应用程序,可以将应用程序的不同功能单元(称为服务)之间通过一定的接口联系起来。在执行该SOA模式的包括多个服务的应用程序时,各个服务之间可以执行RPC(Remote Procedure Call Protocol,远程过程调用协议)调用,形成一条调用链路。
在进行RPC调用时,为了使得服务之间的调用更加有效,例如,更加快捷,可以采用路由分组的方式。例如,对于每个服务来说,可以由一个服务器集群提供该服务,即由多个IP地址对应的服务器都可以提供该服务,而路由分组即将部分服务器划分为一个分组,该分组中包括分别属于应用中的各个服务的特定服务器,这些特定服务器之间进行调用以实现应用。相关技术中,可以设置一个主控服务器,分组信息设置在主控服务器上,调用链路中的每个服务作为调用者时,都可以向主控服务器查询被调用的服务所在的服务器,主控服务器根据分组信息反馈与调用者位于同一个分组中的被调用服务器。但是在这种方式的RPC调用中,调用者均需要与主控服务器交互以查询被调用服务器,网络开销较大。
发明内容
为克服相关技术中存在的问题,本公开提供一种远程调用方法和装置,以降低实现路由分组的RPC调用时的网络开销。
根据本公开实施例的第一方面,提供一种远程调用方法,所述远程调用方法应用于一次远程调用过程协议RPC调用中的一个调用者调用本次调用链路中的下一个服务,所述下一个服务为被调用的目标服务;所述方法包括:
求取服务地址列表和分组信息的交集,所述服务地址列表包括提供所述目标服务的各服务提供设备的IP地址,所述分组信息包括本次RPC调用的路由分组中包括的各个服务的服务提供设备的IP地址,由所述交集中确定一个IP地址作为调用所述目标服务的目标地址;
根据所述目标地址调用所述目标服务,并将所述路由分组的分组信息传输至所述目标地址对应的服务提供设备,以使得所述服务提供设备根据所述分组信息调用下一个服务。
根据本公开实施例的第二方面,提供一种远程调用装置,所述远程调用装置应用于一次远程调用过程协议RPC调用中的一个调用者,所述调用者用于调用本次调用链路中的下一个服务,所述下一个服务为被调用的目标服务;所述装置包括:
地址确定模块,用于求取服务地址列表和分组信息的交集,所述服务地址列表包括提供所述目标服务的各服务提供设备的IP地址,所述分组信息包括本次RPC调用的路由分组中包括的各个服务的服务提供设备的IP地址,由所述交集中确定一个IP地址作为调用所述目标服务的目标地址;
服务调用模块,用于根据所述目标地址调用所述目标服务,并将所述路由分组的分组信息传输至所述目标地址对应的服务提供设备,以使得所述服务提供设备根据所述分组信息调用下一个服务。
本公开的实施例提供的技术方案可以包括以下有益效果:通过由RPC调用的调用链路中的各个设备之间传输分组信息,并由设备自身根据分组信息确定下一步调用的服务地址,相对于传统方式中每个设备都要与主控服务器交互来获取下一步调用的服务地址的方式,降低了实现路由分组的RPC调用时的网络开销。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是根据一示例性实施例示出的一种服务调用链路示意图;
图2是根据一示例性实施例示出的RPC调用的路由分组示意图;
图3是根据一示例性实施例示出的路由分组的实现原理图;
图4是根据一示例性实施例示出的一种远程调用方法的流程图;
图5是根据一示例性实施例示出的另一种RPC调用链路图;
图6是根据一示例性实施例示出的另一种远程调用方法的流程图;
图7是根据一示例性实施例示出的又一种远程调用方法的流程图;
图8是根据一示例性实施例示出的一种远程调用装置的结构示意图;
图9是根据一示例性实施例示出的另一种远程调用装置的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
图1示意了一个根据SOA模型开发的应用程序在执行时,其中的各个服务(即该应用程序中的各不同的功能单元)之间的调用链路。如图1所示,假设该应用程序包括三个服务,服务A(Service A)、服务B(Service B)和服务C(Service C),在执行该应用程序时,该三个服务之间的调用顺序可以是服务A调用服务B,服务B调用服务C,并且,服务之间的调用可以是RPC调用过程。
每个服务都可以是由一个服务集群提供,例如,以服务B为例,提供该服务B的设备可以有多个,包括图1中所示的服务器11、服务器12和服务器13等设备,在本例子中,这些设备可以称为“服务提供设备”。提供某个服务的所有服务提供设备的IP地址的列表,可以称为该服务的“服务地址列表”,比如,如果服务器11的IP地址是IP1,服务器12的IP地址是IP2,服务器13的IP地址是IP3,那么服务B的服务地址列表为:[IP1、IP2、IP3……]。同样的道理,服务A和服务C也分别有一个对应的服务地址列表,用于表示能够提供对应服务的各个服务提供设备的IP地址。
对于应用程序中的各个服务之间的RPC调用,为了使得调用更加快捷或其他因素,通常可以进行路由分组。参见图2的示例,仍以图1中的三个服务为例,服务A、服务B和服务C都对应一个提供该服务的集群,集群中有很多服务提供设备。示例性的,可以由服务A的集群中选择出一个服务提供设备21,由服务B的集群中选择出两个服务提供设备,分别为服务提供设备22和23,由服务C的集群中选择出一个服务提供设备24。可以将选择出的服务提供设备21至24,作为一个路由分组,即在执行应用程序时,服务A只能由服务提供设备21提供,在服务A调用服务B时,只能由服务提供设备22和23中选择一个调用,尽管服务B的集群中还有其他的服务提供设备,但是只能由在本路由分组中的设备提供服务。当然,对于单个服务来说,被选择入分组中的设备可以不只一个设备,可以有多个。
如果记录下图2所示的路由分组中各个服务提供设备的IP地址,形成一个对应该路由分组的IP地址的列表,可以称为“分组信息”。例如,以图2为例,该路由分组的分组信息中可以包括[服务提供设备21的IP地址、服务提供设备22的IP地址、服务提供设备23的IP地址、服务提供设备24的IP地址]。在该分组信息中,只是罗列了位于同一分组中的各设备的地址,但是并没有指明各个设备之间的调用顺序。
本申请提供的远程调用方法,目的是在各个服务执行RPC调用的过程中实现路由分组,保证该RPC调用是在位于同一个路由分组中的各个服务提供设备之间执行的调用,并且,本申请实施例的方法将不会采用传统方式中的主控服务器控制的方式,而是由调用链路中的各个设备之间传输分组信息,再由各个设备自己根据分组信息确定下一个调用的服务在哪个设备。如下将详细描述本申请的远程调用方法的方案。
请结合参见图3,以一次RPC调用为例,来说明如何通过本申请的调用方法实现路由分组。如图3所示,分组中的各个设备,在开始执行调用之前,会接收到如下两方面的信息,这些信息可以是由配置中心31获取:
一种信息是:服务地址列表。
每个服务都可以知道自己下一步要调用的服务是哪个,例如,对于服务A来说,服务A可以根据自己的业务逻辑获知下一步要调用服务B,服务B同样可以知道自己下一步要调用服务C。本例子中,可以将下一个调用的服务称为目标服务,而将调用该目标服务的服务称为调用者。比如,以服务A来看,服务A是调用者,服务A下一步要调用的目标服务是服务B。
本例子中,配置中心31可以将对于每个服务来说,其目标服务的服务地址列表传输至该服务的设备。例如,结合图3来看,服务提供设备21用于提供服务A,那么该设备可以通知配置中心31,获取下一步调用的目标服务即服务B对应的服务地址列表。同样,服务提供设备22和23都可以向配置中心31获取下一步调用的目标服务即服务C的服务地址列表。
另一种信息是:分组信息。
本例子中,对于一个服务提供设备来说,该设备所在的路由分组可以有多个,比如,图3中所示的服务提供设备22,既可以在图3中所示的路由分组中,还可以同时位于其他的路由分组中。但是,如果一个服务提供设备是一次RPC调用的调用链路中的入节点,比如,图3中所示的服务A对应的服务提供设备21,本次调用是由该服务A开始的,那么作为入节点的服务提供设备21只能在一个路由分组中,目的是保证在入节点发生调用时能够明确知道自己所在的是哪个分组,以将分组信息向该调用链路的下游设备传递。不过,一个分组中可以有多个入节点。
分组信息对应的IP列表的格式可以为[rootIpList],[groupNodeIpList],其中,rootIpList是本次分组中作为调用入节点的设备的IP地址,例如,图3所示的服务提供设备21的IP地址;groupNodeIpList是本次分组中作为调用中间节点的设备的IP地址,例如,服务提供设备22和23的IP地址。
上述的服务地址列表和分组信息,可以是由使用人员在图3中所示的信息配置系统32进行配置,并传输至配置中心31,再由配置中心发送至服务提供设备。比如,信息配置系统32可以是一个具有web界面的配置系统,可以配置各个服务的服务地址列表,还可以配置各个路由分组的分组信息。配置中心31在接收到信息配置系统32传输的服务地址列表和分组信息后,可以将每个服务提供设备需要的服务地址列表传输至设备,并且将服务提供设备所在的各个路由分组的分组信息也传输至该设备。因此,对于图3所示的每个服务提供设备来说,可以存储有下一步调用的目标服务的服务地址列表、以及该设备所在的至少一个路由分组的分组信息。
如下说明在服务提供设备获得上述的服务地址列表和分组信息的基础上,执行RPC调用的过程,参见图4所示的流程,该流程可以是RPC调用的调用链路中的其中一个调用者执行,包括:
在步骤401中,求取服务地址列表和分组信息的交集,由所述交集中确定一个IP地址作为调用目标服务的目标地址。
本例子的调用者以图3中所示的服务提供设备21为例,该服务提供设备21发起调用,且下一步要调用的目标服务是服务B。在本步骤中,服务提供设备21可以求取服务地址列表和分组信息的交集。
例如,对于服务提供设备21来说,其下一步要调用的是服务B,服务B的服务地址列表中包括很多服务提供设备的IP地址,比如,图2中所示的服务B对应的集群中的诸多服务器的地址。而服务提供设备21作为图3所示的路由分组中的调用入节点(即RPC调用由该节点开始),其所在的分组信息只有一个。服务提供设备21可以根据自身的IP地址,查找从配置中心31获取到的分组信息,如果其自身的IP地址是某个分组信息中的rootIpList,那么可以确定该分组信息即为本次调用链路对应的分组信息。如图3所示,该分组信息中包括:[服务提供设备21的IP地址]、[服务提供设备22的IP地址]、[服务提供设备23的IP地址]、[服务提供设备24的IP地址]。
本步骤中,将服务地址列表和分组信息求取交集时,可以得到,[服务提供设备22的IP地址]、[服务提供设备23的IP地址],这两个IP地址对应的服务提供设备是用于提供服务B。即,路由分组的分组信息中,限定了位于同一个路由分组中的多个服务提供设备的IP地址,这些设备提供的服务包括了应用程序执行所需的各个服务,只是分组信息并为明确指明服务提供设备与服务的对应关系,不明了某个服务提供设备提供的是哪个服务,即服务提供设备21知道自己下一步要调用的目标服务是服务B,但是不知道服务提供设备22至24中,哪些设备提供了服务B。因此,通过本步骤求取交集,确定了在分组信息中是由服务提供设备22和服务提供设备23提供服务B。
通过上述说明可以看到,将取服务地址列表和分组信息求取交集得到的IP地址中,这些地址对应的设备既提供了目标服务又在与调用者同一个路由分组中。服务提供设备21可以由交集中确定一个IP地址作为调用目标服务的目标地址。例如,服务提供设备21可以选择服务提供设备22和服务提供设备23的任一个作为目标服务的提供者。
在步骤402中,根据目标地址调用目标服务,并将路由分组的分组信息传输至目标地址对应的服务提供设备,以使得服务提供设备根据分组信息调用下一个服务。
例如,假设在步骤401中选择了服务提供设备22的IP地址作为目标地址,则服务提供设备21可以根据该地址调用服务B。并且,在本例子中,服务提供设备21还可以将本次调用所在的路由分组的分组信息传输至服务提供设备22。比如,往下传的分组信息为:[服务提供设备21的IP地址]、[服务提供设备22的IP地址]、[服务提供设备23的IP地址]、[服务提供设备24的IP地址]。这样,当服务提供设备22要调用下一步服务C时,可以按照图4所示的流程,根据分组信息和服务C对应的服务地址列表求取交集,确定要调用的服务C的服务提供设备的地址。
本例子的远程调用方法,通过由RPC调用的调用链路中的各个设备之间传输分组信息,并由设备自身根据分组信息确定下一步调用的服务地址,相对于传统方式中每个设备都要与主控服务器交互来获取下一步调用的服务地址的方式,降低了网络开销。
在另一个例子中,有些情况下,调用链路中的上游设备未传输分组信息至调用者。例如,参见图5的示例,浏览器51是本次调用的起点,由浏览器51调用服务A,服务A是WEB服务端,服务A再调用服务B。由于某种传输协议的限制,可能会出现服务A能够将分组信息传输至服务B,而浏览器51不能传输分组信息至服务A,那么此时作为WEB服务端的服务A无法接收到分组信息。但是,在该调用链路中,浏览器51和服务A中的至少一个可以作为本次调用的入节点。
基于此,本例子中,服务A在确定自己并未接收到分组信息时,可以执行图6所示的流程,可以是作为WEB服务端的服务提供设备21来确定本次调用的分组信息。如图6所示,包括:
在步骤601中,若未接收到本次调用的上游设备传输的分组信息,则根据本地存储的至少一个分组信息,判断上游设备的IP地址是否位于其中一个分组信息且为入节点。
例如,本地存储的至少一个分组信息,可以是由配置中心接收到的各个分组信息,每个分组信息均包括本设备的IP地址。并且,每个分组信息均包括入节点和中间节点,根据本例子的规则设定,在分组信息中,作为入节点的IP地址只位于一个分组信息中。
本步骤中,若判断结果为是,即上游设备的IP地址(在该WEB服务的例子中,可以是浏览器的IP地址)是一个分组信息中的入节点,则执行步骤602,将该分组信息确定为本次RPC调用的分组信息。这是利用入节点属于分组信息的唯一性,即入节点只能存在于一个分组信息中,如果某个IP地址位于某个分组信息中的rootIpList,则该分组信息确定为该IP地址的设备所在的路由分组。
若判断结果为否,即上游设备的IP地址不是本地存储的任何一个分组信息中的入节点,则执行步骤603。
在步骤603中,判断本设备的IP地址是否位于其中一个分组信息且为入节点。若判断结果为是,即本设备的IP地址是一个分组信息中的入节点,则执行步骤602;否则,若判断结果为否,表明上游设备和本设备均不是调用的入节点,可以执行步骤604,在目标服务的服务地址列表中随机调用。
本例子的远程调用方法中,当调用的上游设备未传输分组信息时,调用者也可以利用由配置中心获取到的各个分组信息,自己确定本次调用对应的分组信息。当然,该方法可以用于调用者是分组调用的入节点的情况,当调用者是一次调用链路中的中间节点时,比如服务B的服务提供设备,将不能应用该方法确定分组信息。此外,在上述的WEB服务的例子之外的应用场景中,如果调用者是本次RPC调用的发起端,则判断其自身的IP地址是否位于一个分组信息且为入节点,若判断结果为是,则将所述分组信息确定为本次RPC调用对应的分组信息。
根据以上描述还可以看到,一次RPC调用的分组信息的确定,是在本次调用链路的入口处确定的,如果入口的调用者是本次RPC调用的发起端,则根据其自身IP地址确定是否是某个分组信息的rootIpList以获取分组信息;而如果入口的调用者是WEB服务端,则可以根据上游的浏览器IP地址或者该WEB服务端自身的IP地址,是否是某个分组信息的rootIpList以获取分组信息。如果调用者没有获取到分组信息,那么调用过程中将不透传分组信息;而中间的被调用者,若未接收到本次调用的上游设备传输的分组信息,则调用中也不会向下游设备透传任何的分组信息。
在又一个例子中,还可能出现的情况是,未获取到本次RPC调用的路由分组的分组信息,或者对服务地址列表和分组信息求取交集为空。这种情况下,为了提高RPC调用的可靠性,可以将服务地址列表与备用分组信息求取交集,该备用分组信息中也包括本次调用链路中各个服务的服务提供设备的IP地址,当然,对于某一个服务来说,该备用分组信息包括的对应该服务的服务提供设备也可以是部分设备。
备用分组信息可以是由配置中心发送至服务提供设备,例如,配置中心在向服务提供设备发送服务地址列表和分组信息时,还可以将备用分组信息发送至服务提供设备。备用分组信息是调用链路中的各个服务的最小集合,每一个服务只有一个提供该服务的设备的IP地址在备用分组信息中,并且,在备用分组信息中的IP地址是相对稳定的提供服务的设备的地址,使得该备用分组信息是稳定分组的信息,是一个稳定的集合,该稳定的集合主要是为了维持一个相对稳定的服务,起到“兜底”的保险机制,保证每一个服务在这个分组中都能找到,也即服务地址列表和备用分组信息的交集一般不为空,避免找不到调用地址。通过将备用分组信息与服务地址列表求取交集,可以由交集中确定一个IP地址作为调用目标服务的目标地址。
在又一个例子中,即使使用备用分组信息与服务地址列表求取交集,但是仍有可能这两者的交集为空,这种情况可能是一个新的服务还没有部署到备用分组的稳定环境中。此时,可以将服务地址列表中剔除掉已经被分组的地址,防止对其他分组的影响,并由剩余的地址中随机确定一个服务提供设备的IP地址作为调用目标服务的目标地址,进一步保证RPC调用的可靠性。
图7示例的流程,可以用于描述包括服务A、服务B和服务C的一次RPC调用的流程,如图7所示,可以包括:
在步骤701中,服务提供设备获取自己的IP地址,根据从配置中心获取的各个分组信息,查找得到自己的IP地址所在的分组信息,且该IP地址属于该分组信息中的rootIpList。
本步骤中,该服务提供设备是本次调用的入口,并可以通过入节点唯一存在于一个分组信息中的特点,确定自己所在的本次调用的分组信息。
在步骤702中,服务提供设备根据下一步要调用的服务B,将服务B的服务地址列表和在步骤701中确定的分组信息取交集,得到位于同一个路由分组的服务B的各个服务提供设备。
例如,本步骤得到的交集,至少包括一个IP地址。
在步骤703中,服务提供设备由交集中随机确定一个地址作为目标地址。
在步骤704中,服务提供设备根据目标地址调用服务B,并且,在调用时将步骤701中确定的分组信息也传输至提供服务B的服务提供设备。
在步骤705中,提供服务B的服务提供设备,根据由提供服务A的服务提供设备传输的分组信息,将该分组信息与服务C的服务地址列表取交集,得到提供服务C的服务提供设备的地址。
在步骤706中,提供服务B的服务提供设备,由在步骤705的交集中获取到的地址,随机确定一个目标地址调用服务C;也可以将分组信息传输至提供服务C的设备。本次调用结束。
由图7所示的例子可以看到,作为调用入节点的设备,可以负责确定本次调用的分组信息,并将分组信息向下游设备传输;在RPC调用的过程中,各个设备之间都可以传输分组信息,并且各个设备都可以根据该分组信息确定下一步要调用的服务所在的设备,从而实现路由分组。
本例子的远程调用方法,不仅节省了网络开销,而且实施起来也较为简便,用户只要在信息配置系统中配置分组信息、服务地址列表这些信息即可,由配置中心将这些信息发送至各个服务提供设备,各个设备就可以根据这些信息自己确定在某一个RPC调用中的调用目标地址。
此外,本例子中的一个调用链路中的中间节点,可以属于多个分组中,有利于充分利用已有的机器最大限度的构造和定制各种路由分组,因为即使一个中间节点属于多个分组,在确定下一步调用服务的地址时,根据上游传输的分组信息和服务地址列表求交集即可,即调用者可以明确哪个分组信息与服务地址列表求交集;而传统的主控服务器方式中,调用者并不将当前所在的分组信息通知主控服务器,如果调用者属于多个分组,主控服务器将无法得知利用哪个分组确定下一步调用的服务地址。因此,本例子的方式提高设备的利用率。此外,配置中心将分组信息发送的设备,可以是dev环境或者其他环境的机器,也可以是用户的PC机。
本申请还提供了一种远程调用装置,该装置可以应用于一次远程调用过程协议RPC调用中的一个调用者,调用者用于调用本次调用链路中的下一个服务,所述下一个服务为被调用的目标服务。如图8所示,该装置可以包括:
地址确定模块81,用于求取服务地址列表和分组信息的交集,所述服务地址列表包括提供所述目标服务的各服务提供设备的IP地址,所述分组信息包括本次RPC调用的路由分组中包括的各个服务的服务提供设备的IP地址,由所述交集中确定一个IP地址作为调用所述目标服务的目标地址;
服务调用模块82,用于根据所述目标地址调用所述目标服务,并将所述路由分组的分组信息传输至所述目标地址对应的服务提供设备,以使得所述服务提供设备根据所述分组信息调用下一个服务。
在一个例子中,地址确定模块81,还用于:若当前的所述调用者为WEB服务端,则判断上游设备的IP地址或者本设备的IP地址是否位于一个分组信息且为入节点,每个分组信息均包括入节点和中间节点,作为入节点的IP地址只位于一个分组信息中,若判断结果为是,则将所述分组信息确定为本次RPC调用对应的分组信息;或者,若当前的所述调用者为所述RPC调用的发起端,则判断本设备的IP地址是否位于一个分组信息且为入节点,若判断结果为是,则将所述分组信息确定为本次RPC调用对应的分组信息。
如图9所示,该装置还可以包括:信息接收模块83,用于由配置中心接收本设备的IP地址所在的各个路由分组的分组信息,所述分组信息的数量为至少一个。
在一个例子中,地址确定模块81,还用于:若不存在所述本次RPC调用的路由分组的分组信息,或者所述服务地址列表和分组信息的交集为空,则将所述服务地址列表与备用分组信息求取交集,所述备用分组信息包括本次调用链路中各个服务的服务提供设备的IP地址,并由所述交集中确定一个IP地址作为调用所述目标服务的目标地址。
在一个例子中,地址确定模块81,还用于:若所述服务地址列表与备用分组信息的交集为空,则将所述服务地址列表中剔除掉已经被分组的地址,由剩余的地址中确定一个服务提供设备的IP地址作为调用所述目标服务的目标地址。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

Claims (10)

1.一种远程调用方法,其特征在于,所述远程调用方法应用于一次远程调用过程协议RPC调用中的一个调用者调用本次调用链路中的下一个服务,所述下一个服务为被调用的目标服务;所述方法包括:
求取服务地址列表和分组信息的交集,所述服务地址列表包括提供所述目标服务的各服务提供设备的IP地址,所述分组信息包括本次RPC调用的路由分组中包括的各个服务的服务提供设备的IP地址,由所述交集中确定一个IP地址作为调用所述目标服务的目标地址;
根据所述目标地址调用所述目标服务,并将所述路由分组的分组信息传输至所述目标地址对应的服务提供设备,以使得所述服务提供设备根据所述分组信息调用下一个服务。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若当前的所述调用者为WEB服务端,则判断上游设备的IP地址或者本设备的IP地址是否位于一个分组信息且为入节点,每个分组信息均包括入节点和中间节点,作为入节点的IP地址只位于一个分组信息中,若判断结果为是,则将所述分组信息确定为本次RPC调用对应的分组信息;
或者,若当前的所述调用者为所述RPC调用的发起端,则判断本设备的IP地址是否位于一个分组信息且为入节点,若判断结果为是,则将所述分组信息确定为本次RPC调用对应的分组信息。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
由配置中心接收本设备的IP地址所在的各个路由分组的分组信息,所述分组信息的数量为至少一个。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若不存在所述本次RPC调用的路由分组的分组信息,或者所述服务地址列表和分组信息的交集为空,则将所述服务地址列表与备用分组信息求取交集,所述备用分组信息包括本次调用链路中各个服务的服务提供设备的IP地址,并由所述交集中确定一个IP地址作为调用所述目标服务的目标地址。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若所述服务地址列表与备用分组信息的交集为空,则将所述服务地址列表中剔除掉已经被分组的地址,由剩余的地址中确定一个服务提供设备的IP地址作为调用所述目标服务的目标地址。
6.一种远程调用装置,其特征在于,所述远程调用装置应用于一次远程调用过程协议RPC调用中的一个调用者,所述调用者用于调用本次调用链路中的下一个服务,所述下一个服务为被调用的目标服务;所述装置包括:
地址确定模块,用于求取服务地址列表和分组信息的交集,所述服务地址列表包括提供所述目标服务的各服务提供设备的IP地址,所述分组信息包括本次RPC调用的路由分组中包括的各个服务的服务提供设备的IP地址,由所述交集中确定一个IP地址作为调用所述目标服务的目标地址;
服务调用模块,用于根据所述目标地址调用所述目标服务,并将所述路由分组的分组信息传输至所述目标地址对应的服务提供设备,以使得所述服务提供设备根据所述分组信息调用下一个服务。
7.根据权利要求6所述的装置,其特征在于,所述地址确定模块,还用于:
若当前的所述调用者为WEB服务端,则判断上游设备的IP地址或者本设备的IP地址是否位于一个分组信息且为入节点,每个分组信息均包括入节点和中间节点,作为入节点的IP地址只位于一个分组信息中,若判断结果为是,则将所述分组信息确定为本次RPC调用对应的分组信息;
或者,若当前的所述调用者为所述RPC调用的发起端,则判断本设备的IP地址是否位于一个分组信息且为入节点,若判断结果为是,则将所述分组信息确定为本次RPC调用对应的分组信息。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
信息接收模块,用于由配置中心接收本设备的IP地址所在的各个路由分组的分组信息,所述分组信息的数量为至少一个。
9.根据权利要求6所述的装置,其特征在于,
所述地址确定模块,还用于:若不存在所述本次RPC调用的路由分组的分组信息,或者所述服务地址列表和分组信息的交集为空,则将所述服务地址列表与备用分组信息求取交集,所述备用分组信息包括本次调用链路中各个服务的服务提供设备的IP地址,并由所述交集中确定一个IP地址作为调用所述目标服务的目标地址。
10.根据权利要求6所述的装置,其特征在于,
所述地址确定模块,还用于:若所述服务地址列表与备用分组信息的交集为空,则将所述服务地址列表中剔除掉已经被分组的地址,由剩余的地址中确定一个服务提供设备的IP地址作为调用所述目标服务的目标地址。
CN201610024394.3A 2016-01-14 2016-01-14 远程调用方法和装置 Active CN106970843B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610024394.3A CN106970843B (zh) 2016-01-14 2016-01-14 远程调用方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610024394.3A CN106970843B (zh) 2016-01-14 2016-01-14 远程调用方法和装置

Publications (2)

Publication Number Publication Date
CN106970843A true CN106970843A (zh) 2017-07-21
CN106970843B CN106970843B (zh) 2020-07-24

Family

ID=59334369

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610024394.3A Active CN106970843B (zh) 2016-01-14 2016-01-14 远程调用方法和装置

Country Status (1)

Country Link
CN (1) CN106970843B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109947614A (zh) * 2018-11-28 2019-06-28 阿里巴巴集团控股有限公司 多机房依赖监控方法、装置、设备及计算机可读存储介质
CN110278284A (zh) * 2019-07-10 2019-09-24 中国民航信息网络股份有限公司 一种服务调用方法及装置
CN110489163A (zh) * 2018-05-15 2019-11-22 北京三快在线科技有限公司 远程过程调用的识别方法、装置、设备及存储介质
CN110798411A (zh) * 2018-08-03 2020-02-14 阿里巴巴集团控股有限公司 服务调用方法、流量调度方法及装置
CN113778658A (zh) * 2020-09-29 2021-12-10 北京沃东天骏信息技术有限公司 任务分配方法及装置、电子设备、存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101969399A (zh) * 2010-09-30 2011-02-09 北京神州泰岳软件股份有限公司 客户端调用服务的路由方法及系统
CN102185900A (zh) * 2011-04-18 2011-09-14 北京新媒传信科技有限公司 一种应用服务平台系统和一种开发应用服务的方法
CN103002047A (zh) * 2012-12-19 2013-03-27 上海斐讯数据通信技术有限公司 一种rpc式web服务架构方法
US20140130063A1 (en) * 2012-11-07 2014-05-08 Cloudcar, Inc. Systems and methods for low overhead remote procedure calls
CN104066200A (zh) * 2013-03-21 2014-09-24 北京三星通信技术研究有限公司 一种ue间端到端通信的实现方法及用户设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101969399A (zh) * 2010-09-30 2011-02-09 北京神州泰岳软件股份有限公司 客户端调用服务的路由方法及系统
CN102185900A (zh) * 2011-04-18 2011-09-14 北京新媒传信科技有限公司 一种应用服务平台系统和一种开发应用服务的方法
US20140130063A1 (en) * 2012-11-07 2014-05-08 Cloudcar, Inc. Systems and methods for low overhead remote procedure calls
CN103002047A (zh) * 2012-12-19 2013-03-27 上海斐讯数据通信技术有限公司 一种rpc式web服务架构方法
CN104066200A (zh) * 2013-03-21 2014-09-24 北京三星通信技术研究有限公司 一种ue间端到端通信的实现方法及用户设备

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110489163A (zh) * 2018-05-15 2019-11-22 北京三快在线科技有限公司 远程过程调用的识别方法、装置、设备及存储介质
CN110489163B (zh) * 2018-05-15 2021-10-19 北京三快在线科技有限公司 远程过程调用的识别方法、装置、设备及存储介质
CN110798411A (zh) * 2018-08-03 2020-02-14 阿里巴巴集团控股有限公司 服务调用方法、流量调度方法及装置
CN109947614A (zh) * 2018-11-28 2019-06-28 阿里巴巴集团控股有限公司 多机房依赖监控方法、装置、设备及计算机可读存储介质
CN110278284A (zh) * 2019-07-10 2019-09-24 中国民航信息网络股份有限公司 一种服务调用方法及装置
CN110278284B (zh) * 2019-07-10 2021-09-14 中国民航信息网络股份有限公司 一种服务调用方法及装置
CN113778658A (zh) * 2020-09-29 2021-12-10 北京沃东天骏信息技术有限公司 任务分配方法及装置、电子设备、存储介质

Also Published As

Publication number Publication date
CN106970843B (zh) 2020-07-24

Similar Documents

Publication Publication Date Title
CN106970843A (zh) 远程调用方法和装置
EP1315349B1 (en) A method for integrating with load balancers in a client and server system
CN108989372A (zh) 服务发现的方法、注册中心和设备
CN106105164A (zh) 代理拦截
CN1848778A (zh) 用于监控信令消息行进的方法和网络监控装置
US20070165615A1 (en) Apparatus and method for notifying communication network event in application server capable of supporting open API based on Web services
US10693706B2 (en) Method and apparatus of performing simultaneous multi-agent access for command execution through a single client
CN109040243A (zh) 一种报文处理方法及装置
US20080215752A1 (en) Service device, and switching network and switching method for the same
CN105871698B (zh) 一种即时通讯服务的管理方法与系统
CN103262563B (zh) 用于将电信网的功能集成到数据网中的方法
CN1874610B (zh) 调试电话呼叫的方法和系统
JP2004247916A (ja) Web連携対応SIPサービス制御システムおよび制御方法
CN109150844A (zh) 确定数字证书的方法、装置和系统
JP2010511236A (ja) ウェブ・サービス・エンドポイントを表すエンドポイント参照を変更する方法、装置およびコンピュータ・プログラム
CN106790647A (zh) 一种自适应服务管理的方法和系统
CN103856576A (zh) 通信系统和服务器
CN106534046A (zh) 一种拟态数据传输服务器及数据传输方法
JP2005236670A (ja) セッション確立、セッション確立処理装置及びプログラム
CN103546508B (zh) 信息同步系统和方法
KR100947114B1 (ko) 더미 메시지를 이용하여 웹 서비스의 품질 데이터를추출하는 방법
CN101843038B (zh) 管理网络中的网络组件的方法和网络组件
CN109120557A (zh) 一种智能路由器wan口的动态切换方法及系统
CA2455493A1 (en) Distributed service component systems
CN110324435A (zh) 一种网络请求处理方法及系统、入口及出口网络设备

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200923

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200923

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Patentee before: Alibaba Group Holding Ltd.