CN115174658A - 服务处理方法及相关装置 - Google Patents
服务处理方法及相关装置 Download PDFInfo
- Publication number
- CN115174658A CN115174658A CN202210767771.8A CN202210767771A CN115174658A CN 115174658 A CN115174658 A CN 115174658A CN 202210767771 A CN202210767771 A CN 202210767771A CN 115174658 A CN115174658 A CN 115174658A
- Authority
- CN
- China
- Prior art keywords
- service
- service node
- request
- preset
- node
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 17
- 238000000034 method Methods 0.000 claims abstract description 46
- 230000004044 response Effects 0.000 claims description 63
- 238000004590 computer program Methods 0.000 claims description 11
- 238000010586 diagram Methods 0.000 description 9
- 238000011144 upstream manufacturing Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Abstract
本申请提供一种服务处理方法及相关装置。本申请提供的技术方案中,当服务节点的下游服务节点出现服务故障时,该服务节点还可以继续向该下游服务节点发起一部分服务调用请求,且这一部分服务调用请求中可以包括核心业务请求和重要客户发出的请求。本申请的方法,在减小该服务节点的访问压力同时,还可以在一定程度上保证微服务系统的处理效率。
Description
技术领域
本申请涉及分布式技术领域,尤其涉及一种服务处理方法及相关装置。
背景技术
微服务架构中,一个调用链可以包括多个服务节点,当该调用链上某一服务节点出现问题时,可能会导致整个调用链出现级联错误,进而影响所属微服务的可用性。目前,可以运用熔断技术来解决这一问题。
一种熔断方法包括:当该服务节点接收到需要调用下游服务节点的请求时,若该下游服务节点响应速度慢或响应失败的比例超过预设阈值,则直接拦截该调用请求;当达到熔断时长后,该服务节点可以继续对下游服务节点发起调用请求。
该方法虽然可以使得微服务在一段时长后可以恢复可用性,但是会降低微服务系统的服务效率。
发明内容
本申请提供一种服务处理方法及相关装置,可以在恢复系统问题的同时提高微服务系统的服务效率。
第一方面,本申请提供一种服务处理方法,包括:服务节点接收第一服务调用请求,所述第一服务调用请求用于请求第一服务;当所述服务节点的下游服务节点出现服务故障时,若所述第一服务调用请求为预设请求,所述服务节点向所述下游服务节点发送第二服务调用请求,所述第二服务调用请求用于请求第二服务,所述第二服务为实现所述第一服务需要调用的服务,所述下游服务节点用于提供所述第二服务,所述下游服务节点出现服务故障包括所述下游服务节点的响应速度慢或所述下游服务节点响应失败的比例超过预设阈值。
在一种示例中,假设服务节点A→服务节点B→服务节点C为一条完整的调用链,其中,服务节点B为服务节点A的下游服务节点,服务节点C为服务节点B的下游服务节点。
例如,当服务节点C出现服务故障时,若服务节点B接收第一服务调用请求,且该第一服务调用请求为预设请求时,则服务节点B可以基于该第一服务调用请求向服务节点C发起调用。
本方法中,当服务节点的下游服务节点的响应速度变慢或响应失败比例较高时,该服务节点还可以继续向该下游服务节点发送预设请求,这样不仅可以减小下游服务节点的访问压力,还可以提高微服务系统的服务效率。
结合第一方面的方法,在第一种可能的实现方式中,所述第一服务调用请求中包括业务标识信息和用户标识信息;相应地,所述第一服务调用请求为预设请求包括:预设白名单中包含所述业务标识信息,或所述预设白名单中包括所述用户标识信息,所述预设白名单用于记录需要及时提供服务的业务标识信息和用户标识信息。
该方法中,可以将核心业务的标识信息和需要及时提供业务服务的用户的标识信息提前记录到白名单中,当预设白名单中包括与该第一服务调用请求中的用户标识信息一致的用户标识信息,或当预设白名单中包括与该第一服务调用请求中的业务标识信息一致的业务标识信息时,就可以确定该第一服务调用请求为预设请求,提高预设请求的判断效率,还可以提高预设请求的处理效率。
该方法中,预设请求包括重要客户发出的请求和涉及核心业务的请求,使下游服务节点在访问压力过大的情况下,还可以对重要客户发出的请求和涉及核心业务的请求进行处理,提高核心业务成功率。
结合第一方面或第一种可能的实现方式,在第二种可能的实现方式中,若所述下游服务节点出现服务故障、所述第一服务调用请求不是预设请求且在目标时长内所述服务节点向所述下游服务节点发送的服务调用请求数量小于预设请求数量阈值,则所述服务节点向所述下游服务节点发送所述第二服务调用请求,所述目标时长为所述服务节点确定所述下游服务节点本次出现服务故障的起始时刻至当前时刻。
该方法中,预设请求数量阈值可以为目标时长内服务节点可以向下游服务节点发送的最大服务调用请求数量。
当在目标时长内服务节点向下游服务节点发送的服务调用请求数量小于预设请求数量阈值时,表示该服务节点向下游服务节点发送的服务调用请求数量还没有达到最大服务调用请求数量,因此可以继续向下游服务节点发起服务调用。
结合第二种可能的实现方式,在第三种可能的实现方式中,若所述下游服务节点出现服务故障、所述第一服务调用请求不是预设请求、在所述目标时长内所述服务节点向所述下游服务节点发送的服务调用请求数量大于或等于所述预设请求数量阈值,且所述目标时长大于或等于预设时长,则所述服务节点向所述下游服务节点发送所述第二服务调用请求,且确定所述下游服务节点服务故障已去除。
该方法中,该目标时长可以为该服务节点确定下游服务节点本次出现服务故障的起始时刻至当前时刻的时间间隔,该预设时长可以为最大熔断时长。
当目标时长大于或等于预设时长时,表示下游服务节点本次出现服务故障的起始时刻至当前时刻的时间间隔已达到最大熔断时长。
结合第三种可能的实现方式,在第四种可能的实现方式中,所述服务调用请求数量等于所述预设请求数量阈值时,所述服务节点将数量标志位的值设置为预设值,所述预设值用于表示所述目标时长内所述服务调用请求数量已大于或等于所述预设请求数量阈值;相应地,所述目标时长内所述服务节点向所述下游服务节点发送的服务调用请求数量大于或等于预设请求数量阈值,包括:所述数量标志位的值为所述预设值。
例如,假设服务调用请求数量小于预设请求数量阈值,该服务节点可以将数量标志位的值设置为0,当服务调用请求数量等于预设请求数量阈值时,该服务节点可以将数量标志位的值更改为1。
该方法中,当下游服务节点出现服务故障、第一服务调用请求不是预设请求时,只需通过判断数量标志位的值是否为1即可,与比较服务调用请求数量和预设请求数量阈值的大小相比,该方法的判断过程更快,可以提高执行效率。
结合第三种或第四种中任意一种可能的实现方式,在第五种可能的实现方式中,若所述下游服务节点出现服务故障、所述第一服务调用请求不是预设请求、在所述目标时长内所述服务节点向所述下游服务节点发送的服务调用请求数量大于或等于所述预设请求数量阈值,且所述目标时长小于所述预设时长,则所述服务节点发送调用失败响应,所述调用失败响应用于指示所述第一服务调用请求失败。
该方法中,当目标时长小于预设时长时,表示下游服务节点本次出现服务故障的起始时刻至当前时刻的时间间隔没有达到最大熔断时长。
结合第五种可能的实现方式,在第六种可能的实现方式中,若所述下游服务节点没有服务故障,则所述服务节点向所述下游服务节点发送所述第二服务调用请求。
该方法中,下游服务节点没有服务故障时,该服务节点可以对接收到的所有第一服务调用请求进行响应。
第二方面,本申请提供一种服务处理装置,该装置可以包括:用于实现第一方面中的方法的各个功能模块。每个功能模块可以通过软件和/或硬件的方式实现。
作为一种示例,该装置可以包括:接收模块和发送模块。
其中,接收模块可以用于服务节点接收第一服务调用请求,所述第一服务调用请求用于请求第一服务。发送模块可以用于当所述服务节点的下游服务节点出现服务故障时,若所述第一服务调用请求为预设请求,所述服务节点向所述下游服务节点发送第二服务调用请求,所述第二服务调用请求用于请求第二服务,所述第二服务为实现所述第一服务需要调用的服务,所述下游服务节点用于提供所述第二服务,所述下游服务节点出现服务故障包括所述下游服务节点的响应速度慢或所述下游服务节点响应失败的比例超过预设阈值。
可选地,该发送模块还可以用于若所述下游服务节点出现服务故障、所述第一服务调用请求不是预设请求且在目标时长内所述服务节点向所述下游服务节点发送的服务调用请求数量小于预设请求数量阈值,则所述服务节点向所述下游服务节点发送所述第二服务调用请求,所述目标时长为所述服务节点确定所述下游服务节点本次出现服务故障的起始时刻至当前时刻。
可选地,该发送模块还可以用于若所述下游服务节点出现服务故障、所述第一服务调用请求不是预设请求、在所述目标时长内所述服务节点向所述下游服务节点发送的服务调用请求数量大于或等于所述预设请求数量阈值,且所述目标时长大于或等于预设时长,则所述服务节点向所述下游服务节点发送所述第二服务调用请求,且确定所述下游服务节点服务故障已去除。
可选地,该装置还可以包括设置模块,该设置模块可以用于所述服务调用请求数量等于所述预设请求数量阈值时,所述服务节点将数量标志位的值设置为预设值,所述预设值用于表示所述目标时长内所述服务调用请求数量已大于或等于所述预设请求数量阈值。
可选地,该发送模块还可以用于若所述下游服务节点出现服务故障、所述第一服务调用请求不是预设请求、在所述目标时长内所述服务节点向所述下游服务节点发送的服务调用请求数量大于或等于所述预设请求数量阈值,且所述目标时长小于所述预设时长,则所述服务节点发送调用失败响应,所述调用失败响应用于指示所述第一服务调用请求失败。
可选地,该发送模块还可以用于若所述下游服务节点没有服务故障,则所述服务节点向所述下游服务节点发送所述第二服务调用请求。
第三方面,本申请提供一种服务处理装置,该装置可以包括存储器,以及与存储器耦合的处理器。
处理器用于执行程序指令,以实现第一方面中方法所执行的指令;存储器用于存储处理器执行的指令或存储处理器运行指令所需的输入数据或存储处理器运行指令后产生的数据。
第四方面,本申请提供一种计算机可读存储介质,该计算机可读存储介质存储用于处理器执行的程序代码,该程序代码包括用于实现第一方面中的方法的指令。
第五方面,本申请提供一种计算机程序产品,当该计算机程序产品在处理器上运行时,使得该服务处理装置可以实现第一方面的方法。
可以理解的是,本申请提供的服务处理装置、计算机可读存储介质和计算机程序产品所能达到的技术效果可以参考第一方面。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请适用的一种微服务架构示意图;
图2为一种服务熔断方法流程示意图;
图3为本申请提供的一种服务处理方法流程示意图;
图4为本申请一个实施例提供的服务处理方法流程示意图;
图5为本申请另一个实施例提供的服务处理方法流程示意图;
图6为本申请又一个实施例提供的服务处理方法流程示意图;
图7为本申请一个实施例提供的四个阶段时间示意图;
图8为本申请一个实施例提供的服务处理装置示意图;
图9为本申请另一个实施例提供的服务处理装置示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
图1为本申请适用的一种微服务架构示意图。如图1所示,该微服务架构中可以包括服务节点A、服务节点B和服务节点C。服务节点A、服务节点B和服务节点C之间可以相互调用。
该微服务架构中可以包含多个微服务,假设一个微服务可以通过服务节点A、服务节点B和服务节点C来共同完成一种业务,则根据这三个服务节点之间的调用关系可以形成调用链。
在一种示例中,服务节点A可以向服务节点B发起第一服务调用请求,该第一服务调用请求用于请求第一服务,该服务节点B可以为提供第一服务的服务节点。
可选地,服务节点B还可以向服务节点C发起第二服务调用请求,该第二服务调用请求用于请求第二服务,该服务节点C可以为提供第二服务的服务节点,该第二服务可以为实现第一服务所需要调用的服务。
该示例中,根据这三个服务节点的调用关系,可以得到一条调用链:服务节点A→服务节点B→服务节点C。
其中,服务节点B为服务节点A的下游服务节点,服务节点C为服务节点B的下游服务节点。
当该调用链中任意一个服务节点出现问题时,可能会导致整个调用链出现级联错误,进而影响所属微服务的可用性。
作为示例,当服务节点C因访问压力过大导致响应速度慢或响应失败时,服务节点C会积累大量的请求,久而久之,服务节点B的请求线程也会随之阻塞,甚至可能导致服务节点A的请求线程也开始阻塞,使整个调用链发生故障,从而导致服务节点A、服务节点B和服务节点C相关的微服务的可用性受影响。
在这种情况下,可以通过熔断技术来提高微服务的可用性。每个服务节点都可以配置有熔断器,当某服务节点的下游服务节点出现响应速度慢或响应失败过多的情况时,该服务节点可以开启熔断器,对该下游服务节点进行限制,避免该下游服务节点影响其它服务节点而出现整个调用链故障的情况。
图2为一种服务熔断方法流程示意图。假设服务节点接收服务调用请求,该服务调用请求用于请求第一服务,第一服务的实现需要调用第二服务,第二服务可以由该服务节点的下游服务节点来提供。则该服务节点先判断该下游服务节点在预设时间段内的响应速度是否变慢或响应失败比例是否超过预设阈值;若该下游服务节点在预设时间段内的响应速度变慢或响应失败比例超过预设阈值,则该服务节点开启熔断器,直接拦截该服务调用请求,并且在预设熔断时长内,对所有需要调用第二服务的服务调用请求进行拦截。在预设熔断时长过后,可以向下游服务节点发起第二服务的调用。
以该服务节点为服务节点B、下游服务节点为服务节点C为例,当服务节点B接收到服务调用请求后,先判断服务节点C在预设时间段内的响应速度是否变慢或响应失败的比例是否超过预设阈值;若服务节点C在预设时间段内的响应速度变慢或响应失败的比例超过预设阈值,则直接开启熔断器,拦截该请求,当熔断时长过后,服务节点B可以对服务节点C发起调用请求。
该方法中,服务节点B直接切断对服务节点C的调用,可以防止服务节点C影响其它服务节点。但是实际上服务节点C只是响应速度变慢或响应失败次数较多,还是可以响应一部分请求的。也就是说,服务节点C在可以响应部分请求的情况下,服务节点B直接切断对服务节点C的所有调用,导致一段时长内与服务节点C相关的微服务不可用,降低了微服务系统的服务效率。
因此,本申请提供一种新的技术方案,用于解决现有技术中微服务系统的服务效率低的问题。
本申请的技术方案中,当服务节点的下游服务节点在一定时间段内的响应速度慢或响应失败的比例超过预设阈值,且该服务节点接收到多个服务调用请求,这多个服务调用请求需要调用该下游服务节点的服务时,该服务节点可以对一部分服务调用请求进行响应,对另一部分服务调用请求进行拦截,使下游服务节点可以继续响应部分服务调用请求,不仅可以减小下游服务节点的访问压力,还可以提高微服务系统的服务效率。
本申请的技术方案中,服务节点可以响应的服务调用请求中可以包括重要客户发出的业务请求和涉及核心业务的请求,使下游服务节点在访问压力过大的情况下,可以对重要客户发出的业务请求进行响应,以及可以提高核心业务成功率。
图3为本申请提供的一种服务处理方法流程示意图。如图3所示,该服务处理方法可以包括S301和S302。
S301,服务节点接收第一服务调用请求,该第一服务调用请求用于请求第一服务。
本实施例中,该服务节点为接收第一服务调用请求并响应于该第一服务调用请求提供第一服务的一方。在一种示例中,该服务节点可以为如图1所示的服务节点B。
本实施例中,该第一服务调用请求可以为该服务节点的上游服务节点向该服务节点发送的。在一种示例中,当该服务节点为如图1所示的服务节点B时,该服务节点的上游服务节点可以为如图1所示的服务节点A。
S302,当该服务节点的下游服务节点出现服务故障时,若第一服务调用请求为预设请求,则该服务节点向该下游服务节点发送第二服务调用请求,该第二服务调用请求用于请求第二服务。
本实施例中,该下游服务节点为提供第二服务的节点,第二服务为实现第一服务需要调用的服务。在一种示例中,当服务节点为如图1所示的服务节点B时,该服务节点的下游服务节点可以为如图1所示的服务节点C。
可选地,下游服务节点出现服务故障可以包括下游服务节点的响应速度慢或下游服务节点响应失败的比例超过预设阈值。
可以理解的是,当该服务节点向下游服务节点发起服务调用请求后,下游服务节点可以响应于该服务调用请求提供相应的服务,且可以向该服务节点发送响应结果,该响应结果用于指示下游服务节点的响应情况,例如响应正常、响应时间过长或响应失败等。
该服务节点接收到下游服务节点发送的响应结果后,可以基于下游服务节点的响应时间是否过长来判断下游服务节点的响应速度是否变慢,以及可以基于下游服务节点的响应失败次数判断下游服务节点的响应失败比例是否超过预设阈值。若一定时间内下游服务节点的响应速度变慢或响应失败比例超过预设阈值,则该服务节点可以确定该下游服务节点出现服务故障。
可选地,第一服务调用请求中可以包括业务标识信息和用户标识信息。
相应地,判断第一服务调用请求是否为预设请求可以包括:判断预设白名单中是否包括该用户标识信息和该业务标识信息,该预设白名单可以用于记录需要及时提供服务的业务标识信息和用户标识信息;若预设白名单中包括该业务标识信息,或预设白名单中包括该用户标识信息,则第一服务调用请求为预设请求;若预设白名单中不包括该业务标识信息和该用户标识信息,则第一服务调用请求不是预设请求。
该方法中,当下游服务节点出现服务故障时,并没有直接截断对下游服务节点的所有调用,而是可以向下游服务节点发送预设请求。这样在下游服务节点的响应速度变慢或响应失败比例超过预设阈值的情况下,还可以允许部分请求通过,可以提高服务效率。另外,允许通过的这部分请求中包括需要重要用户所发出的业务请求和涉及核心业务的请求,可以提高核心业务的成功率。
本申请的技术方案中,该服务节点可以对预设请求进行响应,对不是预设请求的那部分服务调用请求进行选择性响应。
在一种可能的实现方式中,当第一服务调用请求不是预设请求时,可以通过预设请求数量阈值来判断是否向下游服务节点发送第二服务调用请求,该预设请求数量阈值可以为目标时长内服务节点可以向下游服务节点发送的最大服务调用请求数量,该目标时长可以为服务节点确定下游服务节点本次出现服务故障的起始时刻至当前时刻的时间间隔。
当下游服务节点出现服务故障、第一服务调用请求不是预设请求且在目标时长内服务节点向下游服务节点发送的服务调用请求数量小于预设请求数量阈值,则服务节点向下游服务节点发送第二服务调用请求。
例如,假设目标时长内的预设请求数量阈值为100个,而在目标时长内服务节点向下游服务节点发送的服务调用请求数量为50个,则服务节点可以向下游服务节点发送该第二服务调用请求。
可选地,若下游服务节点出现服务故障、第一服务调用请求不是预设请求、在目标时长内服务节点向下游服务节点发送的服务调用请求数量大于或等于预设请求数量阈值,且目标时长大于或等于预设时长,该预设时长可以为最大熔断时长,则表示虽然目标时长内服务节点向下游服务节点发送的服务调用请求数量已达到最大服务调用请求数量,但下游服务节点本次出现服务故障的起始时刻至当前时刻的时间间隔已达到最大熔断时长,则服务节点可以向下游服务节点发送第二服务调用请求,且确定下游服务节点服务故障已去除。
例如,假设目标时长内的预设请求数量阈值为100个、预设时长为1小时,而在目标时长内服务节点向下游服务节点发送的服务调用请求数量为100个,该目标时长为1小时,则服务节点可以向下游服务节点发送第二服务调用请求。
可选地,若下游服务节点出现服务故障、第一服务调用请求不是预设请求、在目标时长内服务节点向下游服务节点发送的服务调用请求数量大于或等于预设请求数量阈值,且目标时长小于预设时长,表示目标时长内服务节点向下游服务节点发送的服务调用请求数量已达到最大服务调用请求数量,且下游服务节点本次出现服务故障的起始时刻至当前时刻的时间间隔没有达到最大熔断时长,则服务节点可以发送调用失败响应,该调用失败响应用于指示第一服务调用请求失败。
例如,假设目标时长内的预设请求数量阈值为100个、预设时长为1小时,而在目标时长内服务节点向下游服务节点发送的服务调用请求数量为100个,该目标时长为30分钟,则服务节点可以向该服务节点的上游服务节点发送调用失败响应。
可选地,当服务调用请求数量等于预设请求数量阈值时,服务节点可以将数量标志位的值设置为预设值,该预设值用于表示目标时长内服务调用请求数量已大于或等于预设请求数量阈值。
也就是说,通过判断数量标志位的值是否为预设值来判断目标时长内服务调用请求数量是否大于或等于预设请求数量阈值。当数量标志位的值为预设值时,表示目标时长内服务节点向下游服务节点发送的服务调用请求数量大于或等于预设请求数量阈值;当数量标志位的值不是预设值时,表示目标时长内服务节点向下游服务节点发送的服务调用请求数量小于预设请求数量阈值。
例如,假设服务调用请求数量小于预设请求数量阈值,服务节点可以将数量标志位的值设置为0,当服务调用请求数量等于预设请求数量阈值时,服务节点可以将数量标志位的值更改为1。
这种情况下,当下游服务节点出现服务故障、第一服务调用请求不是预设请求时,只需通过判断数量标志位的值是否为1即可。与判断服务调用请求数量和预设请求数量阈值的大小相比,该方法的判断过程更快,可以提高执行效率。
可以理解的是,若下游服务节点没有服务故障,则服务节点向下游服务节点发送第二服务调用请求。
综上所述,该服务处理方法流程示意图可以如图4所示。在S401中,服务节点接收第一服务调用请求,第一服务调用请求用于请求第一服务。在S402中,服务节点判断下游服务节点是否出现服务故障,若下游服务节点出现服务故障,执行S403,若下游服务节点没有出现服务故障,执行S407。在S403中,服务节点判断第一服务调用请求是否为预设请求,若第一服务调用请求为预设请求,执行S407,若第一服务调用请求不是预设请求,执行S404。在S404中,服务节点判断目标时长内服务节点向下游服务节点发送的服务调用请求数量是否小于预设请求数量阈值,若是,执行S407,若否,执行S405。在S405中,判断目标时长是否大于或等于预设时长,若目标时长大于或等于预设时长,执行S407,若目标时长小于预设时长,执行S406。在S406中,服务节点向上游服务节点发送调用失败响应。在S407中,服务节点向下游服务节点发送第二服务调用请求。
在另一种可能的实现方式中,当第一服务调用请求不是预设请求时,还可以通过预设拦截请求数量阈值来判断是否向下游服务节点发送第二服务调用请求,该预设拦截请求数量阈值可以为目标时长内服务节点需要拦截的最大服务调用请求数量。
当下游服务节点出现服务故障、第一服务调用请求不是预设请求且在目标时长内服务节点拦截的服务调用请求数量小于预设拦截请求数量阈值,则服务节点发送调用失败响应,该调用失败响应用于指示服务调用请求失败。
例如,假设目标时长内的预设拦截请求数量阈值为100个,而在目标时长内服务节点拦截的服务调用请求数量为50个,则服务节点可以向该服务节点的上游服务节点发送调用失败响应。
可选地,当下游服务节点出现服务故障、第一服务调用请求不是预设请求、在目标时长内服务节点拦截的服务调用请求数量大于或等于预设拦截请求数量阈值,且所述目标时长大于或等于预设时长,该预设时长可以为最大熔断时长,表示目标时长内服务节点拦截的服务调用请求数量已达到需要拦截的最大服务调用请求数量,且下游服务节点本次出现服务故障的起始时刻至当前时刻的时间间隔达到最大熔断时长,则服务节点向下游服务节点发送第二服务调用请求,且确定下游服务节点服务故障已去除。
例如,假设目标时长内的预设拦截请求数量阈值为100个、预设时长为1小时,而在目标时长内服务节点拦截的服务调用请求数量为100个,该目标时长为1小时,则服务节点可以向下游服务节点发送第二服务调用请求。
可选地,当下游服务节点出现服务故障、第一服务调用请求不是预设请求、在目标时长内服务节点拦截的服务调用请求数量大于或等于预设拦截请求数量阈值,且所述目标时长小于预设时长,表示虽然下游服务节点本次出现服务故障的起始时刻至当前时刻的时间间隔没有达到最大熔断时长,但目标时长内服务节点拦截的服务调用请求数量已达到需要拦截的最大服务调用请求数量,则服务节点也可以向下游服务节点发送第二服务调用请求。
例如,假设目标时长内的预设拦截请求数量阈值为100个、预设时长为1小时,而在目标时长内服务节点拦截的服务调用请求数量为100个,该目标时长为30分钟,则服务节点可以向下游服务节点发送第二服务调用请求。
可选地,当拦截的服务调用请求数量等于预设拦截请求数量阈值时,服务节点可以将数量标志位的值设置为预设值,该预设值用于表示目标时长内拦截的服务调用请求数量已大于或等于预设拦截请求数量阈值。
也就是说,通过判断数量标志位的值是否为预设值来判断目标时长内拦截的服务调用请求数量是否大于或等于预设拦截请求数量阈值。当数量标志位的值为预设值时,表示目标时长内服务节点拦截的服务调用请求数量大于或等于预设拦截请求数量阈值;当数量标志位的值不是预设值时,表示目标时长内服务节点拦截的服务调用请求数量小于预设拦截请求数量阈值。
例如,假设拦截的服务调用请求数量小于预设拦截请求数量阈值,服务节点可以将数量标志位的值设置为0,当拦截的服务调用请求数量等于预设拦截请求数量阈值时,服务节点可以将数量标志位的值更改为1。
这种情况下,当下游服务节点出现服务故障、第一服务调用请求不是预设请求时,只需通过判断数量标志位的值是否为1即可。与判断拦截的服务调用请求数量和预设拦截请求数量阈值的大小相比,该方法的判断过程更快,可以提高执行效率。
综上所述,该服务处理方法流程示意图可以如图5所示。在S501中,服务节点接收第一服务调用请求,第一服务调用请求用于请求第一服务。在S502中,服务节点判断下游服务节点是否出现服务故障,若下游服务节点出现服务故障,执行S503,若下游服务节点没有出现服务故障,执行S506。在S503中,服务节点判断第一服务调用请求是否为预设请求,若第一服务调用请求为预设请求,执行S506,若第一服务调用请求不是预设请求,执行S504。在S504中,服务节点判断目标时长内拦截的服务调用请求数量是否小于预设拦截请求数量阈值,若是,执行S505,若否,执行S506。在S505中,服务节点向上游服务节点发送调用失败响应。在S506中,服务节点向下游服务节点发送第二服务调用请求。
可选地,服务节点还可以对接收的服务调用请求进行阶段式拦截。
例如,假设服务节点在一定时间内接收了100个服务调用请求,该100个请求均用于请求第一服务,则该服务节点可以对这100个请求进行阶段式拦截。
假设服务节点可以对这100个请求进行四个阶段的拦截,这四个阶段分别为阶段1、阶段2、阶段3和阶段4。在阶段1中,服务节点可以拦截25个服务调用请求;在阶段2中,服务节点可以继续拦截25个服务调用请求;在阶段3中,服务节点还可以拦截25个服务调用请求;在阶段4中,服务节点还可以拦截25个服务调用请求。
这四个阶段中每个阶段都可以对应一个预设拦截时长,且阶段1、阶段2、阶段3和阶段4的预设拦截时长可以相同。
本实施例中,当下游服务节点出现服务故障时,服务节点先进入阶段1;在当前时刻与下游服务节点出现服务故障的起始时刻(即阶段1的起始时刻)的时间间隔大于或等于阶段1的预设拦截时长时,服务节点进入阶段2;在当前时刻与阶段2的起始时刻的时间间隔大于或等于阶段2的预设拦截时长时,服务节点进入阶段3;在当前时刻与阶段3的起始时刻的时间间隔大于或等于阶段3的预设拦截时长时,服务节点进入阶段4。
此时,该服务处理方法流程示意图可以如图6所示。在S601中,服务节点接收第一服务调用请求,第一服务调用请求用于请求第一服务。在S602中,服务节点判断下游服务节点是否出现服务故障,若下游服务节点出现服务故障,执行S603,若下游服务节点没有出现服务故障,执行S607。在S603中,服务节点判断第一服务调用请求是否为预设请求,若第一服务调用请求为预设请求,执行S607,若第一服务调用请求不是预设请求,执行S604。在S604中,判断服务节点在目标阶段拦截的服务调用请求数量是否小于该目标阶段的预设拦截请求数量阈值,若是,执行S606,若否,执行S605。在S605中,判断当前时刻与该目标阶段的起始时刻的时间间隔是否小于该目标阶段的预设拦截时长;若当前时刻与该目标阶段的起始时刻的时间间隔小于该目标阶段的预设拦截时长,执行S607,若当前时刻与该目标阶段的起始时刻的时间间隔大于或等于该目标阶段的预设拦截时长,执行S606。在S606中,服务节点向上游服务节点发送调用失败响应。在S607中,服务节点向下游服务节点发送第二服务调用请求。
可以理解的是,当下游服务节点出现服务故障、第一服务调用请求不是预设请求、服务节点在目标阶段拦截的服务调用请求数量大于或等于该目标阶段的预设拦截请求数量阈值且当前时刻与该目标阶段的起始时刻的时间间隔大于或等于该目标阶段的预设拦截时长时,服务节点进入该目标阶段的下一个阶段。
可以理解的是,该目标阶段可以为阶段1、阶段2、阶段3和阶段4中的任意一个阶段。
例如,假设该目标阶段为阶段1,阶段1的预设拦截请求数量阈值为25个。若服务节点在阶段1拦截的服务调用请求数量为20个,则服务节点向上游服务节点发送调用失败响应。
又如,假设该目标阶段为阶段1,阶段1的预设拦截请求数量阈值为25个,且阶段1的预设拦截时长为15分钟。若服务节点在阶段1拦截的服务调用请求数量为25个,且当前时刻与该阶段1的起始时刻的时间间隔为10分钟,向下游服务节点发送第二服务调用请求。
再如,假设该目标阶段为阶段1,阶段1的预设拦截请求数量阈值为25个,且阶段1的预设拦截时长为15分钟。若服务节点在阶段1拦截的服务调用请求数量为25个,且当前时刻与该阶段1的起始时刻的时间间隔为15分钟,则服务节点向上游服务节点发送调用失败响应,且该服务节点进入阶段2。
图7为本申请一个实施例提供的四个阶段时间示意图。假设t1与t0之间的时间间隔为阶段1的预设拦截时长,t2与t1之间的时间间隔为阶段2的预设拦截时长,t3与t2之间的时间间隔为阶段3的预设拦截时长,t4与t3之间的时间阶段为阶段4的预设拦截时长。
其中,t0为阶段1的开始时间,t1为阶段2的开始时间,t2为阶段3的开始时间,t3为阶段4的开始时间。
假设目标阶段为阶段1,则可以将当前时刻与t1时刻进行比较即可。若当前时刻位于t1之前,则表示当前时间与阶段1的起始时间的时间间隔小于阶段1的预设拦截时长;若当前时刻位于t1之后或与t1时刻重合,则当前时间与阶段1的起始时间的时间间隔大于或等于达到阶段1的预设拦截时长。
图8为本申请一个实施例提供的服务处理装置示意图,如图8所示,该服务处理装置800可以包括:接收模块801和发送模块802。
该服务处理装置800可以用于实现图3所示实施例的服务处理方法流程示意图。其中,接收模块801可以用于执行S301的步骤,发送模块802可以用于执行S302的步骤。
图9为本申请另一个实施例提供的服务处理装置示意图,如图9所示,该服务处理装置900包括:处理器901和接口电路902。处理器901和接口电路902之间相互耦合。可以理解的是,接口电路902可以为收发器或输入输出接口。可选的,该服务处理装置900还可以包括存储器903,用于存储处理器901执行的指令或存储处理器901运行指令所需要的输入数据或存储处理器901运行指令后产生的数据。
作为一个示例,接口电路902可以用于实现上述接收模块801和发送模块802的功能。
可以理解的是,本申请的实施例中的处理器可以是中央处理单元,还可以是其它通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其它可编程逻辑器件、晶体管逻辑器件,硬件部件或者其任意组合。通用处理器可以是微处理器,也可以是任何常规的处理器。
本申请的实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器、闪存、只读存储器、可编程只读存储器、可擦除可编程只读存储器、电可擦除可编程只读存储器、寄存器、硬盘、移动硬盘、只读光盘(CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(application specific integrated circuit,ASIC)中。另外,该专用集成电路可以位于网络设备或终端设备中。当然,处理器和存储介质也可以作为分立组件存在于网络设备或终端设备中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机程序或指令。在计算机上加载和执行所述计算机程序或指令时,全部或部分地执行本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、用户设备或者其它可编程装置。所述计算机程序或指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序或指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是集成一个或多个可用介质的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,例如,软盘、硬盘、磁带;也可以是光介质,例如,数字视频光盘;还可以是半导体介质,例如,固态硬盘。
在本申请的各个实施例中,如果没有特殊说明以及逻辑冲突,不同的实施例之间的术语和/或描述具有一致性、且可以相互引用,不同的实施例中的技术特征根据其内在的逻辑关系可以组合形成新的实施例。本文中的术语“多个”是指两个或两个以上。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系;在公式中,字符“/”,表示前后关联对象是一种“相除”的关系。
可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。
可以理解的是,在本申请的实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请的实施例的实施过程构成任何限定。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围由权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (11)
1.一种服务处理方法,其特征在于,包括:
服务节点接收第一服务调用请求,所述第一服务调用请求用于请求第一服务;
当所述服务节点的下游服务节点出现服务故障时,若所述第一服务调用请求为预设请求,所述服务节点向所述下游服务节点发送第二服务调用请求,所述第二服务调用请求用于请求第二服务,所述第二服务为实现所述第一服务需要调用的服务,所述下游服务节点用于提供所述第二服务,所述下游服务节点出现服务故障包括所述下游服务节点的响应速度慢或所述下游服务节点响应失败的比例超过预设阈值。
2.根据权利要求1所述的方法,其特征在于,所述第一服务调用请求中包括业务标识信息和用户标识信息;
相应地,所述第一服务调用请求为预设请求包括:预设白名单中包含所述业务标识信息,或所述预设白名单中包括所述用户标识信息,所述预设白名单用于记录需要及时提供服务的业务标识信息和用户标识信息。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
若所述下游服务节点出现服务故障、所述第一服务调用请求不是预设请求且在目标时长内所述服务节点向所述下游服务节点发送的服务调用请求数量小于预设请求数量阈值,则所述服务节点向所述下游服务节点发送所述第二服务调用请求,所述目标时长为所述服务节点确定所述下游服务节点本次出现服务故障的起始时刻至当前时刻。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若所述下游服务节点出现服务故障、所述第一服务调用请求不是预设请求、在所述目标时长内所述服务节点向所述下游服务节点发送的服务调用请求数量大于或等于所述预设请求数量阈值,且所述目标时长大于或等于预设时长,则所述服务节点向所述下游服务节点发送所述第二服务调用请求,且确定所述下游服务节点服务故障已去除。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
所述服务调用请求数量等于所述预设请求数量阈值时,所述服务节点将数量标志位的值设置为预设值,所述预设值用于表示所述目标时长内所述服务调用请求数量已大于或等于所述预设请求数量阈值;
相应地,所述目标时长内所述服务节点向所述下游服务节点发送的服务调用请求数量大于或等于预设请求数量阈值,包括:所述数量标志位的值为所述预设值。
6.根据权利要求4或5所述的方法,其特征在于,所述方法还包括:
若所述下游服务节点出现服务故障、所述第一服务调用请求不是预设请求、在所述目标时长内所述服务节点向所述下游服务节点发送的服务调用请求数量大于或等于所述预设请求数量阈值,且所述目标时长小于所述预设时长,则所述服务节点发送调用失败响应,所述调用失败响应用于指示所述第一服务调用请求失败。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
若所述下游服务节点没有服务故障,则所述服务节点向所述下游服务节点发送所述第二服务调用请求。
8.一种服务处理装置,其特征在于,包括:
接收模块,用于服务节点接收第一服务调用请求,所述第一服务调用请求用于请求第一服务;
发送模块,用于当所述服务节点的下游服务节点出现服务故障时,若所述第一服务调用请求为预设请求,所述服务节点向所述下游服务节点发送第二服务调用请求,所述第二服务调用请求用于请求第二服务,所述第二服务为实现所述第一服务需要调用的服务,所述下游服务节点用于提供所述第二服务,所述下游服务节点出现服务故障包括所述下游服务节点的响应速度慢或所述下游服务节点响应失败的比例超过预设阈值。
9.一种服务调用装置,其特征在于,包括存储器,以及与存储器耦合的处理器;
所述存储器用于存储程序指令;
所述处理器用于执行所述程序指令,以实现如权利要求1至7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储用于计算机执行的程序代码,该程序代码包括用于实现如权利要求1至7中任一项所述的方法的指令。
11.一种计算机程序产品,其特征在于,包括计算机程序,该计算机程序被处理器执行时实现如权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210767771.8A CN115174658A (zh) | 2022-07-01 | 2022-07-01 | 服务处理方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210767771.8A CN115174658A (zh) | 2022-07-01 | 2022-07-01 | 服务处理方法及相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115174658A true CN115174658A (zh) | 2022-10-11 |
Family
ID=83489102
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210767771.8A Pending CN115174658A (zh) | 2022-07-01 | 2022-07-01 | 服务处理方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115174658A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109976935A (zh) * | 2019-03-14 | 2019-07-05 | 北京三快在线科技有限公司 | 微服务架构、微服务节点及其熔断恢复方法、装置 |
US20190222526A1 (en) * | 2018-01-14 | 2019-07-18 | International Business Machines Corporation | Adaptable circuit breaker chain for microservices |
CN112995051A (zh) * | 2021-02-05 | 2021-06-18 | 中国工商银行股份有限公司 | 网络流量恢复方法及装置 |
CN114157717A (zh) * | 2021-11-05 | 2022-03-08 | 福建福诺移动通信技术有限公司 | 一种微服务动态限流的系统及方法 |
-
2022
- 2022-07-01 CN CN202210767771.8A patent/CN115174658A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190222526A1 (en) * | 2018-01-14 | 2019-07-18 | International Business Machines Corporation | Adaptable circuit breaker chain for microservices |
CN109976935A (zh) * | 2019-03-14 | 2019-07-05 | 北京三快在线科技有限公司 | 微服务架构、微服务节点及其熔断恢复方法、装置 |
CN112995051A (zh) * | 2021-02-05 | 2021-06-18 | 中国工商银行股份有限公司 | 网络流量恢复方法及装置 |
CN114157717A (zh) * | 2021-11-05 | 2022-03-08 | 福建福诺移动通信技术有限公司 | 一种微服务动态限流的系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107832100B (zh) | 一种apk插件的加载方法及其终端 | |
CN108540533B (zh) | 一种应答请求的方法和装置 | |
CN110781129B (zh) | 一种fpga异构加速卡集群中的资源调度方法、设备及介质 | |
CN110601868B (zh) | 实时分发配置信息的分布式系统、方法和电子设备 | |
CN111355600B (zh) | 一种主节点确定方法和装置 | |
CN115002143B (zh) | 一种节点选举的方法、装置、存储介质及电子设备 | |
CN111459760A (zh) | 一种微服务监控方法、装置及计算机存储介质 | |
CN114584480A (zh) | 用于服务降级处理的方法和装置 | |
CN113867915A (zh) | 任务调度方法、电子设备及存储介质 | |
CN115174658A (zh) | 服务处理方法及相关装置 | |
CN115970295A (zh) | 请求处理方法、装置和电子设备 | |
CN113765504B (zh) | 一种通用动态延时消抖方法、装置、终端及存储介质 | |
CN110351334B (zh) | 业务请求处理及支付业务请求处理方法和装置 | |
WO2021077747A1 (zh) | 一种实现应用加载的方法、装置、计算机存储介质及终端 | |
CN111367694B (zh) | 事件处理方法、服务器及计算机存储介质 | |
JPS5926158B2 (ja) | 過負荷制御方式 | |
CN111405313A (zh) | 存储流媒体数据的方法和系统 | |
CN114844952B (zh) | 一种服务处理方法及相关装置 | |
CN114979285B (zh) | 服务调用方法、装置、设备、系统、存储介质及产品 | |
CN114422831B (zh) | 媒体播放方法及装置、电子设备和可读存储介质 | |
CN113162990B (zh) | 消息发送方法、装置、设备和存储介质 | |
CN115086173B (zh) | 网络升级过程中的可靠性保障方法和装置 | |
CN115344410B (zh) | 判断事件执行顺序的方法、装置、存储介质及电子设备 | |
CN114979153B (zh) | 负载均衡方法、计算机设备及存储装置 | |
CN116828032A (zh) | 会话一致性的实现方法及装置 |
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 |