插件熔断方法、装置、终端设备及计算机可读存储介质与流程

文档序号:30556859发布日期:2022-06-29 02:59阅读:123来源:国知局
插件熔断方法、装置、终端设备及计算机可读存储介质与流程

1.本技术涉及微服务编排系统及应用插件开发技术领域,尤其涉及一种插件熔断方法、装置、终端设备及计算机可读存储介质。


背景技术:

2.目前,在微服务编排体系中,常使用插件来作为第三方应用集成方法。在一个编排中,插件代表流程的一个节点,在运行到该节点时,插件会执行内部逻辑或调用下层微服务,节点执行完毕后,交由状态机转发到下一个节点,最后由所有节点共同组成一个完整的业务流程。然而,在编排中一旦存在某个节点发生故障,都会对整个流程造成影响。因此,需要一个针对插件节点的异常熔断和限流方案,停止故障节点级联调用引发的雪崩效应并提供应急计划来改善系统的弹性。
3.为了解决上述问题,现有的微服务架构中,通常采用熔断方式进行隔离来限制任何一个接口对业务流程的影响。一种是基于信号量隔离的方式,但该方式基于同步调用无法做到超时处理。另一种是基于熔断组件的线程池隔离方式,其代价是线程上下文切换会造成一定的性能损耗,特别是对低延时的调用会造成较大的影响,使机器资源碎片化。当服务比较多时,每个服务单独维护一个线程池,对服务器资源的开销过大。由于系统服务之间大多是直接调用,因此现有的熔断组件大多是针对服务接口,需要在应用服务中引入相关依赖,并进行一定的设计开发工作,如此以来不仅对微服务的代码侵入性大,且每个服务需要单独维护熔断规则,不利于集成到微服务编排体系中。


技术实现要素:

4.本技术的目的在于提供一种插件熔断方法、装置、终端设备及计算机可读存储介质,该方法可实时根据服务器负载情况判断是否开启熔断监测,并由配置中心统一配置管理并实时下发熔断规则的方法,以解决现有的微服务系统中熔断规则分散,无法确定何时启用、停用以及使用哪种熔断规则,进而导致熔断难以统一管理和实时生效的问题。
5.为实现上述目的,本技术提供一种插件熔断方法,包括:执行编排准备操作,包括启动容器服务,装载默认的熔断配置和插件代码至服务内存中以及运行消息监听器以监听服务器负载状态;接收并解析微服务编排调用信息中的编排协议,将编排协议发送至状态机运行编排服务,并运行编排下一插件节点;根据服务器负载状态判断编排服务是否开启熔断检测,当编排服务不开启熔断检测时,异步调用插件节点并获取服务记录插件运行结果以确定是否触发插件熔断。
6.进一步,作为优选地,所述根据服务器负载状态判断编排服务是否开启熔断检测,还包括:当编排服务开启熔断检测时,判断当前插件节点是否处于熔断状态;若是,则判断当前插件节点是否配置有降级逻辑,并在当前插件节点配置有降级
逻辑时执行降级逻辑;若否,则异步调用插件节点并获取服务记录插件运行结果以确定是否触发插件熔断。
7.进一步,作为优选地,所述的插件熔断方法,还包括:若当前插件节点没有配置降级逻辑,抛出block异常。
8.进一步,作为优选地,所述异步调用插件节点并获取服务记录插件运行结果以确定是否触发插件熔断,包括:根据服务记录插件运行结果,判断当前插件节点是否达到熔断条件;若是,则触发插件熔断,并抛出block异常;若否,则判断编排服务是否存在下一插件节点;当编排服务存在下一插件节点时,返回执行运行编排下一插件节点步骤;当编排服务不存在下一插件节点时,缓存编排服务执行结果并结束编排流程。
9.进一步,作为优选地,在所述在当前插件节点配置有降级逻辑时执行降级逻辑之后,还包括:执行判断编排服务是否存在下一插件节点步骤。
10.进一步,作为优选地,在所述运行编排下一插件节点之后,还包括:根据编排协议判断当前插件节点是否更新熔断规则,若是,则将更新后的熔断规则进行缓存。
11.进一步,作为优选地,所述熔断规则为根据插件运行失败次数、超时次数、运行失败率及超时率来确定。
12.本技术还提供一种插件熔断装置,包括:准备单元,用于执行编排准备操作,包括启动容器服务,装载默认的熔断配置和插件代码至服务内存中以及运行消息监听器以监听服务器负载状态;解析单元,用于接收并解析微服务编排调用信息中的编排协议,将编排协议发送至状态机运行编排服务,并运行编排下一插件节点;熔断检测单元,用于根据服务器负载状态判断编排服务是否开启熔断检测,当编排服务不开启熔断检测时,异步调用插件节点并获取服务记录插件运行结果以确定是否触发插件熔断。
13.本技术还提供一种终端设备,包括:一个或多个处理器;存储器,与所述处理器耦接,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上任一项所述的插件熔断方法。
14.本技术还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述的插件熔断方法。
15.相对于现有技术,本技术的有益效果在于:1)本技术通过将熔断组件提升到容器中统一配置管理和执行,对下游微服务无感知无侵入,提高了用户体验。
16.2)通过实时统计服务器负载情况计算是否进行熔断,无需手动修改配置,更加灵
活高效,适用范围更广。
17.3)结合插件异步调用的方式监听回调,没有各服务接口的资源独占,降低了系统资源的消耗,达到传统隔离方式无法达到的效果,进而提升用户体验。
附图说明
18.为了更清楚地说明本技术的技术方案,下面将对实施方式中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
19.图1是本技术某一实施例提供的插件熔断方法的流程示意图;图2是本技术某一实施例提供的微服务集成编排系统的结构示意图;图3是本技术又一实施例提供的插件熔断方法的流程示意图;图4是本技术某一实施例提供的插件熔断装置的结构示意图;图5是本技术某一实施例提供的终端设备的结构示意图。
具体实施方式
20.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
21.应当理解,文中所使用的步骤编号仅是为了方便描述,不对作为对步骤执行先后顺序的限定。
22.应当理解,在本技术说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本技术。如在本技术说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
23.术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
24.术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
25.为了帮助理解,首先对本技术涉及的相关术语进行解释:插件:一种可拔插的软件,可以植入别的系统中,用于增强原来系统的功能。
26.状态机:运行在编排系统中的组件,可通过解析编排协议的方式判断节点状态并记录节点运行结果,根据各种逻辑组件和节点状态驱动编排流转到下一个节点上。
27.级联故障:互连系统的一种情况,一个接口或服务的故障可能导致系统相关区域的故障,并将其自身传播到整个系统中,引发类似多米诺骨牌的效应。
28.线程切换损耗:每个cpu一个时间片(通常为几十毫秒)内只能运行一个线程,当系统运行线程数大于cpu核心数的时候,cpu会自动切换线程,以保证所有的线程在一段时间内都有机会被执行。而在切换线程前需要保存上一个任务的状态(线程上下文),以便下次切换回这个任务时可以再加载这个任务的状态。因此,频繁切换线程会造成额外的系统性能损耗。
29.需要说明的是,相较于传统架构,微服务架构下需要通过各个微服务之间的协作来实现一个完整的业务流程,而如何做到系统高集成、服务高可用和业务的灵活性和成为开发者需要关注的问题。目前,微服务编排是这个领域的一个解决方案。在微服务编排体系中,常使用插件来作为第三方应用集成的方式。
30.现有的微服务架构中,熔断是通过对服务接口使用隔离技术,例如隔板,泳道和断路器模式来限制任何一个接口的影响,又比如使用命令模式将所有对外的调用包装在一个对象中,并将该对象放在单独的线程中执行,每个服务都维护着一个线程池,线程池被耗尽则拒绝请求。当服务故障数量或百分比超过了阈值时,熔断器开关自动打开,一段时间内停止对该服务的所有请求。请求失败、被拒绝、超时或熔断时执行降级逻辑,以此保证其余正常业务的流转。目前业界常用的组件有netflix团队开发的hystrix和阿里巴巴团队开发的sentinel。然而现有的熔断组件大多是基于线程池隔离,使用线程隔离的代价是线程上下文切换会造成一定的性能损耗,特别是对低延时的调用有比较大的影响,会让机器资源碎片化。当服务比较多时,每个服务单独维护一个线程池,对服务器资源的开销过大。虽然也有基于信号量隔离的方案,但该方案基于同步调用无法做到超时处理。
31.由于系统服务之间大多是直接调用,因此现有的熔断组件大多是针对服务接口,需要在应用服务中引入相关依赖,并进行一定的设计开发工作。而这种方法中每个服务或接口线程池大小不好界定,固定的线程池大小,高峰时不够用,平时又用不完,而充分利用计算机资源则需要开发人员根据经验时常调整各服务的线程池大小。从实际应用上说,如果服务器负载不高,熔断是没有意义的,可能会使原先可以正常返回的请求返回异常,降低用户体验。同时,该方法对微服务的代码侵入性大,并且每个服务需要单独维护熔断规则,不利于集成到微服务编排体系中。
32.为了解决上述问题,本技术旨在提供一套可实时根据服务器负载情况判断是否开启熔断监测,并由配置中心统一配置管理并实时下发熔断规则的方法,希望以此能够解决微服务系统中熔断规则分散,对何时启用、何时停用、使用哪种熔断规则等难以统一管理、难以实时生效的问题。
33.请参阅图1,在本技术某一实施例中,首先提供了一种插件熔断方法。如图1所示,该插件熔断方法包括步骤s10至步骤s30。各步骤具体如下:s10、执行编排准备操作,包括启动容器服务,装载默认的熔断配置和插件代码至服务内存中以及运行消息监听器以监听服务器负载状态。
34.首先,本方案的实施需要基于两个组件,一个是插件容器,即运行插件的平台,用于运行熔断策略,同时作为配置中心统一配置管理熔断规则。作为优选地,本步骤中采用微服务编排系统,其中微服务编排系统的结构示意图如图2所示,由图2可知,微服务编排系统中包含多个编排,在一个编排中,插件代表流程的一个节点,在运行到该节点时,插件会执行内部逻辑或调用下层微服务,节点执行完毕后,交由状态机转发到下一个节点。n个节点加上逻辑组件(如条件判断、递归等),组成一个完整的业务流程。而另一个组件则是插件,运行在插件容器中,由容器发起调用,内部执行业务代码或调用第三方应用服务。
35.基于这两个组件,步骤s10中就可以执行编排准备操作,启动容器服务,使得插件容器进入运行状态,然后装载默认的熔断配置和插件代码至服务内存中,并开启守护线程,运行消息监听器以监听服务器负载状态。
36.s20、接收并解析微服务编排调用信息中的编排协议,将编排协议发送至状态机运行编排服务,并运行编排下一插件节点;本步骤中,用户首先发起编排调用,然后将调用信息存入消息中间件,并发送消息至运行消息监听器,在运行消息监听器接收到监听的消息之后,就会解析编排协议,运行该编排流程,当运行完后自动运行编排下一插件节点。
37.在某一个实施例中,在所述运行编排下一插件节点之后,还包括:根据编排协议判断当前插件节点是否更新熔断规则,若是,则将更新后的熔断规则进行缓存。
38.请参阅图3,图3提供了一套完整的插件熔断方法,如图3所示,在运行编排下一节点之后,还会通过协议判断节点是否更新了熔断规则;如果是,则更新节点的熔断规则并进行缓存,防止运行时误采用旧的规则;如果没有更新熔断规则,则可以继续执行下一步。
39.s30、根据服务器负载状态判断编排服务是否开启熔断检测,当编排服务不开启熔断检测时,异步调用插件节点并获取服务记录插件运行结果以确定是否触发插件熔断。
40.本步骤中,首先需要根据服务器负载状态判断编排服务是否开启熔断检测,如果没有开启熔断检测,则异步调用插件节点,并获取服务记录插件运行结果以确定是否触发插件熔断。
41.如图3所示,在某一个实施例中,根据服务器负载状态判断编排服务是否开启熔断检测,还包括:当编排服务开启熔断检测时,判断当前插件节点是否处于熔断状态;若是,则判断当前插件节点是否配置有降级逻辑,若当前插件节点配置有降级逻辑则执行降级逻辑,再转入判断编排是否存在下一节点的步骤;若当前插件节点没有配置降级逻辑,则抛出block异常。
42.若否,则异步调用插件节点并获取服务记录插件运行结果以确定是否触发插件熔断。
43.如图3所示,在一具体实施方式中,所述异步调用插件节点并获取服务记录插件运行结果以确定是否触发插件熔断,包括:根据服务记录插件运行结果,判断当前插件节点是否达到熔断条件;若是,则触发插件熔断,并抛出block异常;若否,则判断编排服务是否存在下一插件节点;当编排服务存在下一插件节点时,返回执行运行编排下一插件节点步骤;当编排服务不存在下一插件节点时,缓存编排服务执行结果并结束编排流程。
44.在某一实施例中,还提供了熔断过程的原理,包括以下内容:1) 核心属性fuserules:用于存放该节点的熔断规则,可配置多种,使用列表存放一组链式对象;2) 核心方法check():负责检查插件节点是否达到熔断条件,由子类重写具体逻辑,使用责任链模式依次检查节点是否达到某种规则的熔断条件;3) 核心方法refreshrules():刷新节点熔断规则属性fuserules,由服务启动时载入默认规则,运行插件时根据协议解析出的熔断配置再次刷新规则,该方法是个同步方法;
4) 核心方法saveinvoke():将节点本次调用结果存入内存,可以使用本地内存或nosql数据库,本系统中使用的是redis6.0;利用redis中的zset数据类型,将调用时间戳作为score,节点id作为key,节点调用结果对象作为value,此存储方式方便根据调用时间统计;5) 核心方法monitoringsystemload():每隔30秒监测系统负载情况,将当前是否应启动熔断监控写入到容器上下文中,供插件运行时使用;在某一实施例中,熔断规则为根据插件运行失败次数、超时次数、运行失败率及超时率来确定。为了更清楚的阐释熔断规则、默认配置及生效条件的相关内容,本实施例提供了下表1进行说明:表1各熔断规则的默认配置及生效条件列表
熔断规则默认配置生效条件一定时间内插件运行失败/超时次数达到某个数量级3分钟内失败/超时20次,熔断时间3分钟;到期后放行请求1个请求,若失败继续熔断服务器cpu使用率》=80%服务器负载(单核)》=0.9一定时间内插件运行失败/超时率达到某个阈值5分钟内失败/超时数占总请求数的60%,熔断时间10分钟;到期后放行请求1个请求,若失败继续熔断服务器cpu使用率》=60%服务器负载(单核)》=0.8
根据表1可知,当熔断规则为一定时间内插件运行失败或者超时次数达到某个数量级时,默认配置可以为:3分钟内失败/超时20次,熔断时间3分钟;到期后放行请求1个请求,若失败继续熔断;而对应的生效条件则为:服务器cpu使用率》=80%,且服务器负载(单核)》= 0.9;若熔断规则为一定时间内插件运行失败或者超时率达到某个阈值,则默认配置可以为:5分钟内失败/超时数占总请求数的60%,熔断时间10分钟;到期后放行请求1个请求,若失败继续熔断;而对应的生效条件则为:服务器cpu使用率》=60%,且服务器负载(单核)》= 0.8。
45.综上所述,本技术实施例提供的插件熔断方法,通过将熔断组件提升到容器中运行,通过容器对流程中的节点进行熔断限流,无需对下游微服务做任何额外改造工作,解决了常用熔断组件对服务代码的高侵入性,难以快速集成到服务编排系统中的问题。同时,本技术抛弃了传统上使用线程池隔离或信号量隔离的技术思路,无需每个插件维护一个线程池,而是通过每次异步运行插件监听回调的方式,减少线程池对系统资源的长期占用,更适合在流程编排领域使用。
46.请参阅图4,在本技术某一实施例中,还提供一种插件熔断装置,包括:准备单元01,用于执行编排准备操作,包括启动容器服务,装载默认的熔断配置和插件代码至服务内存中以及运行消息监听器以监听服务器负载状态;解析单元02,用于接收并解析微服务编排调用信息中的编排协议,将编排协议发送至状态机运行编排服务,并运行编排下一插件节点;熔断检测单元03,用于根据服务器负载状态判断编排服务是否开启熔断检测,当编排服务不开启熔断检测时,异步调用插件节点并获取服务记录插件运行结果以确定是否触发插件熔断。
47.可以理解的是,该插件熔断装置用于执行如上述任一项实施例所述的插件熔断方法,并实现与其相同的效果,在此不再进一步赘述。
48.请参阅图5,本技术某一实施例提供一种终端设备,包括:一个或多个处理器;
存储器,与所述处理器耦接,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上所述的插件熔断方法。
49.处理器用于控制该终端设备的整体操作,以完成上述的插件熔断方法的全部或部分步骤。存储器用于存储各种类型的数据以支持在该终端设备的操作,这些数据例如可以包括用于在该终端设备上操作的任何应用程序或方法的指令,以及应用程序相关的数据。该存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(static random access memory,简称sram),电可擦除可编程只读存储器(electrically erasable programmable read-only memory,简称eeprom),可擦除可编程只读存储器(erasable programmable read-only memory,简称eprom),可编程只读存储器(programmable read-only memory,简称prom),只读存储器(read-only memory,简称rom),磁存储器,快闪存储器,磁盘或光盘。
50.在一示例性实施例中,终端设备可以被一个或多个应用专用集成电路(application specific 1ntegrated circuit,简称as1c) 、数字信号处理器(digital signal processor,简称dsp) 、数字信号处理设备(digital signal processing device ,简称dspd)、可编程逻辑器件(programmable logic device,简称pld) 、现场可编程门阵列(field programmable gate array ,简称fpga) 、控制器、微控制器、微处理器或其他电子元件实现,用于执行如上述任一项实施例所述的插件熔断方法,并达到如上述方法一致的技术效果。
51.在另一示例性实施例中,还提供一种包括计算机程序的计算机可读存储介质,该计算机程序被处理器执行时实现如上述任一项实施例所述的插件熔断方法的步骤。例如,该计算机可读存储介质可以为上述包括计算机程序的存储器,上述计算机程序可由终端设备的处理器执行以完成如上述任一项实施例所述的插件熔断方法,并达到如上述方法一致的技术效果。
52.以上所述是本技术的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本技术的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1