CN110336865A - 服务调用方法、装置、存储介质和电子设备 - Google Patents
服务调用方法、装置、存储介质和电子设备 Download PDFInfo
- Publication number
- CN110336865A CN110336865A CN201910540641.9A CN201910540641A CN110336865A CN 110336865 A CN110336865 A CN 110336865A CN 201910540641 A CN201910540641 A CN 201910540641A CN 110336865 A CN110336865 A CN 110336865A
- Authority
- CN
- China
- Prior art keywords
- service
- hop
- instance
- invocation request
- routing iinformation
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种服务调用方法、装置、电子设备和存储介质,本申请将路由字段在调用链上进行透传;调用链上的各个服务在调用目标服务标识对应的服务时,根据目标IP地址在该服务关联的多个服务实例中选择目标服务实例。这样调用的服务的过程可以根据请求头中的路由信息灵活的选择服务实例,不需要在各个部署服务的节点上配置该路由信息,避免繁琐的配置过程。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种服务调用方法、***、装置、存储介质和电子设备。
背景技术
为了执行业务功能,通常需要调用一系列服务来实现,服务调用通常会根据一定的顺序来实现多个服务的调用,调用时可以根据服务标识来指示调用哪个或那些服务。在服务部署中,一个服务通常会部署多个服务实例,根据不同的需求可以调用同一个服务下的不同服务实例。对于多个服务的调用,只有在调用时才会根据本地配置的路由信息确定究竟发往服务下的具体服务实例。而为了实现这种服务调用,需要在部署服务的节点上配置路由信息,然而部署服务的节点数量可能会很多以及路由信息可能会频繁变更,那么配置方式会很繁琐。
发明内容
为解决上述的技术问题,本申请提供一种服务调用方法、相关装置和存储介质,通过在请求头中携带路由信息实现在多服务实例中选择指定的服务实例,避免配置过程的繁琐。
第一方面,本申请提供了一种服务调用方法,包括:
获取服务调用请求;若所述服务调用请求携带路由字段,根据所述路由字段中包括的路由信息确定下一跳服务实例;其中,所述路由信息包括目标服务标识和目标IP地址,将所述路由字段透传给所述下一跳服务实例。
在一种可能的设计中,所述根据路由字段中携带的路由信息确定下一跳服务实例,包括:
确定下一跳服务的服务标识;
若下一跳服务的服务标识为所述目标服务标识;
在与下一跳服务关联的多个服务实例中选择目标IP地址指示的服务实例作为下一跳服务实例。
在一种可能的设计中,所述确定下一跳服务的服务标识包括:
确定响应所述服务调用请求的调用链;
根据当前服务的服务标识在所述调用链中查询下一服务的服务标识。
在一种可能的设计中,所述根据路由信息确定下一跳服务实例,还包括:
若所述下一跳服务的服务标识不为所述目标服务标识;
根据预先配置的路由信息在所述下一跳服务关联的多个服务实例中选择下一跳服务实例。
在一种可能的设计中,还包括:
若所述服务调用请求中未携带所述路由字段;
获取预先配置的路由信息,根据所述预先配置的路由信息在下一跳服务关联的多个服务实例中选择下一跳服务实例;
将所述服务调用请求发送给所述下一跳服务实例。
第二方面,本申请提供了一种服务调用方法,包括:
获取单元,用于获取服务调用请求;
确定单元,用于若所述服务调用请求中携带路由字段,根据所述路由字段中携带的路由信息确定下一跳服务实例;其中,所述路由信息包括目标服务标识和目标IP地址;
发送单元,用于将所述路由字段透传给所述下一跳服务实例。
本申请又一方面提供了一种装置,可以实现上述第一方面的服务调度方法。例如所述装置可以是芯片(如基带芯片,或通信芯片等)或者服务器。可以通过软件、硬件、或者通过硬件执行相应的软件实现上述方法。
在一种可能的实现方式中,所述装置的结构中包括处理器、存储器;所述处理器被配置为支持所述装置执行上述服务调用方法中相应的功能。存储器用于与处理器耦合,其保存所述装置必要的程序(指令)和/或数据。可选的,所述装置还可以包括通信接口用于支持所述装置与其他网元之间的通信。
在另一种可能的实现方式中,所述装置,可以包括执行上述方法中相应动作的单元模块。
在又一种可能的实现方式中,包括处理器和收发装置,所述处理器与所述收发装置耦合,所述处理器用于执行计算机程序或指令,以控制所述收发装置进行信息的接收和发送;当所述处理器执行所述计算机程序或指令时,所述处理器还用于实现上述方法。其中,所述收发装置可以为收发器、收发电路或输入输出接口。当所述装置为芯片时,所述收发装置为收发电路或输入输出接口。
当所述装置为芯片时,发送单元可以是输出单元,比如输出电路或者通信接口;接收单元可以是输入单元,比如输入电路或者通信接口。当所述装置为网络设备时,发送单元可以是发射器或发射机;接收单元可以是接收器或接收机。
本申请又一方面提供了一种装置,该装置包括:存储器和处理器;其中,所述存储器中存储一组程序代码,且所述处理器用于调用所述存储器中存储的程序代码,执行各方面所述的方法。
本申请的又一方面提了供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
本申请的又一方面提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
根据以上的实施例,获取服务调用请求,服务调用请求中携带路由字段,路由字段包括目标服务标识和目标IP地址;根据服务调用请求,确定响应该服务调用请求的调用链;将路由字段在调用链上进行透传;调用链上的各个服务在调用目标服务标识对应的服务时,根据目标IP地址在该服务关联的多个服务实例中选择目标服务实例。这样调用的服务的过程可以根据请求头中的路由信息灵活的选择服务实例,不需要在各个部署服务的节点上配置该路由信息,避免繁琐的配置过程。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A是本申请实施例提供的一种网络架构图;
图1B是本申请实施例提供的服务实例的部署示意图;
图2是本申请实施例提供的一种服务调用方法的流程示意图;
图3是本申请实施例提供的服务调用方法的另一流程示意图;
图4是本申请实施例提供的服务调用过程的原理示意图;
图5是本申请实施例提供的服务调用过程的另一原理示意图;
图6是本申请实施例提供的服务调用方法的交互示意图;
图7是本申请实施例提供的一种装置的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的***、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
图1A示出了可以应用于本申请的服务调用方法或服务调用装置的示例性***架构100。
如图1所示,***架构100可以包括终端设备101、终端设备102、终端设备103、网络104和服务器105。网络104用于在终端设备101~103之间提供通信链路的介质。网络104可以包括各种类型的有线通信链路或无线通信链路,例如:有线通信链路包括光纤、双绞线或同轴电缆的,无线通信链路包括蓝牙通信链路、无线保真(WIreless-FIdelity,Wi-Fi)通信链路或微波通信链路等。
用户可以使用终端101~103通过网络104与服务器105交互,以接收来自服务器105的消息或向服务器105发送消息。终端设备101~103上可以安装有各种通信客户端应用,例如:视频录制应用、视频播放应用、语音交互应用、搜索类应用、及时通信工具、邮箱客户端、社交平台软件等。
终端设备101~103可以是硬件,也可以是软件。当终端设备101~103为硬件时,可以是具有显示屏的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携式计算机和台式计算机等等。当终端设备101~103为软件时,可以是安装上上述所列举的电子设备中。其可以实现呈多个软件或软件模块(例如:用来提供分布式服务),也可以实现成单个软件或软件模块,在此不作具体限定。
当终端设备101~103为硬件时,其上还可以安装有显示设备,显示可以是各种能实现显示功能的设备,例如:阴极射线管显示器(Cathode raytubedisplay,简称CR)、发光二极管显示器(Light-emitting diode display,简称LED)、电子墨水屏、液晶显示屏(Liquid crystal display,简称LCD)、等离子显示面板(Plasma displaypanel,简称PDP)等。用户可以利用终端设备101~103上的显示设备,来查看显示的文字、图片、视频等信息。
需要说明的是,本申请实施例提供的服务调用方法一般由服务器执行,相应的,服务调用装置一般设置于服务器中。
需要说明的是,服务器105可以是硬件,也可以是软件。当服务器105为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器105为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块,在此不做具体限定。
应理解,图1中的终端设备、网络和服务器的数目仅是示意性的。根据实现需要,可以是任意数量的终端设备、网络和服务器。
其中,服务器105中部署有多种类型的服务,每种类型的服务关联有一个或多个版本的服务实例,多种类型的服务可能部署在同一个服务器上,也可能部署在不同的服务器上;同一个服务下关联的多个服务实例可能部署在同一个服务实例上,也可能部署在不同的服务实例上,本申请不作限制。服务实例表示执行该服务的功能的软件环境和硬件环境。终端设备可以向服务器105发送服务调用请求,请求调用服务器中的一个或多个服务来完成指定的功能,服务器执行该服务调用请求后向终端设备发送服务调用响应。
例如:参见图1B所示,服务器105中部署有服务A、服务B和服务C,服务A关联有服务实例A1和服务实例A2;服务B关联有服务实例B1、服务实例B2和服务实例B3,服务C关联有服务实例C1、服务实例C2和服务实例C3。终端设备调用依次调用服务A、服务B和服务C完成指定的功能时,由于不同的服务下部署有多个不同版本的服务实例。为实现特定的功能,需要在服务对应的多个服务实例中选择指定的服务实例。例如:对于相同的服务调用链:服务A→服务B→服务C,终端设备在一次服务调用中,需要依次调用服务实例A1、服务实例B1和服务实例C1来完成;终端设备在另一次服务调用中,需要依次调用服务实例A2、服务实例B3和服务实例C2来完成,为了实现不用需求的服务调用,目前的实现的方案是在部署服务的节点上配置路由信息,各个节点根据配置的路由信息进行服务调用请求的转发,然而部署服务的节点数量会很对以及频繁变动的需求会导致频繁的配置在各个节点上重配置路由信息,这种配置过程无疑会很繁琐。
为了说明本申请所述的技术方案,下面通过具体实施例来进行说明。
参见图2,图2是本申请实施例提供的服务调用方法的流程示意图,在本申请实施例中,所述方法包括:
S201、获取服务调用请求。
其中,服务调用请求可能是服务调用者,服务调用者可以是硬件也可以是软件,例如服务调用者为终端设备或应用程序。服务调用请求也可能是调用链中某个服务所在的服务器发送的,服务调用装置拦截该服务器发送的服务调用请求。服务调用请求中可携带该调用链,调用链表示执行特定功能的多个服务之间的调用顺序,调用链可以包括多个服务标识,以及多个服务标识指示的服务之间的调用先后顺序。例如:调用链可以表示A.com→B.com→C.com,A.com为服务A的域名,B.com为服务B的域名,C.com为服务C的域名,服务器依次调用服务A、服务B和服务C后完成指定的功能。
其中,服务调用请求中包括请求头和消息体,请求头的数量可以是多个,不同的请求头具有不同的身份标识,可以根据需要在服务调用请求中配置自定义的请求头,该自定义的请求头即路由字段。例如:服务调用请求的消息类型为HTTP(HyperText TransferProtocol,超文本传输协议)请求,HTTP请求中携带多个header,各个header具有一个身份标识位,路由字段的身份标识位为“00”,服务调用装置通过识别header中的身份标识位是否为“00”来确定是否存在路由字段。
S202、若服务调用请求中携带路由字段,根据路由字段中携带的路由信息确定下一跳服务实例。
其中,路由信息表示转发服务调用请求给下一跳服务实例的规则。服务调用装置根据服务调用请求确定下一跳服务,以及确定下一跳服务关联的一个或多个服务实例;若下一跳服务关联有多个服务实例,根据路由信息在多个服务实例中选择一个服务实例作为下一跳服务实例。
例如:路由信息为A.com=10.0.0.1,该路由信息表示调用域名为A.com的服务时,选择IP地址为10.0.0.1的服务实例作为下一跳服务实例。
S203、将路由字段透传给下一跳服务实例。
其中,将服务调用请求中包括当前服务实例的调用结果,服务调用装置将服务调用请求发给下一跳服务实例,下一跳服务实例接收到服务调用请求后,解析服务调用请求中是否存在路由字段,若存在路由字段,获取服务调用请求中的消息体中的当前服务实例的调用结果,根据当前服务实例的调用结果进行处理得到下一跳服务实例的调用结果,将下一跳服务实例的调用结果封装在服务调用请求的消息体中。此处的透传是指不对路由字段的内容进行任何处理,直接传输给下一跳服务实例。应理解,在传输路由字段的同时,服务调用请求中的消息体也会和路由字段发送给下一跳服务实例。
其中,下一跳服务实例如果是最后一跳服务实例时,将下一跳服务实例的调用结果封装在服务调用响应中,服务调用响应中携带调用结果,将服务调用响应发送给服务调用者。
实施本申请实施例,获取服务调用请求,服务调用请求中携带路由字段,路由字段包括目标服务标识和目标IP地址;根据服务调用请求,确定响应该服务调用请求的调用链;将路由字段在调用链上进行透传;调用链上的各个服务在调用目标服务标识对应的服务时,根据目标IP地址在该服务关联的多个服务实例中选择目标服务实例。这样调用的服务的过程可以根据请求头中的路由信息灵活的选择服务实例,不需要在各个部署服务的节点上配置该路由信息,避免繁琐的配置过程。
参见图3,为本申请实施例提供的一种服务调用方法的另一流程示意图,在本申请实施例中,所述方法包括:
S301、获取服务调用请求。
其中,服务调用请求可来自当前服务实例所在的服务器,也可以是来自于服务调用者(例如:终端设备)。对于服务调用请求来自于当前服务实例所在的服务器时,服务调用装置可以拦截来自该服务器的服务调用请求,服务调用请求还可以携带调用链,调用链表示服务调用者调用的多个服务之间的调用顺序,服务调用者根据调用链表示的调用顺序才能完整特定的功能。调用链可以包括多个服务标识,以及多个服务标识指示的服务之间的调用先后顺序。服务调用装置获取到服务调用请求后,可以根据服务调用请求确定调用链。
例如:调用链可以表示为A.com→B.com→C.com,A.com为服务A的域名,B.com为服务B的域名,C.com为服务C的域名,服务根据该调用链依次调用服务A、服务B和服务C后完成指定的功能。
其中,服务调用请求中包括请求头和请求体,请求头的数量可以是多个,服务调用请求中的请求头的最大数量是固定的,该最大数量可以根据实际需求而定。不同的请求头在服务调用请求中具有不同的位置,路由字段可以预先配置在服务调用请求中的指定位置或预先配置有指定的身份标识。路由字段为用户自定义的请求头,路由字段中包括路由信息,调用链对应的所有服务都会根据该路由信息进行路由转发。
S302、解析服务调用请求的请求头。
具体的,服务调用请求中携带请求头和消息体,服务调用装置解析服务调用请求中携带的请求头,判断该请求头是否为路由字段。
S303、服务调用请求是否携带路由字段。
在一个或多个实施例中,服务调用装置可识别服务调用请求中各个请求头的身份标识,在某个请求头的身份标识为预设身份标识的情况下,确定服务调用请求中携带路由字段。
例如:可以预先设定服务调用请求中最多可携带8个请求头,8个请求头的身份标识3个比特位的标识,不同的比特位对应不同的身份标识,路由字段的身份标识为“000”,服务调用装置识别出服务调用请求中携带的请求头的身份为“000”时,确定服务调用请求中携带路由字段。
在一个或多个实施例中,路由字段预先配置在服务调用请求的指定位置,服务调用装置可识别该指定位置上是否存在请求头,若存在,确定服务调用请求中携带路由字段。
例如:服务调用请求中携带8个请求头,每个请求头占用8个字节的存储空间,8个请求头分别为服务调用请求中对应一个相对地址空间,假设路由字段的相对地址空间为0X00~0XFF;服务调用装置相对地址空间0X00~0XFF中检测是否存在请求头,若服务调用装置在该相对地址空间中检测到请求头,确定服务调用请求中携带路由字段。若服务调用装置在该相对地址空间中未检测到请求头,确定服务调用请求中不携带路由字段。
其中,路由字段中的路由信息包括目标服务标识和目标IP地址,路由字段中的路由信息表示在调用目标服务标识指示的服务时,在该服务关联的多个服务实例中调用目标IP地址指示的服务实例。
在一个实施例中,路由字段中路由信息可包括多组目标服务标识和目标IP地址,在调用链中的任意一个服务调用目标服务标识对应的服务时,根据对应的目标IP地址确定服务实例。
S304、根据预先配置的路由信息确定下一跳服务实例。
其中,在服务调用请求中不携带路由字段的情况下,服务调用装置获取预先配置的路由信息,路由信息表示服务选择下一跳服务实例的规则,本次的路由信息可以根据实际需求而定,本申请不作限制。
在一个实施例中,预先配置的路由信息包括:获取待调用的服务关联的多个服务实例的版本号,根据版本号调用多个服务实例中最新的服务实例作为目标服务实例。
在一个实施例中,预先配置的路由信息包括:获取待调用的服务关联的多个服务实例的负荷状态信息,根据负荷状态信息调用多个服务实例中负荷最轻的服务实例作为下一跳服务实例。
在一个实施例中,预先配置的路由信息包括:获取待调用的服务关联的多个服务实例的链路状态信息,根据链路状态信息调用多个服务实例中链路质量最好的服务实例作为下一跳服务实例。
S305、将路由字段透传给下一跳服务实例。
其中,服务调用装置将当前的服务实例的调用结果封装在服务调用请求的消息体中,然后将服务调用请求发送给下一跳服务实例,服务调用请求中仍然会携带路由字段,路由字段会使用透传的方式发送给下一跳服务实例。透传表示服务调用装置不对路由字段进行处理,以透明的方式发送给下一跳服务实例,这样调用链所有服务实例获取到的路由字段都是相同的,不会发生变更。
S306、根据服务调用请求确定下一跳服务的服务标识。
其中,服务调用装置根据当前服务的服务标识和调用链确定出下一跳服务的服务标识,服务标识可以包括域名和服务名称,不同的服务具有不同的服务标识。
例如:根据S301的例子,服务调用装置根据服务调用请求中的调用链确定调用顺序为:A.com→B.com→C.com,当前服务的域名为A.com,那么根据调用链确定下一跳服务的域名为B.com。
S307、下一跳服务的服务标识是否为目标服务标识。
其中,在下一跳服务的服务标识为目标服务标识的情况下,执行S310;在下一跳服务的服务标识不为目标服务标识的情况下,执行S308。
例如:服务标识用域名来表示,下一跳服务的域名为B.com,路由字段中携带的路由信息中包括的目标服务标识为和目标IP地址表示为:B.com=10.0.0.1,B.com为目标服务标识,10.0.0.1为目标IP地址,则可以确定下一跳服务的服务标识和目标服务标识是相同的。
又例如:下一跳服务的域名为A.com,路由字段中携带的路由信息包括的目标服务标识和目标IP地址表示为:B.com=10.0.01,则可以确定下一跳服务的服务标识和目标服务标识不相同。
S308、根据预先配置的路由信息确定下一跳服务实例。
其中,在下一跳调用的服务的服务标识和目标服务标识不相同的情况下,服务调用装置获取预先配置的路由信息,根据预先配置的路由信息确定下一跳服务实例的方法可参照S304的描述,此处不再赘述。
S309、将路由字段发送给下一跳服务实例。
其中,S309的具体过程可参照S305的描述,此处不再赘述。
S310、确定与目标服务标识关联的多个服务实例。
具体的,服务调用装置预存储或预配置有目标服务标识和多个服务实例的IP地址之间的映射关系,例如:映射关系可以表示为:A.com=(10.0.0.1,10.0.0.2,10.0.0.3)。
S311、将多个服务实例中目标IP地址指示的服务实例作为下一跳服务实例。
例如:路由字段中携带的目标服务标识和目标IP地址表示为:A.com=10.0.0.1,那么服务调用装置根据S310的映射关系,调用域名为A.com且IP地址为10.0.01的服务实例,将该服务实例作为下一跳服务实例。
S312、将路由字段透传给下一跳服务实例。
其中,服务调用装置将当前服务实例的调用结果封装在服务调用请求的消息体中,然后将服务调用请求发送给下一跳服务实例,服务调用请求中仍然会携带路由字段,路由字段会使用透传的方式发送给下一跳服务实例。透传表示服务调用装置不对路由字段进行处理,以透明的方式发送给下一跳服务实例,这样调用链所有服务实例获取到的路由字段都是相同的。
下面就两个具体的实施例对本申请的服务调用方法的过程进行详细说明。
参见图4所示,服务调用者发出服务调用请求,根据服务调用请求确定调用链为:服务A→服务B→服务A→C,服务调用请求中存在路由字段,路由字段的路由信息表示为:A.com=10.0.0.1。服务调用***部署有服务A、服务B和服务C。服务A的域名为A.com,服务A关联的3个服务实例,服务实例A1的IP地址为10.0.0.1,服务实例A2的IP地址为10.0.0.2,服务实例A3的IP地址为10.0.0.3。服务B的域名为B.com,服务B的关联有3个服务实例,服务实例B1的IP地址为20.0.0.1,服务B2的IP地址为20.0.0.2,服务B3的IP地址为20.0.0.3;服务C的域名为C.com,服务C关联有3个服务实例,服务实例C1的IP地址为30.0.0.1,服务实例C2的IP地址为30.0.0.2。
服务调用者根据调用链确定下一跳服务为服务A,根据路由字段中的路由信息将服务调用请求发送给服务实例A1,服务实例A1接收服务调用请求后进行处理后得到调用结果,将调用结果封装在服务调用请求中,服务实例A1根据调用链确定下一跳服务为服务B,服务B和服务A不相同,服务实例A1根据预先配置的路由信息确定下一跳调用服务实例为服务实例B2,将服务调用请求发送给服务实例B2,服务实例B2接收来自服务调用请求,服务实例B2进行处理得到调用结果,将调用结果封装在服务调用请求中,服务实例B2根据调用链确定下一跳服务为服务A,根据路由字段中的路由信息将服务调用请求发送给服务实例A1,服务实例A1接收服务调用请求,服务实例A1进行处理后得到调用结果,将调用结果封装在服务调用请求中。服务实例A1根据调用链确定下一跳服务为服务C,根据预先配置的路由信息将服务调用请求发送给服务实例C1,服务实例C1接收来自服务实例A1的服务调用请求,服务实例C1进行处理后得到调用结果,服务实例C1为调用链确定为最后一跳,服务实例C1将调用结果封装在服务调用响应中,向服务调用者发送服务调用响应。
又例如:参见图5所示,服务调用者发出服务调用请求,根据服务调用请求确定调用链为:服务A→服务B→服务A→C,服务调用请求中存在路由字段,路由字段的路由信息表示为:A.com=10.0.0.3;B.com=20.0.0.2;C.com=30.0.0.1。服务调用***部署有服务A、服务B和服务C。服务A的域名为A.com,服务A关联的3个服务实例,服务实例A1的IP地址为10.0.0.1,服务实例A2的IP地址为10.0.0.2,服务实例A3的IP地址为10.0.0.3。服务B的域名为B.com,服务B的关联有3个服务实例,服务实例B1的IP地址为20.0.0.1,服务B2的IP地址为20.0.0.2,服务B3的IP地址为20.0.0.3;服务C的域名为C.com,服务C关联有3个服务实例,服务实例C1的IP地址为30.0.0.1,服务实例C2的IP地址为30.0.0.2。
服务调用者根据调用链确定下一跳服务为服务A,根据路由字段中的路由信息将服务调用请求发送给服务实例A3,服务实例A3接收服务调用请求后进行处理后得到调用结果,将调用结果封装在服务调用请求中,服务实例A1根据调用链确定下一跳服务为服务B,根据路由字段中携带的路由信息确定下一跳服务实例为服务实例B2,服务实例A3将服务调用请求发送给服务实例B2,服务实例B2接收来自服务调用请求,服务实例B2进行处理得到调用结果,将调用结果封装在服务调用请求中,服务实例B2根据调用链确定下一跳服务为服务A,根据路由字段中的路由信息将服务调用请求发送给服务实例A3,服务实例A3接收服务调用请求,服务实例A3进行处理后得到调用结果,将调用结果封装在服务调用请求中。服务实例A3根据调用链确定下一跳服务为服务C,根据路由字段中携带路由信息将服务调用请求发送给服务实例C1,服务实例C1接收来自服务实例A3的服务调用请求,服务实例C1进行处理后得到调用结果,服务实例C1为调用链确定为最后一跳,服务实例C1将调用结果封装在服务调用响应中,向服务调用者发送服务调用响应。
实施本申请实施例,获取服务调用请求,服务调用请求中携带路由字段,路由字段包括目标服务标识和目标IP地址;根据服务调用请求,确定响应该服务调用请求的调用链;将路由字段在调用链上进行透传;调用链上的各个服务在调用目标服务标识对应的服务时,根据目标IP地址在该服务关联的多个服务实例中选择目标服务实例。这样调用的服务的过程可以根据请求头中的路由信息灵活的选择服务实例,不需要在各个部署服务的节点上配置该路由信息,避免繁琐的配置过程。
上述图2至图5详细阐述了服务调用方法。相应的本申请实施例的一种装置的结构示意图。
请参见图6,图6是本申请实施例提供的一种装置6的结构示意图,该装置6可以包括获取单元601、确定单元602和发送单元603。
获取单元601,用于获取服务调用请求。
确定单元602,用于若所述服务调用请求中携带路由字段,根据所述路由字段中携带的路由信息确定下一跳服务实例;其中,所述路由信息包括目标服务标识和目标IP地址。
发送单元603,用于将所述路由字段透传给所述下一跳服务实例。
在一个或多个实施例中,确定单元602用于:
确定下一跳服务的服务标识;
若所述下一跳服务的服务标识为所述目标服务标识;
在与所述下一跳服务关联的所述多个服务实例中选择所述目标IP地址指示的服务实例作为所述下一跳服务实例。
在一个或多个实施例中,确定单元602用于确定下一跳服务的服务标识,包括:
确定响应所述服务调用请求的调用链;
根据当前服务的服务标识在所述调用链中查询下一服务的服务标识。
在一个或多个实施例中,确定单元602还用于:
若所述下一跳服务的服务标识不为所述目标服务标识;
根据预先配置的路由信息在所述下一跳服务关联的多个服务实例中选择下一跳服务实例。
在一个或多个实施例中,装置6还包括:
处理单元,用于若所述服务调用请求中未携带所述路由字段;
获取预先配置的路由信息,根据所述预先配置的路由信息在下一跳服务关联的多个服务实例中选择下一跳服务实例;
将所述服务调用请求发送给所述下一跳服务实例。
在一个或多个实施例中,所述路由字段中包括多组目标服务标识和目标IP地址。
在一个或多个实施例中,所述目标服务标识为域名或服务名称。
本申请实施例和图2和图3的方法实施例基于同一构思,其带来的技术效果也相同,具体过程可参照图2和图3的方法实施例的描述,此处不再赘述。
装置6可以是服务器或终端设备,所述装置6也可以为实现相关功能的现场可编程门阵列(field-programmable gate array,FPGA),专用集成芯片,***芯片(system onchip,SoC),中央处理器(central processorunit,CPU),网络处理器(networkprocessor,NP),数字信号处理电路,微控制器(micro controller unit,MCU),还可以采用可编程控制器(programmable logic device,PLD)或其他集成芯片。
图7为本申请实施例提供的一种装置结构示意图,以下简称装置7,装置7可以集成终端设备或服务器中,如图7所示,该装置7包括:存储器702、处理器701、输入装置703、输出装置704和通信接口。
存储器702可以是独立的物理单元,与处理器701、输入装置703和输出装置704可以通过总线连接。存储器702、处理器701、收发器703也可以集成在一起,通过硬件实现等。
存储器702用于存储实现以上方法实施例,或者装置实施例各个模块的程序,处理器701调用该程序,执行以上方法实施例的操作。
输入装置702包括但不限于键盘、鼠标、触摸面板、摄像头和麦克风;输出装置包括但限于显示屏。
通信接口用于收发各种类型的消息,通信接口包括但不限于无线接口或有线接口。
可选地,当上述实施例的服务调用方法中的部分或全部通过软件实现时,装置也可以只包括处理器。用于存储程序的存储器位于装置之外,处理器通过电路/电线与存储器连接,用于读取并执行存储器中存储的程序。
处理器可以是中央处理器(central processing unit,CPU),网络处理器(networkprocessor,NP)或者CPU和NP的组合。
处理器还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmablelogic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complexprogrammable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
存储器可以包括易失性存储器(volatile memory),例如存取存储器(random-access memory,RAM);存储器也可以包括非易失性存储器(non-volatile memory),例如快闪存储器(flashmemory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器还可以包括上述种类的存储器的组合。
本申请实施例还提供了一种计算机存储介质,存储有计算机程序,该计算机程序用于执行上述实施例提供的服务调用方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例提供的服务调用方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
Claims (10)
1.一种服务调用方法,其特征在于,包括:
获取服务调用请求;
若所述服务调用请求中携带路由字段,根据所述路由字段中携带的路由信息确定下一跳服务实例;其中,所述路由信息包括目标服务标识和目标IP地址;
将所述路由字段透传给所述下一跳服务实例。
2.根据权利要求1所述的方法,其特征在于,所述根据所述路由字段中携带的路由信息确定下一跳服务实例,包括:
确定下一跳服务的服务标识;
若所述下一跳服务的服务标识为所述目标服务标识;
在与所述下一跳服务关联的所述多个服务实例中选择所述目标IP地址指示的服务实例作为所述下一跳服务实例。
3.根据权利要求2所述的方法,其特征在于,所述确定下一跳服务的服务标识,包括:
确定响应所述服务调用请求的调用链;
根据当前服务的服务标识在所述调用链中查询下一服务的服务标识。
4.根据权利要求2或3所述的方法,其特征在于,所述根据路由信息确定下一跳服务实例,还包括:
若所述下一跳服务的服务标识不为所述目标服务标识;
根据预先配置的路由信息在所述下一跳服务关联的多个服务实例中选择下一跳服务实例。
5.根据权利要求1或2所述的方法,其特征在于,还包括:
若所述服务调用请求中未携带所述路由字段;
获取预先配置的路由信息,根据所述预先配置的路由信息在下一跳服务关联的多个服务实例中选择下一跳服务实例;
将所述服务调用请求发送给所述下一跳服务实例。
6.根据权利要求5所述的方法,其特征在于,所述路由字段中包括多组目标服务标识和目标IP地址。
7.根据权利要求6所述的方法,其特征在于,所述目标服务标识为域名或服务名称。
8.一种服务调度装置,包括:
获取单元,用于获取服务调用请求;
确定单元,用于若所述服务调用请求中携带路由字段,根据所述路由字段中携带的路由信息确定下一跳服务实例;其中,所述路由信息包括目标服务标识和目标IP地址;
发送单元,用于将所述路由字段透传给所述下一跳服务实例。
9.一种电子设备,其特征在于,包括处理器和存储器,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器用于调用所述程序指令,执行如权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-7任一项所述的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910540641.9A CN110336865A (zh) | 2019-06-21 | 2019-06-21 | 服务调用方法、装置、存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910540641.9A CN110336865A (zh) | 2019-06-21 | 2019-06-21 | 服务调用方法、装置、存储介质和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110336865A true CN110336865A (zh) | 2019-10-15 |
Family
ID=68142548
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910540641.9A Pending CN110336865A (zh) | 2019-06-21 | 2019-06-21 | 服务调用方法、装置、存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110336865A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110913025A (zh) * | 2019-12-31 | 2020-03-24 | ***股份有限公司 | 服务调用方法、装置、设备及介质 |
CN110995780A (zh) * | 2019-10-30 | 2020-04-10 | 北京文渊佳科技有限公司 | Api调用方法、装置、存储介质及电子设备 |
CN111786825A (zh) * | 2020-06-23 | 2020-10-16 | 京东数字科技控股有限公司 | 动态配置接口服务的方法、装置、***及存储介质 |
CN112532523A (zh) * | 2020-11-23 | 2021-03-19 | 福建顶点软件股份有限公司 | 一种基于子服务路由的进程内调度方法和存储设备 |
CN112953982A (zh) * | 2019-11-26 | 2021-06-11 | 腾讯科技(深圳)有限公司 | 一种服务处理的方法、服务配置的方法以及相关装置 |
CN112968954A (zh) * | 2021-02-10 | 2021-06-15 | 中国工商银行股份有限公司 | 一种服务迁移的流量控制方法、服务器及*** |
CN112995269A (zh) * | 2020-12-10 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 数据处理方法、计算机设备以及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150319089A1 (en) * | 2014-04-30 | 2015-11-05 | International Business Machines Corporation | Techniques for realizing service chaining |
CN105229968A (zh) * | 2013-05-29 | 2016-01-06 | 瑞典爱立信有限公司 | 对于服务链的带宽感知服务布置的方法和*** |
CN107231412A (zh) * | 2017-05-22 | 2017-10-03 | 浙江工商大学 | 一种基于虚拟网映射的服务路径构造方法 |
CN108377262A (zh) * | 2017-01-30 | 2018-08-07 | 汤姆逊许可公司 | 管理网络设备处的服务链的方法、对应的网络设备 |
-
2019
- 2019-06-21 CN CN201910540641.9A patent/CN110336865A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105229968A (zh) * | 2013-05-29 | 2016-01-06 | 瑞典爱立信有限公司 | 对于服务链的带宽感知服务布置的方法和*** |
US20150319089A1 (en) * | 2014-04-30 | 2015-11-05 | International Business Machines Corporation | Techniques for realizing service chaining |
CN105099960A (zh) * | 2014-04-30 | 2015-11-25 | 国际商业机器公司 | 用于实现服务链的方法和装置 |
CN108377262A (zh) * | 2017-01-30 | 2018-08-07 | 汤姆逊许可公司 | 管理网络设备处的服务链的方法、对应的网络设备 |
CN107231412A (zh) * | 2017-05-22 | 2017-10-03 | 浙江工商大学 | 一种基于虚拟网映射的服务路径构造方法 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110995780A (zh) * | 2019-10-30 | 2020-04-10 | 北京文渊佳科技有限公司 | Api调用方法、装置、存储介质及电子设备 |
CN112953982A (zh) * | 2019-11-26 | 2021-06-11 | 腾讯科技(深圳)有限公司 | 一种服务处理的方法、服务配置的方法以及相关装置 |
CN110913025B (zh) * | 2019-12-31 | 2022-06-24 | ***股份有限公司 | 服务调用方法、装置、设备及介质 |
CN110913025A (zh) * | 2019-12-31 | 2020-03-24 | ***股份有限公司 | 服务调用方法、装置、设备及介质 |
US11677815B2 (en) | 2019-12-31 | 2023-06-13 | China Unionpay Co., Ltd. | Service invoking method, device, apparatus and medium |
CN111786825A (zh) * | 2020-06-23 | 2020-10-16 | 京东数字科技控股有限公司 | 动态配置接口服务的方法、装置、***及存储介质 |
CN111786825B (zh) * | 2020-06-23 | 2023-06-27 | 京东科技控股股份有限公司 | 动态配置接口服务的方法、装置、***及存储介质 |
CN112532523A (zh) * | 2020-11-23 | 2021-03-19 | 福建顶点软件股份有限公司 | 一种基于子服务路由的进程内调度方法和存储设备 |
CN112532523B (zh) * | 2020-11-23 | 2021-11-12 | 福建顶点软件股份有限公司 | 一种基于子服务路由的进程内调度方法和存储设备 |
CN112995269B (zh) * | 2020-12-10 | 2022-01-11 | 腾讯科技(深圳)有限公司 | 数据处理方法、计算机设备以及可读存储介质 |
CN112995269A (zh) * | 2020-12-10 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 数据处理方法、计算机设备以及可读存储介质 |
CN112968954B (zh) * | 2021-02-10 | 2023-04-07 | 中国工商银行股份有限公司 | 一种服务迁移的流量控制方法、服务器及*** |
CN112968954A (zh) * | 2021-02-10 | 2021-06-15 | 中国工商银行股份有限公司 | 一种服务迁移的流量控制方法、服务器及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110336865A (zh) | 服务调用方法、装置、存储介质和电子设备 | |
CN104471957B (zh) | 利用使用各种参数的同时数据串流的传感器 | |
CN109995877A (zh) | 信息推送方法和装置 | |
CN109154890A (zh) | 软件更新装置及软件更新*** | |
CN112039796B (zh) | 数据包传输方法和装置、存储介质和电子设备 | |
CN108920376A (zh) | 应用程序的测试方法、装置及介质 | |
CN110311983A (zh) | 服务请求的处理方法、装置、***、电子设备及存储介质 | |
CN110263565A (zh) | 用于调用服务的方法和装置 | |
CN110209315A (zh) | 用户界面中字符的显示方法、装置、电子设备及存储介质 | |
CN110471848A (zh) | 一种动态返回报文的方法和装置 | |
WO2014112727A1 (ko) | 단축 url의 관리 방법, 관리 장치 및 그 관리를 수행하는 컴퓨터 프로그램을 저장한 저장 매체 | |
CN108805379A (zh) | 支持多模式履约流程的***和方法 | |
CN110377440A (zh) | 信息处理方法和装置 | |
CN110392002A (zh) | 报文处理方法、装置、设备及可读存储介质 | |
CN110505074A (zh) | 一种应用模块化集成方法和装置 | |
CN110879729B (zh) | 直播间道具配置方法、装置、可读介质及电子设备 | |
CN104348583A (zh) | 一种信息处理方法及电子设备 | |
CN110768903A (zh) | 优化网络连接的方法、装置、终端及存储介质 | |
CN108733614A (zh) | 数据传输***、方法和装置 | |
CN108959636A (zh) | 数据处理方法、装置、***、计算机可读介质 | |
CN113254235A (zh) | 一种多测试环境下的消息传递方法及装置 | |
CN112152879A (zh) | 网络质量确定方法、装置、电子设备和可读存储介质 | |
CN108989157A (zh) | 用于智能设备控制的方法、装置 | |
CN109698774A (zh) | 用于监测设备工作状态的方法及装置 | |
EP4296922A1 (en) | Method and apparatus for determining logistics product, and electronic device and computer-readable medium |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191015 |