CN110311900A - 一种服务调用方法、装置、电子设备及存储介质 - Google Patents
一种服务调用方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN110311900A CN110311900A CN201910530234.XA CN201910530234A CN110311900A CN 110311900 A CN110311900 A CN 110311900A CN 201910530234 A CN201910530234 A CN 201910530234A CN 110311900 A CN110311900 A CN 110311900A
- Authority
- CN
- China
- Prior art keywords
- service
- instance
- available
- isp
- service instance
- 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
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
-
- 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/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
-
- 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
Abstract
本申请公开了一种服务调用方法,用以解决现有服务调用技术中调用的服务实例不可用,导致服务调用失败的问题。方法包括:接收服务消费者的服务调用请求;从服务提供者提供的可用服务实例中选择与服务调用请求对应的目标服务实例,其中,所述可用服务实例是基于服务提供者发送的服务心跳信息从服务实例配置表中存储的已注册服务实例中确定的;将目标服务实例的服务地址发送给服务消费者,以便服务消费者根据服务地址进行服务调用。本申请还公开一种服务调用装置、计算设备及计算机可读存储介质。
Description
技术领域
本申请涉及应用技术领域,尤其涉及一种服务调用方法、装置、电子设备及计算机可读存储介质。
背景技术
在企业级的应用场景中,应用的功能越来越多样化,一个应用往往集成有多个功能,从而形成一个应用的多个服务。通常,不同服务由于业务复杂度或业务量的不同,可能会有不止一个的实例,因此,在服务调用的过程中,如何确定调用目标服务的服务地址成为亟需解决的问题。目前确定服务地址的方案有如下三种:
一是通过硬编码的方式确定,预先将各服务地址编写到配置文件中,当调用服务时,可以通过访问配置文件的方式,确定调用服务的服务地址。
二是通过硬编码负载均衡设备或者软件确定,比如通过硬编码虚拟服务器(LinuxVirtual Server,LVS)等负载均衡设备实现,具体地,只需对LVS的地址进行硬编码,当调用服务时,LVS可以根据预先配置的负载均衡策略确定各调用服务的服务地址。
三是通过域名查找的方式确定,具体地,将服务配置到域名系统中,当调用服务时,可以通过解析域名获取服务地址列表,进而确定调用服务的服务地址。
然而,由于上述方式通常只支持无状态服务(即接收到服务调用请求后,根据负载均衡策略随机选取一个服务实例,响应服务调用请求),无法附加服务的状态信息,若调用服务停止、不可用,则可能导致服务调用失败,难以实现故障转移。
发明内容
本申请实施例提供一种服务调用方法,用以解决现有服务调用技术中,调用的服务实例不可用导致服务调用失败的问题。
本申请实施例还提供一种工服务调用装置,一种计算设备以及一种计算机可读存储介质。
本申请实施例采用下述技术方案:
第一方面,本申请实施例提供了一种服务调用方法,所述方法包括:
接收服务消费者的服务调用请求;
从服务提供者提供的可用服务实例中选择与所述服务调用请求对应的目标服务实例,其中,所述可用服务实例是基于服务提供者发送的服务心跳信息从服务实例配置表中存储的已注册服务实例中确定的;
将所述目标服务实例的服务地址发送给所述服务消费者,以便所述服务消费者根据所述服务地址进行服务调用。
第二方面,本申请实施例提供了一种服务调用装置,所述装置包括接收模块,选择模块和发送模块,其中:
接收模块,用于接收服务消费者的服务调用请求;
选择模块,用于从服务提供者提供的可用服务实例中选择与所述服务调用请求对应的目标服务实例,其中,所述可用服务实例是基于服务提供者发送的服务心跳信息从服务实例配置表中存储的已注册服务实例中确定的;
发送模块,用于将所述目标服务实例的服务地址发送给所述服务消费者,以便所述服务消费者根据所述服务地址进行服务调用。
第三方面,本申请实施例提供了一种计算设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的任意一种服务调用方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的任意一种服务调用方法的步骤。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
采用本申请实施例提供的方法,增加了服务心跳机制,使得可以基于服务心跳信息从服务配置表中选取出可用服务实例,这样一来,当接收到服务消费者的服务调用请求后,可以从可用服务实例中选择出与服务调用请求对应的目标服务实例,而由于可用服务实例中的服务实例均是处于可用状态的,因此,保证了被调用服务实例的可用性,从而解决了现有服务调用技术的问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1a为本申请实施例提供的一种具备服务调用功能的服务器的服务架构示意图;
图1b为本申请实施例提供的服务调用方法的实现流程示意图;
图2为本申请实施例提供的服务调用方法的实现流程示意图;
图3为本申请实施例提供服务调用装置的具体结构示意图;
图4为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
实施例1
为解决现有服务调用技术中,调用的服务实例不可用,导致服务调用失败的问题,本申请实施例提供一种服务调用方法。
该方法的执行主体,可以是各种类型的电子设备,比如可以是台式计算机、膝上型计算机、笔记本电脑、台式计算机、便携式媒体播放器、计步器、导航装置、蜂窝电话、智能电话、智能手表、可佩戴计算设备或可植入计算设备等用户终端,也可以是服务器等。
为便于描述,本申请实施例以该方法的执行主体为具备服务调用功能的服务器为例,对该方法进行介绍。本领域技术人员可以理解,本申请实施例以具备服务调用功能的服务器为例对方法进行介绍,仅是一种示例性说明,并不对本方案对应的权利要求保护范围构成限制。
为了方便描述,后续将具备服务调用功能的服务器简称为服务器。
以下对服务器的服务架构作简单说明:
如图1a所示,本申请中,可以按照服务器的实现功能,将服务器分为持久化层、服务策略层、远程过程调用协议(Remote Procedure Call Protocol,RPC)适配层、服务注册/发现接口以及连接池&context参数等五部分。
其中,持久化层可以用于存储服务实例的配置信息,例如,服务实例的服务名称、服务地址、服务功能信息、服务过期时间、通信协议、服务接口等。
需要说明的是,服务实例的服务名称,也即服务实例的标识信息,用于唯一标识服务实例;服务实例的服务名称,可以根据服务实例能够实现的功能进行命名,例如,某一服务实例的功能是计时,则可以根据其计时功能将该微服务命名为jishifuwushili,同时,当一个计时服务有多个服务实例时,可以结合数字编号进行命名,例如,命名为jishifuwushili-1和jishifuwushili-2。服务地址,即该服务实例的IP地址;服务实例的功能信息,用于指示服务实例的功能,服务实例功能信息也可以用功能标识进行表示,例如,凡是提供计时功能的服务实例,其功能标识为jsfw,凡是提供蜂鸣功能的服务实例,其功能标识为nzfw。
持久化层中包括用于存储服务实例配置信息的存储中间件ETCD、Consul以及Zookeeper。
其中,ETCD、Consul以及Zookeeper均是分布式协调框架,可以实现服务注册。服务器启动后与ETCD、Consul以及Zookeeper中的任意一种分布式协调框架建立长连接,用于存储与服务实例相关的元数据。
服务注册接口,可以用于对服务提供者的服务实例进行注册。
服务发现接口,可以用于查找与服务调用请求相对应的服务实例。
服务策略层,可以用于实现服务调用;其中,服务策略层具体包括:配置下发模块、服务注册模块、服务订阅模块、服务探活模块以及各种服务调用策略模块,比如,负载均衡策略模块、高可用策略模块。
RPC适配层,可以用于对远程过程调用协议进行适配。
连接池&context参数,用于保证服务器与分布式协调框架的长连接。
具体地,本申请实施例提供的该方法的实现流程如图1b所示,包括如下步骤:
步骤11,接收服务消费者的服务调用请求;
其中,服务调用请求中可以包括用于唯一标识需求服务实例的服务信息,比如,需求服务实例的服务名称等,以便服务器根据服务调用请求,确定目标服务实例。所述服务实例的服务名称,可以是根据服务实例能够实现的功能进行命名的,例如,某一服务实例的功能是计时,则可以根据其计时功能将该微服务命名为jishifuwushili,同时,当一个计时服务有多个服务实例时,可以结合数字编号进行命名,例如,命名为jishifuwushili-1和jishifuwushili-2。
步骤12,从服务提供者提供的可用服务实例中选择与服务调用请求对应的目标服务实例,其中,所述可用服务实例是基于服务提供者发送的服务心跳信息从服务实例配置表中存储的已注册服务实例中确定的;
需要说明的是,服务实例配置表中还可以存储但不限于已注册的各服务实例的服务名称、服务地址、服务功能信息、服务过期时间、通信协议、服务接口等信息。
本申请实施例中,从服务提供者提供的可用服务实例中选择与服务调用请求对应的目标服务实例之前,还包括:
接收服务提供者发送的服务心跳信息;
其中,服务心跳信息可以由数字和/或字符和/或字母组成。
确定服务心跳信息的发送时间以及预设发送时间间隔。
其中,预设发送时间间隔通常可以通过服务实例过期时间(Time to Live,TTL)确定。
在一个实施例中,步骤12具体可以通过如下方法实现:
步骤121,基于所述服务调用请求,确定所需调用服务的服务名称;
例如,服务器接收到服务调用请求后,可以通过服务发现接口,比如,ServiceConfig getService Config(String ServiceName),基于服务调用请求,确定所需调用服务的服务名称。
步骤122,根据服务名称,从可用服务实例中查找与服务名称匹配的至少一个服务实例;
例如,假设确定所需调用服务的服务名称为“test”,则可以继续通过服务发现接口,比如ServiceConfig getService Config,从可用服务实例中查找与服务名称匹配的至少一个服务实例。
具体地,例如可以是在服务发现接口输入对应的查询请求ServiceDiscovery/getService Config?ServiceName=“test”。
或者,本申请实施例中还可以基于RESTful接口,根据服务名称,从可用服务实例中获取与服务名称匹配的至少一个服务实例。
需要说明的是,在执行步骤122之前,可以采用如下方式先从服务实例配置表中确定出可用服务实例:
首先,根据服务提供者提供的服务实例的配置信息进行服务注册,得到服务实例配置表;
其中,服务实例的配置信息可以但不限于包括服务实例的服务名称、服务地址、服务功能信息、服务过期时间、通信协议、服务接口信息等。
本申请实施例中,可以但不限于通过服务器的服务注册接口或者软件开发工具包,比如(Software Development Kit,SDK)的注册接口,对服务提供者提供的服务实例的配置信息进行服务注册。
此外,由于服务提供者提供的服务实例可能会由于服务器重启、服务器扩容等情况,出现服务实例信息丢失的问题,因此,本申请实施例中,为避免上述情况,对服务提供者提供的服务实例的配置信息进行服务注册时,可以将服务实例的配置信息存储至服务器的持久层中,以便可以实时备份、维护服务实例的服务信息。
其中,用于存储服务实例配置信息的存储中间件,例如可以但不限于是ETCD、Consul、Zookeeper等,通过这些存储中间件,具备调用功能的服务器可以实现水平扩展。
在一个实施例中,为了方便后续存储中间件的扩展替换,还可以将服务注册接口、服务发现接口进行抽象化。
其次,基于服务提供者发送的服务心跳信息,确定服务实例配置表中各已注册服务实例当前的状态;其中,状态包括可用状态和不可用状态;
其中,可用状态即可以保证服务实例正常工作,能够进行服务调用的状态;反之,即为不可用状态,例如,服务实例下线、服务实例停用、服务实例过期/失效、服务实例异常等状态即可称为不可用状态。
需要说明的是,本申请实施例中,基于服务提供者发送的服务心跳信息,确定服务实例配置表中各已注册服务实例当前的状态,可以对服务实例配置表中的服务实例的状态进行定时更新,以保证服务实例配置表中的服务实例均可用,避免调用过程中出现由于调用服务实例处于不可用状态,而仍然对该服务实例进行调用,从而导致服务调用失败的问题。。
本申请实施例中,确定服务实例的状态时,例如,可以基于服务提供者发送的服务心跳信息,通过判断服务心跳信息中的发送时间间隔是否超过预设发送时间间隔,进而确定服务实例配置表中各服务实例当前的状态。
具体地,若服务心跳信息中的发送时间间隔超过预设发送时间间隔,则确定服务心跳信息对应的服务实例当前处于不可用状态;
若服务心跳信息中的发送时间间隔未超过预设发送时间间隔,则确定服务心跳信息对应的服务实例当前处于可用状态。
例如,假设服务提供者A上次发送服务心跳的时间为"2018-07-3119:20:00",预设发送时间间隔TTL为10秒,则若服务提供者A下次发送服务心跳的时间超过2018-07-31 19:20:10,则判断服务提供者A对应的服务实例处于不可用状态。
此外,确定服务实例配置表中各服务实例当前的状态时,为了避免由于网络抖动,使得服务器未接收到服务提供者发送的服务心跳信息,进而误判断服务实例状态的问题,本申请实施例中,确定服务实例状态时,还可以结合服务器在预设发送时间间隔内未接收到服务心跳信息的次数进行判断,当连续未接收到服务心跳信息的次数超过预设次数时,再确定服务心跳信息对应的服务实例当前处于不可用状态。
最后,根据各已注册服务实例当前的状态,从服务实例配置表中确定当前处于可用状态的服务实例。
在一个实施例中,可以将处于不可用状态的服务实例从服务实例配置表中移除,从而确定出当前处于可用状态的服务实例。
具体地,例如服务器可以预先通过Zookeeper选举产生Leader节点,Leader节点将所有处于不可用状态的服务实例从服务配置表中移除。
需要说明的是,上述通过Zookeeper选举产生Leader节点,并由Leader节点将所有处于不可用状态的服务实例从服务配置表中移除,仅是一种示例性说明,并不对本申请实施例造成任何限定。本申请实施例中,比如还可以通过ETCD、Consul等存储中间件将处于不可用状态的服务实例从服务配置表中移除。
其中,将处于不可用状态的服务实例从服务实例配置表中移除可以是暂时性的,等到服务实例的服务状态恢复正常时,再将该服务实例加入服务实例配置表中。
具体地,可以采用服务实例探活策略持续探活移除的服务实例的服务状态,直到该服务实例的服务状态恢复正常时,再将该服务实例加入服务实例配置表中。
步骤123,根据负载均衡策略,从与所述服务名称匹配的至少一个服务实例中选择一个作为所述目标服务实例。
其中,可用服务实例是基于服务提供者发送的服务心跳信息从服务实例配置表中确定的可用服务实例。
执行步骤122后,若从可用服务实例中查找到多个与服务名称匹配的可用服务实例,则可以通过服务发现接口从服务实例配置表获取多个与服务名称匹配的可用服务实例的配置信息,然后根据负载均衡策略以及可用服务实例的配置信息,选择一个与服务调用请求对应的目标服务实例。
例如,沿用上例,假设在服务发现接口输入对应的查询请求ServiceDiscovery/getService Config?ServiceName=“test”后,服务发现接口返回与目标服务实例的服务名称匹配的可用服务实例test1、test2,以及对应的配置信息:
则可以根据负载均衡策略,即服务实例对应的权重,选择test1作为目标服务实例。
本申请中,根据负载均衡策略以及可用服务实例的配置信息,从多个与服务名称匹配的可用服务实例中,选择一个与服务调用请求对应的目标服务实例的方式,可以节约服务器的资源,保证其他服务消费者调用同样服务名称的服务实例时,还有剩余的可用服务实例可以被调用。
或者,在一个实施例中,若根据服务名称,从可用服务实例中只查找一个与服务名称匹配的服务实例,则可以直接将该可用服务实例确定为与服务调用请求对应的目标服务实例。
步骤13,将目标服务实例的服务地址发送给服务消费者,以便服务消费者根据服务地址进行服务调用。
本申请实施例中,通过步骤12从可用服务中选择出与服务调用请求对应的目标服务实例后,可以通过持久层从服务实例配置表中查找出与该目标服务实例对应的服务地址,并将该服务地址发送给服务消费者,以便服务消费者根据服务地址进行服务调用。
采用本申请实施例提供的方法,增加了服务心跳机制,使得可以基于服务心跳信息从服务配置表中选取出可用服务实例,这样一来,当接收到服务消费者的服务调用请求后,可以从可用服务实例中选择出与服务调用请求对应的目标服务实例,而由于可用服务实例中的服务实例均是处于可用状态的,因此,保证了被调用服务实例的可用性,从而解决了现有服务调用技术的问题。
实施例2
为解决现有服务调用技术中,由于无法附加服务实例的状态信息,因此,若调用的服务实例不可用,则可能导致服务调用失败,难以实现故障转移的问题,本申请实施例提供了一种服务调用方法的具体实施案例之一,实施流程如图2所示。
本申请实施例提供的服务调用方法中,包括两部分:服务注册、服务发现。其中,执行主体为具备调用功能的服务器,为方便描述以下统称为服务中心。
其中,服务中心包括路由器Db、服务注册接口、存储中间件ETCD、Consul、Zookeeper等组件。
步骤21,通过注册接口,将服务提供者对应的服务实例注册到注册中心;图2中简单描述为将服务提供者对应的服务实例注册到注册中心。
本申请实施例中,服务注册模块可以基于ETCD、Consul、Zookeeper中任意一种框架自动注册服务。其中,该服务注册模块对旧代码无侵入性,适用于ETCD、Consul、Zookeeper中任意一种框架的系统,具有普适性,提高了系统重构的安全性,减少了工作人员的开发量。
步骤22,接收服务提供者定时发送服务心跳请求,并且根据服务心跳请求确定服务提供者对应的服务实例当前的状态;图2中,为方便描述简称为接收服务提供者定时发送服务心跳请求。
本申请实施例中,通过添加服务心跳机制,确定服务提供者对应的服务实例当前的状态,可以保证服务的高可用。
其中,根据服务心跳请求,确定服务提供者对应的服务实例当前的状态的具体步骤可以参照实施例1的相关部分,此处不再赘述。
步骤23,接收服务消费者发送的服务调用请求,并根据服务调用请求从可用服务配置信息表中确定与服务调用请求对应的可用服务实例,图中为方便描述简称为根据负载均衡策略,选择目标服务实例;具体地,可以根据如下步骤实现:
步骤231,确定服务调用请求中所需调用服务的服务名称;
例如,服务器接收到服务调用请求后,可以通过服务发现接口,比如,ServiceConfig getService Config(String ServiceName),确定服务调用请求中所需调用服务的服务名称。
步骤232,根据服务名称,从可用服务实例中查找与服务名称匹配的至少一个服务实例;
例如,假设确定目标服务实例的服务名称为“test”,则可以继续通过服务发现接口,比如ServiceConfig getService Config,从可用服务实例中查找与服务名称匹配的至少一个服务实例。
具体地,例如可以是在服务发现接口输入对应的查询请求ServiceDiscovery/getService Config?ServiceName=“test”。
或者,本申请实施例中还可以基于RESTful接口,根据服务名称,从可用服务实例中获取与服务名称匹配的至少一个服务实例。
步骤24,根据负载均衡策略,从与所需调用服务的服务名称匹配的至少一个可用服务实例中选择一个与服务调用请求对应的作为目标服务实例。
步骤25,建立服务器与分布式协调框架的长连接,并通过连接将目标服务实例对应的服务地址发送给服务消费者,以便服务消费者进行服务调用。
采用本申请实施例提供的方法,增加了服务心跳机制,使得可以基于服务心跳信息从服务配置表中选取出可用服务实例,这样一来,当接收到服务消费者的服务调用请求后,可以从可用服务实例中选择出与服务调用请求对应的目标服务实例,而由于可用服务实例中的服务实例均是处于可用状态的,因此,保证了被调用服务实例的可用性,从而解决了现有服务调用技术的问题。
实施例3
为解决现有服务调用技术中,由于无法附加服务实例的状态信息,因此,若调用的服务实例不可用,则可能导致服务调用失败,难以实现故障转移的问题,本申请实施例提供一种服务调用装置30,该装置的具体结构示意图如图3所示,包括接收模块31、选择模块32以及发送模块33。各模块的功能如下:
接收模块31,用于接收服务消费者的服务调用请求;
选择模块32,用于从服务提供者提供的可用服务实例中选择与所述服务调用请求对应的目标服务实例,其中,所述可用服务实例是基于服务提供者发送的服务心跳信息从服务实例配置表中存储的已注册服务实例中确定的;
发送模块33,用于将所述目标服务实例的服务地址发送给所述服务消费者,以便所述服务消费者根据所述服务地址进行服务调用。
本申请实施例中,选择模块具体包括注册单元、第一确定单元以及第二确定单元。其中,各单元的功能如下:
注册单元,用于根据所述服务提供者的服务实例的配置信息进行服务注册,得到所述注册后的服务实例配置表;
第一确定单元,用于基于所述服务提供者发送的服务心跳信息,确定所述服务实例配置表中各已注册服务实例当前的状态;其中,所述状态包括可用状态和不可用状态;
具体地,基于服务提供者发送的所述服务心跳信息,判断服务心跳信息中的发送时间间隔是否超过预设发送时间间隔;
若是,则确定服务心跳信息对应的服务实例当前处于不可用状态;
若否,则确定服务心跳信息对应的服务实例当前处于可用状态。
第二确定单元,用于根据所述各已注册服务实例当前的状态,从所述服务实例配置表中确定当前处于可用状态的服务实例。
本申请实施例中,选择模块,具体用于:
确定服务调用请求中所需调用服务的服务名称;
根据服务名称,从可用服务实例中查找与服务名称匹配的至少一个服务实例;
根据负载均衡策略,从与服务名称匹配的至少一个可用服务实例中选择一个作为目标服务实例。
需要说明的是,由于本申请实施例与实施例1的发明构思相同,因此,采用本申请实施例提供的服务调用装置,也能够解决现有技术中存在的问题,此处不再赘述。
实施例4
可选的,图4示出了服务调用电子设备40的硬件结构框图,参照图4,该服务调用设备可以包括:处理器41,通信总线42,通信接口43,存储器44;
其中处理器41、通信接口43、存储器44通过通信总线42完成相互间的通信;
可选的,通信接口43可以为通信模块的接口,如GSM模块的接口;
处理器41,用于执行程序;存储器44,用于存放程序;程序可以包括程序代码,所述程序代码包括计算机操作指令。
处理器41可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
存储器44可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
其中,程序可具体用于:
接收服务消费者的服务调用请求;
从服务提供者提供的可用服务实例中选择与所述服务调用请求对应的目标服务实例,其中,所述可用服务实例是基于服务提供者发送的服务心跳信息从服务实例配置表中存储的已注册服务实例中确定的;
将所述目标服务实例的服务地址发送给所述服务消费者,以便所述服务消费者根据所述服务地址进行服务调用。
可选的,基于服务提供者发送的服务心跳信息从服务实例配置表中确定可用服务实例,包括:
根据所述服务提供者提供的服务实例的配置信息进行服务注册,得到所述服务实例配置表;
基于所述服务提供者发送的服务心跳信息,确定所述服务实例配置表中各已注册服务实例当前的状态;其中,所述状态包括可用状态和不可用状态;
根据所述各服务实例当前的状态,从所述服务实例配置表中确定当前处于可用状态的服务实例。
可选的,基于所述服务提供者发送的服务心跳信息,确定所述服务实例配置表中各已注册服务实例当前的状态,包括:
基于所述服务提供者发送的所述服务心跳信息,判断所述服务心跳信息中的发送时间间隔是否超过预设发送时间间隔;
若是,则确定所述服务心跳信息对应的服务实例当前处于不可用状态;
若否,则确定所述服务心跳信息对应的服务实例当前处于可用状态。
基于所述服务调用请求,确定所需调用服务的服务名称;
根据所述服务名称,从所述可用服务实例中查找与所述服务名称匹配的至少一个服务实例;
根据负载均衡策略,从与所述服务名称匹配的至少一个服务实例中选择一个作为所述目标服务实例。
除此,本申请还提供的服务调用设备还可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种服务调用方法,其特征在于,包括:
接收服务消费者的服务调用请求;
从服务提供者提供的可用服务实例中选择与所述服务调用请求对应的目标服务实例,其中,所述可用服务实例是基于服务提供者发送的服务心跳信息从服务实例配置表中存储的已注册服务实例中确定的;
将所述目标服务实例的服务地址发送给所述服务消费者,以便所述服务消费者根据所述服务地址进行服务调用。
2.根据权利要求1所述的方法,其特征在于,基于服务提供者发送的服务心跳信息从服务实例配置表中确定可用服务实例,具体包括:
根据所述服务提供者提供的服务实例的配置信息进行服务注册,得到所述服务实例配置表;
基于所述服务提供者发送的服务心跳信息,确定所述服务实例配置表中各已注册服务实例当前的状态;其中,所述状态包括可用状态和不可用状态;
根据所述各已注册服务实例当前的状态,从所述服务实例配置表中确定当前处于可用状态的服务实例。
3.根据权利要求2所述的方法,其特征在于,基于所述服务提供者发送的服务心跳信息,确定所述服务实例配置表中各已注册服务实例当前的状态,具体包括:
基于所述服务提供者发送的所述服务心跳信息,判断所述服务心跳信息中的发送时间间隔是否超过预设发送时间间隔;
若是,则确定所述服务心跳信息对应的服务实例当前处于不可用状态;
若否,则确定所述服务心跳信息对应的服务实例当前处于可用状态。
4.根据权利要求1所述的方法,其特征在于,从服务提供者提供的可用服务实例中选择与所述服务调用请求对应的目标服务实例,具体包括:
基于所述服务调用请求,确定所需调用服务的服务名称;
根据所述服务名称,从所述可用服务实例中查找与所述服务名称匹配的至少一个服务实例;
根据负载均衡策略,从与所述服务名称匹配的至少一个服务实例中选择一个作为所述目标服务实例。
5.一种服务调用装置,其特征在于,包括接收模块、确定模块以及发送模块,其中:
接收模块,用于接收服务消费者的服务调用请求;
选择模块,用于从服务提供者提供的可用服务实例中选择与所述服务调用请求对应的目标服务实例,其中,所述可用服务实例是基于服务提供者发送的服务心跳信息从服务实例配置表中存储的已注册服务实例中确定的;
发送模块,用于将所述目标服务实例的服务地址发送给所述服务消费者,以便所述服务消费者根据所述服务地址进行服务调用。
6.根据权利要求5所述的装置,其特征在于,所述选择模块,包括:
注册单元,用于根据所述服务提供者的服务实例的配置信息进行服务注册,得到所述注册后的服务实例配置表;
第一确定单元,用于基于所述服务提供者发送的服务心跳信息,确定所述服务实例配置表中各已注册服务实例当前的状态;其中,所述状态包括可用状态和不可用状态;
第二确定单元,用于根据所述各已注册服务实例当前的状态,从所述服务实例配置表中确定当前处于可用状态的服务实例。
7.根据权利要求6所述的装置,其特征在于,第一确定单元,具体用于:
基于所述服务提供者发送的所述服务心跳信息,判断所述服务心跳信息中的发送时间间隔是否超过预设发送时间间隔;
若是,则确定所述服务心跳信息对应的所述服务实例当前处于不可用状态;
若否,则确定所述服务心跳信息对应的所述服务实例当前处于可用状态。
8.根据权利要求5所述的装置,其特征在于,所述选择模块,具体用于:
基于所述服务调用请求,确定所需调用服务的服务名称;
根据所述服务名称,从所述可用服务实例中查找与所述服务名称匹配的至少一个服务实例;
根据负载均衡策略,从与所述服务名称匹配的至少一个服务实例中选择一个作为所述目标服务实例。
9.一种设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1-4中任一项所述的服务调用方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-4中任一项所述的服务调用方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910530234.XA CN110311900A (zh) | 2019-06-19 | 2019-06-19 | 一种服务调用方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910530234.XA CN110311900A (zh) | 2019-06-19 | 2019-06-19 | 一种服务调用方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110311900A true CN110311900A (zh) | 2019-10-08 |
Family
ID=68076540
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910530234.XA Pending CN110311900A (zh) | 2019-06-19 | 2019-06-19 | 一种服务调用方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110311900A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110825772A (zh) * | 2019-10-28 | 2020-02-21 | 爱钱进(北京)信息科技有限公司 | 多个服务实例的内存数据的同步方法、装置及存储介质 |
CN110896414A (zh) * | 2019-11-22 | 2020-03-20 | 南京甄视智能科技有限公司 | 利用iot实现服务之间消息通知的方法 |
CN110958180A (zh) * | 2019-11-14 | 2020-04-03 | 微民保险代理有限公司 | 网关路由方法、智能网关、电子设备及计算机存储介质 |
CN110968409A (zh) * | 2019-11-28 | 2020-04-07 | 广州欢聊网络科技有限公司 | 一种数据处理方法及装置 |
CN111083210A (zh) * | 2019-12-05 | 2020-04-28 | 浩云科技股份有限公司 | 流媒体服务调度方法及系统 |
CN111405061A (zh) * | 2020-03-31 | 2020-07-10 | 中国工商银行股份有限公司 | 一种基于Dubbo框架的微服务停机方法及服务器 |
CN111866122A (zh) * | 2020-07-18 | 2020-10-30 | 昆明理工大学 | 一种微服务处理方法、装置、客户终端 |
CN113765870A (zh) * | 2020-09-01 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种远程服务调用方法、装置和系统 |
WO2022104550A1 (zh) * | 2020-11-17 | 2022-05-27 | 华为技术有限公司 | 模型蒸馏训练的方法及相关装置和设备、可读存储介质 |
CN115102999A (zh) * | 2022-06-09 | 2022-09-23 | 光大科技有限公司 | DevOps系统、服务提供方法、存储介质和电子装置 |
CN116319505A (zh) * | 2023-02-10 | 2023-06-23 | 安芯网盾(北京)科技有限公司 | 路由分发方法及装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102546226A (zh) * | 2010-12-08 | 2012-07-04 | 中国科学院声学研究所 | 一种基于多节点提供网络服务的系统及方法 |
CN104052799A (zh) * | 2014-05-23 | 2014-09-17 | 上海爱数软件有限公司 | 一种利用资源环实现高可用存储的方法 |
CN105681463A (zh) * | 2016-03-14 | 2016-06-15 | 浪潮软件股份有限公司 | 一种分布式服务框架以及分布式服务调用系统 |
CN106453125A (zh) * | 2016-11-04 | 2017-02-22 | 中国电子科技集团公司第二十八研究所 | 一种基于实时负载率的远程服务调用负载均衡系统 |
WO2017053727A1 (en) * | 2015-09-23 | 2017-03-30 | Convida Wireless, Llc | Enhanced restful operations |
CN108134828A (zh) * | 2017-12-20 | 2018-06-08 | 金蝶软件(中国)有限公司 | 服务请求的路由方法、装置、计算机设备和存储介质 |
CN108965461A (zh) * | 2018-08-03 | 2018-12-07 | 华数传媒网络有限公司 | 服务治理方法、装置及dubbo服务系统 |
CN109257440A (zh) * | 2018-10-29 | 2019-01-22 | 南京南瑞信息通信科技有限公司 | 一种基于服务注册中心的服务发现和客户端负载均衡方法 |
CN109873736A (zh) * | 2019-01-18 | 2019-06-11 | 苏宁易购集团股份有限公司 | 一种微服务监控方法及系统 |
-
2019
- 2019-06-19 CN CN201910530234.XA patent/CN110311900A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102546226A (zh) * | 2010-12-08 | 2012-07-04 | 中国科学院声学研究所 | 一种基于多节点提供网络服务的系统及方法 |
CN104052799A (zh) * | 2014-05-23 | 2014-09-17 | 上海爱数软件有限公司 | 一种利用资源环实现高可用存储的方法 |
WO2017053727A1 (en) * | 2015-09-23 | 2017-03-30 | Convida Wireless, Llc | Enhanced restful operations |
CN105681463A (zh) * | 2016-03-14 | 2016-06-15 | 浪潮软件股份有限公司 | 一种分布式服务框架以及分布式服务调用系统 |
CN106453125A (zh) * | 2016-11-04 | 2017-02-22 | 中国电子科技集团公司第二十八研究所 | 一种基于实时负载率的远程服务调用负载均衡系统 |
CN108134828A (zh) * | 2017-12-20 | 2018-06-08 | 金蝶软件(中国)有限公司 | 服务请求的路由方法、装置、计算机设备和存储介质 |
CN108965461A (zh) * | 2018-08-03 | 2018-12-07 | 华数传媒网络有限公司 | 服务治理方法、装置及dubbo服务系统 |
CN109257440A (zh) * | 2018-10-29 | 2019-01-22 | 南京南瑞信息通信科技有限公司 | 一种基于服务注册中心的服务发现和客户端负载均衡方法 |
CN109873736A (zh) * | 2019-01-18 | 2019-06-11 | 苏宁易购集团股份有限公司 | 一种微服务监控方法及系统 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110825772A (zh) * | 2019-10-28 | 2020-02-21 | 爱钱进(北京)信息科技有限公司 | 多个服务实例的内存数据的同步方法、装置及存储介质 |
CN110958180A (zh) * | 2019-11-14 | 2020-04-03 | 微民保险代理有限公司 | 网关路由方法、智能网关、电子设备及计算机存储介质 |
CN110896414A (zh) * | 2019-11-22 | 2020-03-20 | 南京甄视智能科技有限公司 | 利用iot实现服务之间消息通知的方法 |
CN110968409A (zh) * | 2019-11-28 | 2020-04-07 | 广州欢聊网络科技有限公司 | 一种数据处理方法及装置 |
CN111083210A (zh) * | 2019-12-05 | 2020-04-28 | 浩云科技股份有限公司 | 流媒体服务调度方法及系统 |
CN111405061B (zh) * | 2020-03-31 | 2022-10-21 | 中国工商银行股份有限公司 | 一种基于Dubbo框架的微服务停机方法及服务器 |
CN111405061A (zh) * | 2020-03-31 | 2020-07-10 | 中国工商银行股份有限公司 | 一种基于Dubbo框架的微服务停机方法及服务器 |
CN111866122A (zh) * | 2020-07-18 | 2020-10-30 | 昆明理工大学 | 一种微服务处理方法、装置、客户终端 |
CN113765870A (zh) * | 2020-09-01 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种远程服务调用方法、装置和系统 |
CN113765870B (zh) * | 2020-09-01 | 2023-09-05 | 北京沃东天骏信息技术有限公司 | 一种远程服务调用方法、装置和系统 |
WO2022104550A1 (zh) * | 2020-11-17 | 2022-05-27 | 华为技术有限公司 | 模型蒸馏训练的方法及相关装置和设备、可读存储介质 |
EP4227857A4 (en) * | 2020-11-17 | 2023-12-20 | Huawei Technologies Co., Ltd. | MODEL DISTILLATION LEARNING METHOD AND ASSOCIATED APPARATUS, DEVICE AND READABLE STORAGE MEDIUM |
CN115102999A (zh) * | 2022-06-09 | 2022-09-23 | 光大科技有限公司 | DevOps系统、服务提供方法、存储介质和电子装置 |
CN115102999B (zh) * | 2022-06-09 | 2024-02-09 | 光大科技有限公司 | DevOps系统、服务提供方法、存储介质和电子装置 |
CN116319505A (zh) * | 2023-02-10 | 2023-06-23 | 安芯网盾(北京)科技有限公司 | 路由分发方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110311900A (zh) | 一种服务调用方法、装置、电子设备及存储介质 | |
US11570154B2 (en) | Interfaces to manage direct network peerings | |
JP6674012B2 (ja) | 直接ネットワークピアリングを管理するためのインターフェース | |
US11682055B2 (en) | Partitioned private interconnects to provider networks | |
US9954763B1 (en) | Pre-configured virtual gateways for isolated virtual networks | |
US10069908B2 (en) | Interfaces to manage last-mile connectivity for direct network peerings | |
CN103905500B (zh) | 一种接入应用服务器的方法和装置 | |
US8447866B2 (en) | Network nodes that establish sessions using existing connections identified in a central database | |
WO2015078498A1 (en) | Method and system for balancing load in a sdn network | |
CN110740162A (zh) | 通信链路建立方法、装置、电子设备及介质 | |
CN107800814B (zh) | 虚拟机部署方法及装置 | |
CN107172214A (zh) | 一种具有负载均衡的服务节点发现方法及装置 | |
KR101402367B1 (ko) | 전화 호출 관리 방법 및 호출 관리 시스템 | |
CN110515728B (zh) | 服务器调度方法、装置、电子设备及机器可读存储介质 | |
US20110153826A1 (en) | Fault tolerant and scalable load distribution of resources | |
CN114911602A (zh) | 一种服务器集群的负载均衡方法、装置、设备和存储介质 | |
CN111314500A (zh) | 一种确定访问地址的方法及装置 | |
JP6369730B2 (ja) | 仮想マシン始動方法及び装置 | |
US9313278B2 (en) | Network nodes that establish sessions using existing connections identified in a central database | |
CN113872815B (zh) | 一种故障切换方法及系统 | |
CN113873052B (zh) | Kubernetes集群的域名解析方法、装置及设备 | |
US11936530B1 (en) | System, method, and computer program for AWS autoscaling of Tuxedo systems | |
US11784762B2 (en) | Methods, systems, and computer readable media for limiting network function (NF) repository function (NRF) forwarding | |
CN115858100A (zh) | 服务迁移方法、装置、处理设备及存储介质 | |
AU2017206220B2 (en) | Interfaces to manage direct network peerings |
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: 20191008 |