一种服务降级方法及终端

文档序号:1834626 发布日期:2021-11-12 浏览:21次 >En<

阅读说明:本技术 一种服务降级方法及终端 (Service degradation method and terminal ) 是由 刘德建 林伟 陈宏� 于 2021-06-29 设计创作,主要内容包括:本发明公开了一种服务降级方法及终端,在上游服务中接入降级组件,通过降级组件获取降级规则;当上游服务向下游服务的实例发送访问请求时,使用降级组件统计上游服务访问的失败次数,若失败次数达到预设次数则需要对下游服务的实例进行处理,具体的处理方法是使上游服务停止向下游服务的实例发送访问请求,或者降低上游服务向所述下游服务的实例发送访问请求的速度,因此,即使下游服务因请求过大而导致不稳定时,也能够提供部分服务;同时,当访问的下游服务出现大量问题时,减少对下游服务的请求量,能够为下游服务提供一定的保护能力,从而降低降级服务的压力。(The invention discloses a service degradation method and a terminal, wherein a degradation component is accessed in an upstream service, and a degradation rule is obtained through the degradation component; when an upstream service sends an access request to an instance of a downstream service, a degradation component is used for counting the failure times of the upstream service access, if the failure times reach a preset number, the instance of the downstream service needs to be processed, and the specific processing method is to enable the upstream service to stop sending the access request to the instance of the downstream service or reduce the speed of sending the access request to the instance of the downstream service by the upstream service, so that partial service can be provided even if the downstream service is unstable due to overlarge request; meanwhile, when a large number of problems occur in the accessed downstream service, the request amount of the downstream service is reduced, and certain protection capability can be provided for the downstream service, so that the pressure of degrading the service is reduced.)

一种服务降级方法及终端

技术领域

本发明涉及计算机技术领域,特别涉及一种服务降级方法及终端。

背景技术

移动互联网蓬勃发展的今天,发展出来了各种各样的系统应用,而很多的系统又与其他的系统有各种的数据交互。随着用户数量的剧增,服务端需要采用分布式部署的方式来实现横向扩展,以支持大数据用户高并发方式的访问。而微服务的架构方式则是现在通用的服务端实现分布式部署的方法。

由于微服务之间通过HTTP(Hypertext Transfer Protocol,超文本传输协议)或者RPC(Remote Procedure Call,远程过程调用)等协议进行访问,各种协议访问以及微服务自身都可能存在一些问题,比如网络抖动,微服务压力过大,配置错误等异常问题。通常的服务降级一般都是下游服务实例自身针对服务的功能进行监控,当达到服务的瓶颈时,进行自身服务的有损降级。此时,如客户端的请求量继续增加,则会进一步加强降级服务的压力。

发明内容

本发明所要解决的技术问题是:提供一种服务降级方法及终端,能够降低降级服务的压力。

为了解决上述技术问题,本发明采用的技术方案为:

一种服务降级方法,包括步骤:

在上游服务中接入降级组件,通过所述降级组件获取降级规则;

当所述上游服务向下游服务的实例发送访问请求时,使用所述降级组件统计所述上游服务访问失败的次数,若所述访问失败的次数达到所述降级规则中的预设次数,则停止向所述下游服务的实例发送访问请求或者降低向所述下游服务的实例发送访问请求的速度。

为了解决上述技术问题,本发明采用的另一种技术方案为:

一种服务降级终端,包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

在上游服务中接入降级组件,通过所述降级组件获取降级规则;

当所述上游服务向下游服务的实例发送访问请求时,使用所述降级组件统计所述上游服务访问失败的次数,若所述访问失败的次数达到所述降级规则中的预设次数,则停止向所述下游服务的实例发送访问请求或者降低向所述下游服务的实例发送访问请求的速度。

本发明的有益效果在于:在上游服务中接入降级组件,通过降级组件获取降级规则;当上游服务向下游服务的实例发送访问请求时,使用降级组件统计上游服务访问的失败次数,若失败次数达到预设次数则需要对下游服务的实例进行处理,具体的处理方法是使上游服务停止向下游服务的实例发送访问请求,或者降低上游服务向所述下游服务的实例发送访问请求的速度,因此,即使下游服务因请求过大而导致不稳定时,也能够提供部分服务;同时,当访问的下游服务出现大量问题时,减少对下游服务的请求量,能够为下游服务提供一定的保护能力,从而降低降级服务的压力。

附图说明

图1为本发明实施例的一种服务降级方法的流程图;

图2为本发明实施例的一种服务降级终端的示意图。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。

请参照图1,本发明实施例提供了一种服务降级方法,包括步骤:

在上游服务中接入降级组件,通过所述降级组件获取降级规则;

当所述上游服务向下游服务的实例发送访问请求时,使用所述降级组件统计所述上游服务访问失败的次数,若所述访问失败的次数达到所述降级规则中的预设次数,则停止向所述下游服务的实例发送访问请求或者降低向所述下游服务的实例发送访问请求的速度。

从上述描述可知,本发明的有益效果在于:在上游服务中接入降级组件,通过降级组件获取降级规则;当上游服务向下游服务的实例发送访问请求时,使用降级组件统计上游服务访问的失败次数,若失败次数达到预设次数则需要对下游服务的实例进行处理,具体的处理方法是使上游服务停止向下游服务的实例发送访问请求,或者降低上游服务向所述下游服务的实例发送访问请求的速度,因此,即使下游服务因请求过大而导致不稳定时,也能够提供部分服务;同时,当访问的下游服务出现大量问题时,减少对下游服务的请求量,能够为下游服务提供一定的保护能力,从而降低降级服务的压力。

进一步地,通过所述降级组件获取降级规则包括:

对所述下游服务的降级规则进行配置,通过所述降级组件获取所述降级规则;

使用所述降级组件统计所述上游服务访问失败的次数包括:

在所述降级组件中设置异步定时任务,通过所述定时任务获取所述上游服务访问失败的最新次数。

由上述描述可知,通过降级组件获取可配置的降级规则,并在降级组件中设置异步定时任务,定时获取上游服务访问失败的最新次数,从而提高了降级规则配置的灵活度和获取上游服务访问失败数据的实时性。

进一步地,若所述访问失败的次数达到所述降级规则中的预设次数,则停止向所述下游服务的实例发送访问请求或者降低向所述下游服务的实例发送访问请求的速度包括:

若某一实例的所述访问失败的次数达到所述降级规则中的预设次数,则将其标识为异常实例;

计算所述下游服务中所有实例的已降级占比;

判断所述已降级占比是否达到预设占比,若是,则降低向所述异常实例发送访问请求的速度,否则,停止向所述异常实例发送访问请求,并将所述异常实例标识为已降级实例。

由上述描述可知,通过判断下游服务中所有实例的已降级占比是否达到预设占比,选择停止向异常实例发送访问请求或者降低向异常实例发送访问请求的速度,在减少对下游服务请求量的同时,下游服务也能提供部分服务,对下游服务有一定的保护能力。

进一步地,所述已降级占比达到预设占比之后包括:

统计所述已降级占比达到预设占比之后的持续时长,若所述时长大于预设时长,则将所述下游服务中的所有未降级实例均标识为已降级实例。

由上述描述可知,当已降级占比达到预设占比之后的持续时长大于预设时长时,此时下游服务已经完全不可用了,因此将下游服务中的所有未降级实例均标识为已降级实例,能够避免上游服务持续向下游服务端发送请求,减少下游服务的压力。

进一步地,将所述下游服务中的所有未降级实例均标识为已降级实例之后包括:

通过所述降级组件定时扫描所述下游服务的已降级实例,判断是否能够成功访问所述已降级实例,若是,则将所述已降级实例标识为正常实例。

由上述描述可知,当下游服务中的实例均为已降级实例时,定时扫描判断下游服务是否恢复访问,能够及时将恢复实例的已降级实例标识为正常实例,保证降级服务的可靠性。

请参照图2,本发明另一实施例提供了一种服务降级终端,包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

在上游服务中接入降级组件,通过所述降级组件获取降级规则;

当所述上游服务向下游服务的实例发送访问请求时,使用所述降级组件统计所述上游服务访问失败的次数,若所述访问失败的次数达到所述降级规则中的预设次数,则停止向所述下游服务的实例发送访问请求或者降低向所述下游服务的实例发送访问请求的速度,直至所述下游服务的实例访问成功。

由上述描述可知,在上游服务中接入降级组件,通过降级组件获取降级规则;当上游服务向下游服务的实例发送访问请求时,使用降级组件统计上游服务访问的失败次数,若失败次数达到预设次数则需要对下游服务的实例进行处理,具体的处理方法是使上游服务停止向下游服务的实例发送访问请求,或者降低上游服务向所述下游服务的实例发送访问请求的速度,因此,即使下游服务因请求过大而导致不稳定时,也能够提供部分服务;同时,当访问的下游服务出现大量问题时,减少对下游服务的请求量,能够为下游服务提供一定的保护能力,从而降低降级服务的压力。

进一步地,通过所述降级组件获取降级规则包括:

对所述下游服务的降级规则进行配置,通过所述降级组件获取所述降级规则;

使用所述降级组件统计所述上游服务访问失败的次数包括:

在所述降级组件中设置异步定时任务,通过所述定时任务获取所述上游服务访问失败的最新次数。

由上述描述可知,通过降级组件获取可配置的降级规则,并在降级组件中设置异步定时任务,定时获取上游服务访问失败的最新次数,从而提高了降级规则配置的灵活度和获取上游服务访问失败数据的实时性。

进一步地,若所述访问失败的次数达到所述降级规则中的预设次数,则停止向所述下游服务的实例发送访问请求或者降低向所述下游服务的实例发送访问请求的速度包括:

若某一实例的所述访问失败的次数达到所述降级规则中的预设次数,则将其标识为异常实例;

计算所述下游服务中所有实例的已降级占比;

判断所述已降级占比是否达到预设占比,若是,则降低向所述异常实例发送访问请求的速度,否则,停止向所述异常实例发送访问请求,并将所述异常实例标识为已降级实例。

由上述描述可知,通过判断下游服务中所有实例的已降级占比是否达到预设占比,选择停止向异常实例发送访问请求或者降低向异常实例发送访问请求的速度,在减少对下游服务请求量的同时,下游服务也能提供部分服务,对下游服务有一定的保护能力。

进一步地,所述已降级占比达到预设占比之后包括:

统计所述已降级占比达到预设占比之后的持续时长,若所述时长大于预设时长,则将所述下游服务中的所有未降级实例均标识为已降级实例。

由上述描述可知,当已降级占比达到预设占比之后的持续时长大于预设时长时,此时下游服务已经完全不可用了,因此将下游服务中的所有未降级实例均标识为已降级实例,能够避免上游服务持续向下游服务端发送请求,减少下游服务的压力。

进一步地,将所述下游服务中的所有未降级实例均标识为已降级实例之后包括:

通过所述降级组件定时扫描所述下游服务的已降级实例,判断是否能够成功访问所述已降级实例,若是,则将所述已降级实例标识为正常实例。

由上述描述可知,当下游服务中的实例均为已降级实例时,定时扫描判断下游服务是否恢复访问,能够及时将恢复实例的已降级实例标识为正常实例,保证降级服务的可靠性。

本发明上述一种服务降级方法及终端,适用于微服务项目的降级环境,能够降低降级服务的压力,以下通过具体实施方式进行说明:

实施例一

请参照图1,一种服务降级方法,包括步骤:

S1、在上游服务中接入降级组件,通过所述降级组件获取降级规则。

其中,通过所述降级组件获取降级规则包括:

对所述下游服务的降级规则进行配置,通过所述降级组件获取所述降级规则。

具体的,在本实施例中,通过管理后台自定义降级规则,从而针对不同下游服务进行个性化的降级规则设置,能够可控地实现上游服务访问下游服务的频率等关键功能;

在上游服务中接入降级组件,降级组件自动拉取降级规则并缓存在上游服务的本地内存中。

S2、当所述上游服务向下游服务的实例发送访问请求时,使用所述降级组件统计所述上游服务访问失败的次数,若所述访问失败的次数达到所述降级规则中的预设次数,则停止向所述下游服务的实例发送访问请求或者降低向所述下游服务的实例发送访问请求的速度。

其中,使用所述降级组件统计所述上游服务访问失败的次数包括:

在所述降级组件中设置异步定时任务,通过所述定时任务获取所述上游服务访问失败的最新次数;

若某一实例的所述访问失败的次数达到所述降级规则中的预设次数,则将其标识为异常实例。

具体的,上游服务向下游服务的实例发送访问请求时,降级组件中存在一个异步定时任务,能够定时从管理后台中拉取最新的上游服务访问失败的数据,降级组件中将会对每一个实例的请求失败的数据进行统计处理;

在本实施例中,每隔30秒为统计周期,一个周期之内,若某一实例存在3次的请求失败,则认定该实例为异常实例,需要进行客户端降级处理,具体的降级处理为:停止向异常实例发送访问请求或者降低向异常实例发送访问请求的速度。在其他等同实施例中,统计周期也可以为20秒、40秒或者1分钟等其他时间。预设次数也可以为2次、4次或者五次等其他次数。

实施例二

本实施例与实施例一的区别在于,进一步限定了如何根据访问失败的次数达对服务进行降级,具体的:

若所述访问失败的次数达到所述降级规则中的预设次数,则停止向所述下游服务的实例发送访问请求或者降低向所述下游服务的实例发送访问请求的速度包括:

计算所述下游服务中所有实例的已降级占比;

判断所述已降级占比是否达到预设占比,若是,则降低向所述异常实例发送访问请求的速度,否则,停止向所述异常实例发送访问请求,并将所述异常实例标识为已降级实例。

在本实施例中,当需要针对某实例进行降级时,预先判断下游服务中已降级实例占总实例的比例,得到已降级占比;

当已降级占比小于50%时,上游服务的客户端将会在本地内存中将该实例标识为已降级实例,不再向该实例发送请求。

当降级比例大于或者等于50%时,后续如继续存在还需降级的异常实例,此时,将由降级组件根据已经配置好的降级条件进行处理,在本实施例中,降级条件可以是降低向该实例发送请求的速度,或者当单位时间内已经达到请求量阀值时,直接返回异常信息,不再向该实例发送请求。

具体的,假设上游服务A应用会调用下游服务B应用的服务,B应用中存在4个节点提供对外服务,这4个节点分别为a、b、c和d;

若某时刻节点a网络不稳定,预先检查降级的实例占总实例的占比,如低于50%时,客户端降级组件将会设置节点a为已降级实例,不再向节点a发送请求;

预先检查降级的实例占总实例的占比,如低于50%时,后续节点b也设置为已降级实例,不再向节点b发送请求;

预先检查降级的实例占总实例的占比,此时已经高于或者等于50%时,后续实例c、实例d将采用降低请求发送速度进行降级处理。

其中,所述已降级占比达到预设占比之后包括:

统计所述已降级占比达到预设占比之后的持续时长,若所述时长大于预设时长,则将所述下游服务中的所有未降级实例均标识为已降级实例。

具体的,当已降级占比达到预设占比之后,统计已降级占比达到预设占比之后的持续时长,若持续时长大于预设时长,此时下游服务已经完全不可用了,将下游服务中的所有未降级实例均标识为已降级实例,能够避免上游服务持续对不可用的下游服务进行访问。

其中,将所述下游服务中的所有未降级实例均标识为已降级实例之后包括:

通过所述降级组件定时扫描所述下游服务的已降级实例,判断是否能够成功访问所述已降级实例,若是,则将所述已降级实例标识为正常实例。

具体的,降级组件中的定时任务每隔一段时间扫描下游服务的实例,当下游服务的实例恢复正常后,将会恢复本地内存中异常实例的状态信息,将恢复的实例标识为正常实例。

实施例三

请参照图2,一种服务降级终端,包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现实施例一的服务降级方法的各个步骤。

综上所述,本发明提供的一种服务降级方法及终端,在上游服务中接入降级组件,通过降级组件获取降级规则,其中降级规则可配置,能够适应于不同的下游服务;当上游服务向下游服务的实例发送访问请求时,使用降级组件定时统计上游服务访问的失败次数,若失败次数达到预设次数则热为该实例为异常实例,通过获取当前下游服务中所有实例的已降级占比,若已降级占比未达到预设占比,则使上游服务停止向异常实例发送访问请求,若已降级占比达到预设占比,则降低上游服务向异常实例发送访问请求的速度,因此,即使下游服务因请求过大而导致不稳定时,也能够提供部分服务;同时,当访问的下游服务出现大量问题时,减少对下游服务的请求量,能够为下游服务提供一定的保护能力;其中,当已降级占比达到预设占比之后开始统计该状态的持续时间,若持续时间超过预设值,可以认为下游服务已经不可用了,需要将下游服务中的实例都标识为已降级实例,从而减少上游的无效访问请求,降低降级服务的压力。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

10页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种流量控制方法、装置、设备及介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!