用于微服务的熔断降级方法、装置、设备和介质与流程

文档序号:25481133发布日期:2021-06-15 21:40阅读:144来源:国知局
用于微服务的熔断降级方法、装置、设备和介质与流程

本申请涉及互联网领域,尤其涉及一种熔断降级技术,具体涉及一种用于微服务的熔断降级方法、装置、设备、介质和程序产品。



背景技术:

基于分布式的微服务架构是大型互联网公司主流的后端服务架构。微服务架构的主要特点是:服务多、依赖关系复杂,局部故障可能影响到整个系统的稳定性。

因此,针对依赖服务不稳定的外部资源进行熔断降级是互联网微服务应用保障高可用的重要措施。



技术实现要素:

本申请提供一种用于微服务的熔断降级方法、装置、设备、介质和程序产品,以提高微服务熔断降级的效率和稳定性。

第一方面,本申请提供了一种用于微服务的熔断降级方法,包括:

织入到微服务业务进程中的监控探针,根据获取的熔断降级规则实例化熔断器组件;

所述监控探针将所述熔断器组件织入到所述业务进程中,其中,所述熔断器组件用于对所述业务进程中处理的业务请求进行熔断降级。

第二方面,本申请还提供了一种用于微服务的熔断降级装置,包括织入到微服务业务进程中的监控探针,所述监控探针包括:

实例化模块,用于根据获取的熔断降级规则实例化熔断器组件;

织入模块,用于将所述熔断器组件织入到所述业务进程中,其中,所述熔断器组件用于对所述业务进程中处理的业务请求进行熔断降级。

第三方面,本申请还提供了一种电子设备,包括:

至少一个处理器;以及

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本申请任意实施例所述的用于微服务的熔断降级方法。

第四方面,本申请还提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行本申请任意实施例所述的用于微服务的熔断降级方法。

第五方面,本申请还提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现本申请任意实施例所述的用于微服务的熔断降级方法。

应当理解,本部分所描述的内容并非旨在标识本申请的关键或重要特征,也不用于限制本申请的范围。本申请的其它特征将通过以下的说明书而变得容易理解,上述可选方式所具有的其他效果将在下文中结合具体实施例加以说明。

附图说明

附图用于更好地理解本方案,不构成对本申请的限定。其中:

图1是根据本申请实施例的用于微服务的熔断降级方法的流程示意图;

图2是根据本申请实施例的用于微服务的熔断降级方法的流程示意图;

图3a是根据本申请实施例的用于微服务的熔断降级方法的流程示意图;

图3b是根据本申请实施例的熔断降级方法中熔断器组件的功能流程示意图;

图3c是根据本申请实施例的熔断器组件的状态转换图;

图4是根据本申请实施例的用于微服务的熔断降级装置的结构示意图;

图5是用来实现本申请实施例的用于微服务的熔断降级方法的电子设备的框图。

具体实施方式

以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

图1是根据本申请实施例的用于微服务的熔断降级方法的流程示意图,本实施例可适用于对微服务业务进程中的请求进行熔断降级的情况,涉及互联网领域。该方法可由一种用于微服务的熔断降级装置来执行,该装置采用软件和/或硬件的方式实现,优选是配置于电子设备中,例如计算机设备或服务器等。如图1所示,该方法具体包括如下:

s101、织入到微服务业务进程中的监控探针,根据获取的熔断降级规则实例化熔断器组件。

其中,监控探针可以是由微服务系统中的监控守护组件利用java虚拟机技术织入到微服务的业务进程中,其中监控守护组件是与微服务系统中的业务进程所处同一个容器的agent进程,负责监控业务进程的状态,并注入探针代码。熔断降级规则可以是监控守护组件从数据库中拉取并写入到微服务系统的本地磁盘,其中,该数据库可以是任意数据库,该熔断降级规则可以由用户在微服务系统的配置中心界面上输入并存储在所述数据库中供监控守护组件拉取。而由于业务进程与监控守护进程共享本地磁盘空间,因此,业务进程中的监控探针也可以从本地磁盘中拉取熔断降级规则,由此,通过监控守护组件将熔断降级规则下发至监控探针。

监控探针织入到业务进程中时会携带熔断器sdk,该熔断器sdk包括实现熔断降级功能的组件库,以便监控探针被业务进程加载后,通过该熔断器sdk,并根据获取的熔断降级规则,实例化熔断器组件,根据规则中配置的至少一种阈值填充熔断器组件的各个参数取值。

s102、监控探针将熔断器组件织入到业务进程中,其中,熔断器组件用于对业务进程中处理的业务请求进行熔断降级。

实例化熔断器组件之后,监控探针将熔断器组件织入到业务进程中,以便该熔断器组件对业务进程中处理的业务请求进行熔断降级。

由此,本申请实施例通过探针将熔断器组件织入到业务进程中对请求进行熔断降级,而由于微服务架构中模块众多,依赖服务多,且业务复杂,因此,相比于现有技术中直接通过sdk的方式接入熔断组件或者直接在业务代码中编入硬编码降级逻辑的方法,本申请无需对业务代码进行更改,也无需进行重复性接入,降低了开发和维护成本,止损效率高,而且能够根据获取的熔断降级规则实现精准的降级操作,保证业务的高稳定性。

本申请实施例的技术方案,通过探针实现微服务运行时熔断降级技术,使得微服务开发人员不需要硬编码,就能对运行时的微服务应用进行熔断降级,提高了微服务中熔断降级的效率和稳定性,非常适合流量大、部署规模大的微服务平台使用,能够大幅降低熔断接入成本,提升熔断的止损效率。

图2是根据本申请实施例的用于微服务的熔断降级方法的流程示意图,本实施例在上述实施例的基础上进一步进行优化。如图2所示,该方法具体包括如下:

s201、织入到微服务业务进程中的监控探针,根据获取的熔断降级规则实例化熔断器组件。

s202、监控探针将熔断器组件织入到业务进程中,其中,熔断器组件用于对业务进程中处理的业务请求进行熔断降级。

s203、响应于来自监控守护组件的规则更新命令,监控探针执行卸载操作,其中,规则更新命令是监控守护组件判断熔断降级规则存在更新时生成。

s204、监控探针将当前的卸载状态返回至监控守护组件,以由监控守护组件根据更新的熔断降级规则重新在业务进程中织入监控探针。

本申请实施例中的熔断降级规则是可配置的,而且可以实现动态配置,用户可以根据需要,通过微服务系统的配置中心界面修改、删除或重新设置熔断降级规则,从而实现无侵入的、可配置的动态的熔断降级。

具体的,微服务系统中的监控守护组件可以对存储在数据库中的熔断降级规则进行监控,判断熔断降级规则是否存在更新。当监控守护组件判断熔断降级规则存在更新时,可以生成规则更新命令,并将该规则更新命令写入指定文件存储在本地磁盘。所述监控探针按照预设周期轮询本地磁盘的指定文件,获取规则更新命令,执行卸载操作。卸载完成后,监控探针将当前的卸载状态返回至监控守护组件,监控守护组件根据该卸载状态得知当前的监控探针已卸载,然后根据更新的熔断降级规则重新在业务进程中织入监控探针,此时,更新的熔断降级规则也会写入本地磁盘,以供重新织入的监控探针从本地磁盘中获取更新的熔断降级规则。

相应的,若用户想要删除当前的熔断降级规则,也可以通过配置中心界面进行配置,这时,监控守护组件会将删除规则的命令写入所述指定文件,当前的监控探针获取到该删除规则的命令,便会执行卸载操作。

s205、响应于来自监控守护组件的阈值更新命令,监控探针在业务进程中更新熔断器组件的阈值,其中,阈值更新命令是监控守护组件判断熔断降级规则中的阈值存在更新时生成。

用户也可以仅更改当前熔断降级规则中的一个或多个阈值,此时,监控守护组件若监控到熔断降级规则中的阈值存在更新,则生成阈值更新命令并写入本地磁盘的指定文件,当前的监控探针获取到该阈值更新命令后,便在业务进程中直接根据新阈值更新当前熔断器组件的阈值即可。

本申请实施例的技术方案,通过探针实现微服务运行时熔断降级技术,使得微服务开发人员不需要硬编码,实现无侵入、可配置的动态的熔断降级,提高了微服务熔断降级的效率和稳定性,降低了开发和维护成本。

图3a是根据本申请实施例的用于微服务的熔断降级方法的流程示意图,本实施例在上述实施例的基础上进一步进行优化。如图3a所示,该方法具体包括如下:

s301、织入到微服务业务进程中的监控探针,根据获取的熔断降级规则实例化熔断器组件。

s302、监控探针通过增强业务代码的方式,在业务进程的业务代码中织入熔断器组件的代码,其中,熔断器组件用于对业务进程中处理的业务请求进行熔断降级。

具体的,监控探针实例化熔断器组件后,便开始增强业务代码,通过对业务代码字节码的修改,在原业务代码里织入熔断器组件的相关代码,包括业务代码执行前的组件代码和业务代码执行后的组件代码。一旦熔断器组件的代码织入业务代码中,该业务代码处理的业务请求都将经过熔断器组件的统计,并对需要进行熔断降级的业务请求进行处理。

其中,业务代码执行后的组件代码用于统计业务代码执行是否成功;业务代码执行前的组件代码用于根据业务代码执行是否成功的统计结果和熔断降级规则判断是否进行熔断降级,并在判断为是时执行熔断降级。

具体的,如图3b所示,业务代码执行前的组件代码先判断当前业务请求是否需要进行熔断降级,如果判断为是,则进行熔断降级,如果判断为否,则执行业务代码。业务代码执行之后,由业务代码执行后的组件代码判断业务代码执行是否出现异常,并对执行成功和执行异常的情况分别进行统计。其中,业务代码执行前的组件代码是根据熔断器组件的当前状态来判断是否要进行熔断降级,而熔断器组件的当前状态与业务代码的执行情况有关。

具体的,熔断降级规则至少包括:降级策略、熔断耗时阈值和业务执行的错误率阈值。其中,降级策略例如可以包括:通过自定义降级函数进行降级;或返回空对象;或通过反序列化的方式构造新对象返回。相应的,业务代码执行前的组件代码具体用于:

如果熔断器组件的当前状态为关闭,且业务代码执行的错误率超出错误率阈值,则根据降级策略对当前的业务请求进行降级,并将熔断器组件的当前状态设为开启;

如果熔断器组件的当前状态为开启,且开启的时间超出熔断耗时阈值,则将熔断器组件的当前状态设为半开启;

如果熔断器组件的当前状态为半开启,则在业务请求中,随机对设定数量的业务请求进行熔断降级;

如果熔断器组件的当前状态为半开启,且执行所述设定数量的业务请求的错误率超出错误率阈值,则将熔断器组件的当前状态设为开启,反之,则将熔断器组件的当前状态设为关闭。

图3c即为根据本申请实施例的熔断器组件的状态转换图。初始时,熔断器组件的状态可以为关闭,当业务代码执行的错误率超出错误率阈值,则表明需要对业务请求进行熔断降级,以确保整个微服务的顺利运行。于是会根据降级策略对当前的业务请求进行降级,并将熔断器组件的当前状态设为开启;由于代码执行失败的原因很多,而且存在服务自我修复的可能性,因此,通过熔断耗时阈值来检测熔断器组件开启的时间,如果开启的时间超出熔断耗时阈值,则将熔断器组件的状态设置为半开启,只对部分业务请求进行熔断降级,并对这部分业务的执行情况继续进行监控,如果执行该部分业务请求的错误率超出错误率阈值,则将熔断器组件的当前状态再次设为开启,反之,则将熔断器组件的当前状态设为关闭。

由此,通过织入到业务代码中的熔断器组件的代码,对业务代码的执行情况进行统计,根据统计结果和熔断降级规则来确定熔断器组件的当前状态,并对需要进行熔断降级的业务请求进行熔断降级。

本申请实施例的技术方案,不需要硬编码就能对运行时的微服务应用进行动态的熔断降级,还可以动态的调整熔断降级规则,接入成本低,周期短。而且,织入的熔断器组件能够实时的统计出业务代码中业务请求的访问次数和业务执行的失败次数,自动触发更改熔断器组件的当前状态,从而实现熔断降级,不需要业务方干预就达到精细化控制熔断效果的目的。

图4是根据本申请实施例的用于微服务的熔断降级装置的结构示意图,本实施例可适用于对微服务业务进程中的请求进行熔断降级的情况,涉及互联网领域。该装置可实现本申请任意实施例所述的用于微服务的熔断降级方法。如图4所示,该装置400包括织入到微服务业务进程中的监控探针410,所述监控探针410具体包括:

实例化模块401,用于根据获取的熔断降级规则实例化熔断器组件;

织入模块402,用于将所述熔断器组件织入到所述业务进程中,其中,所述熔断器组件用于对所述业务进程中处理的业务请求进行熔断降级。

可选的,所述监控探针是微服务系统中的监控守护组件织入到所述业务进程中。

可选的,所述熔断降级规则是由用户在所述微服务系统的配置中心界面上输入并存储在数据库,由所述监控守护组件从所述数据库拉取并写入所述微服务系统的本地磁盘,并由所述监控探针从所述本地磁盘获取。

可选的,所述监控探针还包括:

规则更新命令响应模块,用于响应于来自所述监控守护组件的规则更新命令,执行卸载操作,其中,所述规则更新命令是所述监控守护组件判断所述熔断降级规则存在更新时生成;

卸载状态返回模块,用于将当前的卸载状态返回至所述监控守护组件,以由所述监控守护组件根据更新的熔断降级规则重新在所述业务进程中织入监控探针。

可选的,所述监控探针还包括:

阈值更新命令响应模块,用于响应于来自所述监控守护组件的阈值更新命令,在所述业务进程中更新所述熔断器组件的阈值,其中,所述阈值更新命令是所述监控守护组件判断所述熔断降级规则中的阈值存在更新时生成。

可选的,所述织入模块具体用于:

所述监控探针通过增强业务代码的方式,在所述业务进程的业务代码中织入所述熔断器组件的代码。

可选的,所述熔断器组件的代码包括业务代码执行前的组件代码和业务代码执行后的组件代码;

其中,所述业务代码执行后的组件代码用于统计所述业务代码执行是否成功;

所述业务代码执行前的组件代码用于根据所述业务代码执行是否成功的统计结果和所述熔断降级规则判断是否进行熔断降级,并在判断为是时执行熔断降级。

可选的,所述熔断降级规则至少包括:降级策略、熔断耗时阈值和业务执行的错误率阈值。

相应的,所述业务代码执行前的组件代码具体用于:

如果所述熔断器组件的当前状态为关闭,且所述业务代码执行的错误率超出所述错误率阈值,则根据所述降级策略对当前的业务请求进行降级,并将所述熔断器组件的当前状态设为开启;

如果所述熔断器组件的当前状态为开启,且开启的时间超出所述熔断耗时阈值,则将所述熔断器组件的当前状态设为半开启;

如果所述熔断器组件的当前状态为半开启,则在业务请求中,随机对设定数量的业务请求进行熔断降级;

如果所述熔断器组件的当前状态为半开启,且执行所述设定数量的业务请求的错误率超出所述错误率阈值,则将所述熔断器组件的当前状态设为开启,反之,则将所述熔断器组件的当前状态设为关闭。

可选的,所述降级策略包括:

通过自定义降级函数进行降级;或

返回空对象;或

通过反序列化的方式构造新对象返回。

本申请实施例提供的用于微服务的熔断降级装置400可执行本申请任意实施例提供的用于微服务的熔断降级方法,具备执行方法相应的功能模块和有益效果。本实施例中未详尽描述的内容可以参考本申请任意方法实施例中的描述。

根据本申请的实施例,本申请还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。

图5示出了可以用来实施本公开的实施例的示例电子设备500的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。

如图5所示,设备500包括计算单元501,其可以根据存储在只读存储器(rom)502中的计算机程序或者从存储单元508加载到随机访问存储器(ram)503中的计算机程序,来执行各种适当的动作和处理。在ram503中,还可存储设备500操作所需的各种程序和数据。计算单元501、rom502以及ram503通过总线504彼此相连。输入/输出(i/o)接口505也连接至总线504。

设备500中的多个部件连接至i/o接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。

计算单元501可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元501的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元501执行上文所描述的各个方法和处理,例如用于微服务的熔断降级方法。例如,在一些实施例中,用于微服务的熔断降级方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由rom502和/或通信单元509而被载入和/或安装到设备500上。当计算机程序加载到ram503并由计算单元501执行时,可以执行上文描述的用于微服务的熔断降级方法的一个或多个步骤。备选地,在其他实施例中,计算单元501可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行用于微服务的熔断降级方法。

本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。

在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)、区块链网络和互联网。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。

应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。

上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1