CN112131036A - 一种过载保护方法、装置、设备及计算机可读存储介质 - Google Patents

一种过载保护方法、装置、设备及计算机可读存储介质 Download PDF

Info

Publication number
CN112131036A
CN112131036A CN202011071959.6A CN202011071959A CN112131036A CN 112131036 A CN112131036 A CN 112131036A CN 202011071959 A CN202011071959 A CN 202011071959A CN 112131036 A CN112131036 A CN 112131036A
Authority
CN
China
Prior art keywords
fusing
granularity
rule
execution unit
overload protection
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
Application number
CN202011071959.6A
Other languages
English (en)
Inventor
刘智新
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202011071959.6A priority Critical patent/CN112131036A/zh
Publication of CN112131036A publication Critical patent/CN112131036A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions

Abstract

本申请提供了一种过载保护方法、装置、设备及计算机可读存储介质;该方法包括:接收规则配置设备发送的与目标微服务的至少一个熔断粒度对应的至少一个熔断规则;至少一个熔断粒度指明了熔断的范围级别;依据至少一个熔断规则中的每个熔断规则,统计出每个熔断粒度内的执行单位所对应的统计指标;统计指标用于表征每个熔断粒度内的执行单位针对请求的响应情况;基于执行单位对应的统计指标,以及至少一个熔断规则中与每个熔断粒度对应的熔断规则,确定出执行单位的熔断状态;依据熔断状态,对每个熔断粒度内的执行单位进行熔断控制,实现对目标微服务的过载保护。通过本申请,能够提高微服务的服务质量。

Description

一种过载保护方法、装置、设备及计算机可读存储介质
技术领域
本申请涉及微服务技术,尤其涉及一种过载保护方法、装置、设备及计算机可读存储介质。
背景技术
微服务是指将单一的软件产品分成多个单独的服务,通过这些服务的协同运作,为用户提供服务,从而实现软件产品的功能,并且,微服务可以借助于云技术实现。也就是说,微服务的各个服务能够独立部署,从而能够提高系统的容错性。微服务的复杂度会随着服务的个数,以及单个服务中的实例个数的增长而大幅增长。过载保护就是为了避免某个微服务的复杂度过高,从而影响系统的性能的保护手段。
相关技术中,微服务过载保护的大多是针对单一粒度进行的,这在执行过载保护时会给微服务的响应造成影响,例如只有小范围的实例出现问题但是却要直接熔断整个微服务,从而影响给其他微服务带来影响。可见,针对单一粒度进行过载保护,会使得微服务的健壮性降低,从而影响微服务的服务质量。
发明内容
本申请实施例提供一种过载保护方法、装置、设备及计算机可读存储介质,能够提升微服务的服务质量。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种过载保护方法,包括:
接收规则配置设备发送的与目标微服务的至少一个熔断粒度对应的至少一个熔断规则;所述至少一个熔断粒度指明了熔断的范围级别;
依据所述至少一个熔断规则中的每个熔断规则,统计出每个熔断粒度内的执行单位所对应的统计指标;所述统计指标用于表征所述每个熔断粒度内的执行单位针对请求的响应情况;
基于所述执行单位对应的统计指标,以及所述至少一个熔断规则中与所述每个熔断粒度对应的熔断规则,确定出所述执行单位的熔断状态;所述熔断状态表征是否开启熔断;
依据所述熔断状态,对所述每个熔断粒度内的所述执行单位进行熔断控制,实现对所述目标微服务的过载保护。
在本申请的一些实施例中,所述统计指标包括:请求失败率;所述统计出所述每个熔断粒度内的执行单位在所述统计周期内的所述统计指标,包括:
统计出所述执行单位在所述统计周期内的请求的总数量;
统计出所述执行单位在所述统计周期内的失败请求的数量;所述失败请求表征未被成功响应的请求;
利用所述失败请求的数量和所述请求的总数量,计算出所述每个熔断粒度内的所述执行单位在所述统计周期内的所述请求失败率。
在本申请的一些实施例中,所述统计指标包括:请求超时率;所述统计出所述每个熔断粒度内的执行单位在所述统计周期内的所述统计指标,包括
统计出所述执行单位在所述统计周期内的请求的总数量;
统计出所述执行单位在所述统计周期内的超时请求的数量;所述超时请求表征响应超时的请求;
利用所述超时请求的数量和所述请求的总数量,计算出所述每个熔断粒度内的所述执行单位在所述统计周期内的所述超时请求率。
本申请实施例提供一种过载保护方法,包括:
当接收到熔断规则配置指令时,响应于所述熔断规则配置指令,从当前显示界面跳转至熔断配置界面;所述当前显示界面为任意显示界面;
在所述熔断配置界面显示的微服务选择窗口,获取进行规则配置的目标微服务,并在所述熔断配置界面显示的熔断粒度选择窗口,提取所述目标微服务的至少一个熔断粒度;
在所述熔断配置界面的规则配置区域中显示的规则配置窗口中,获取到针对所述至少一个熔断粒度中的每个熔断粒度的配置参数;
利用所述每个熔断粒度的配置参数,生成所述每个熔断粒度对应的熔断规则,当对所述至少一个熔断粒度均生成对应的熔断规则时,得到与所述至少一个熔断粒度对应的至少一个熔断规则;
将所述至少一个熔断规则发送给所述过载保护设备,以使得所述过载保护设备利用所述至少一个熔断规则对所述目标微服务进行过载保护。
在本申请的一些实施例中,所述将所述至少一个熔断规则发送给所述过载保护设备,包括:
当接收到界面跳转指令时,响应于所述界面跳转指令,从所述熔断配置界面跳转至规则控制界面;所述规则控制界面用于对所述至少一个熔断规则进行控制;
当接收到作用在所述规则控制界面的下发操作控件上的规则下发指令时,响应于所述规则下发指令,将所述至少一个熔断规则发送给过载保护设备。
本申请实施例提供一种过载保护装置,包括:
规则接收模块,用于接收规则配置设备发送的与目标微服务的至少一个熔断粒度对应的至少一个熔断规则;所述至少一个熔断粒度指明了熔断的范围级别;
指标统计模块,用于依据所述至少一个熔断规则中的每个熔断规则,统计出每个熔断粒度内的执行单位所对应的统计指标;所述统计指标用于表征所述每个熔断粒度内的执行单位针对请求的响应情况;
熔断判断模块,用于基于所述执行单位对应的统计指标,以及所述至少一个熔断规则中与所述每个熔断粒度对应的熔断规则,确定出所述执行单位的熔断状态;所述熔断状态表征是否开启熔断;
熔断控制模块,用于依据所述熔断状态,对所述每个熔断粒度内的所述执行单位进行熔断控制,实现对所述目标微服务的过载保护。
在本申请的一些实施例中,所述每个熔断粒度对应的熔断规则包括指标阈值;所述熔断判断模块,还用于当所述执行单位对应的所述统计指标大于等于所述指标阈值时,确定所述执行单位的所述熔断状态为开启熔断;所述指标阈值是由所述规则配置设备指定的,所述执行单位为微服务、接口或实例;当所述执行单位对应的所述统计指标小于所述指标阈值时,确定所述执行单位的所述熔断状态为关闭熔断。
在本申请的一些实施例中,所述指标统计模块,还用于从所述每个熔断规则中解析出统计周期、请求阈值;所述请求阈值用于判断是否开始获取所述统计指标;根据所述统计周期,获取所述每个熔断粒度内的所述执行单位的请求数量;当所述请求数量大于等于所述请求阈值时,统计出所述每个熔断粒度内的所述执行单位在所述统计周期内的所述统计指标。
在本申请的一些实施例中,所述统计指标包括:请求失败率;
所述指标统计模块,还用于统计出所述执行单位在所述统计周期内的请求的总数量;统计出所述执行单位在所述统计周期内的失败请求的数量;所述失败请求表征未被成功响应的请求;利用所述失败请求的数量和所述请求的总数量,计算出所述每个熔断粒度内的所述执行单位在所述统计周期内的所述请求失败率。
在本申请的一些实施例中,所述统计指标包括:请求超时率;
所述指标统计模块,还用于统计出所述执行单位在所述统计周期内的请求的总数量;统计出所述执行单位在所述统计周期内的超时请求的数量;所述超时请求表征响应超时的请求;利用所述超时请求的数量和所述请求的总数量,计算出所述每个熔断粒度内的所述执行单位在所述统计周期内的所述超时请求率。
在本申请的一些实施例中,所述过载保护装置还包括:熔断恢复模块;所述熔断状态表征开启熔断时,所述熔断恢复模块,还用于从所述每个熔断粒度的所述熔断规则中,解析出熔断恢复时间阈值和熔断恢复请求阈值;其中,所述熔断恢复时间阈值表征从熔断开启状态恢复至允许单个请求的状态的时间,所述熔断恢复请求阈值表征从允许单个请求的状态恢复至正常状态的请求数量;当熔断持续时间达到所述熔断恢复时间阈值时,控制所述每个熔断粒度内的所述执行单位从所述熔断开启状态恢复至所述允许单个请求的状态;所述熔断持续时间表征熔断状态已经开启的时间;当熔断请求数量达到所述熔断恢复请求阈值时,统计所述每个熔断粒度内的所述执行单位的请求处理指标;所述熔断请求数量表征所述允许单个请求的状态时,所述执行单位所响应的请求的数量;当所述请求处理指标小于所述每个熔断粒度对应的熔断规则所指定的处理指标阈值时,将所述每个熔断粒度内的所述执行单位从所述允许单个请求的状态恢复至所述正常状态。
在本申请的一些实施例中,所述熔断判断模块,还用于从所述至少一个熔断粒度中,提取出作用范围最大的最大范围熔断粒度;所述至少一个熔断粒度包括微服务粒度、接口粒度和实例粒度中的至少一个;根据所述最大范围熔断粒度内的最大执行单位所对应的最大统计指标,以及所述最大范围熔断粒度对应的最大范围熔断规则,判断出所述最大范围熔断粒度内的最大执行单位的熔断状态;从所述至少一个熔断粒度中,提取出除所述最大范围熔断粒度之外的其他范围熔断粒度;重复从所述其他范围熔断粒度,提取出新的最大范围熔断粒度,并判断所述新的最大范围熔断粒度内的新的最大执行单位的熔断状态的过程,直至所述其他范围熔断粒度为空时结束,得到所述执行单元的熔断状态。
本申请实施例提供一种规则配置装置,包括:
指令接收模块,用于接收到熔断规则配置指令;
界面跳转模块,用于响应于所述熔断规则配置指令,从当前显示界面跳转至熔断配置界面;所述当前显示界面为任意显示界面;
选择提取模块,用于在所述熔断配置界面显示的微服务选择窗口,获取进行规则配置的目标微服务,并在所述熔断配置界面显示的熔断粒度选择窗口,提取所述目标微服务的至少一个熔断粒度;
参数获取模块,用于在所述熔断配置界面的规则配置区域中显示的规则配置窗口中,获取到针对所述至少一个熔断粒度中的每个熔断粒度的配置参数;
规则生成模块,用于利用所述每个熔断粒度的配置参数,生成所述每个熔断粒度对应的熔断规则,当对所述至少一个熔断粒度均生成对应的熔断规则时,得到与所述至少一个熔断粒度对应的至少一个熔断规则;
规则发送模块,用于将所述至少一个熔断规则发送给所述过载保护设备,以使得所述过载保护设备利用所述至少一个熔断规则对所述目标微服务进行过载保护。
在本申请的一些实施例中,所述规则发送模块,还用于当接收到界面跳转指令时,响应于所述界面跳转指令,从所述熔断配置界面跳转至规则控制界面;所述规则控制界面用于对所述至少一个熔断规则进行控制;当接收到作用在所述规则控制界面的下发操作控件上的规则下发指令时,响应于所述规则下发指令,将所述至少一个熔断规则发送给过载保护设备。
本申请实施例提供一种过载保护设备,包括:
第一存储器,用于存储可执行过载保护指令;
第一处理器,用于执行所述第一存储器中存储的可执行过载保护指令时,实现本申请实施例过载保护设备侧提供的过载保护方法。
本申请实施例提供一种规则配置设备,包括:
第二存储器,用于存储可执行过载保护指令;
第二处理器,用于执行所述第二存储器中存储的可执行过载保护指令时,实现本申请实施例规则配置设备侧提供的过载保护方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行过载保护指令,用于引起第一处理器执行时,实现本申请实施例过载保护侧提供的过载保护方法;或者用于起第二处理器执行时,实现本申请实施例规则配置设备侧提供的过载保护方法。
本申请实施例具有以下有益效果:过载保护设备可以以及每个熔断粒度对应的熔断规则,统计出每个熔断粒度内的执行单位所对应的统计指标,然后再结合每个熔断粒度内的执行单位的统计指标和每个熔断粒度的熔断规则,来判断出是否要对执行单位进行熔断,从而实现对一个或多个熔断粒度中的执行单位的熔断判断,从而实现了对多个级别粒度的熔断的控制,提高了对微服务系统的熔断控制的灵活性,进而加强了微服务的健壮性可用性,最终提升了微服务的服务质量。
附图说明
图1是本申请实施例提供的过载保护系统100的一个可选的架构示意图;
图2(a)是本申请实施例提供的图1中的过载保护设备的结构示意图;
图2(b)是本申请实施例提供的图1中的规则配置设备的结构示意图;
图3是本申请实施例提供的过载保护方法的一个可选的流程示意图一;
图4是本申请实施例提供的熔断配置界面的示例图一;
图5是本申请实施例提供的熔断配置界面的示例图二;
图6是本申请实施例提供的过载保护方法的一个可选的流程示意图二;
图7是本申请实施例提供了规则控制界面的示例图;
图8是本申请实施例提供的对指定的微服务进行规则配置的界面的示例图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
所涉及的术语“第一\第二\第三\第四”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三\第四”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)云技术(Cloud Technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、存储、处理和共享的一种托管技术。
云技术基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活遍历。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分处理,各类行业数据皆需要强大的系统后端支撑,智能通过云计算来实现。
2)微服务,是指将单一服务程序拆分成一组小型的独立服务,这些服务之间互相协调、互相配合,以完成服务程序提供的功能。例如,将社交类应用分为数据获取服务、安全验证服务等,通过这些服务之间的协同运作,为用户提供社交服务。由此可见,微服务强调松耦合,服务独立部署,便于提高系统容错性。
3)熔断,是指当微服务系统中某个微服务满足某些预先设定的阈值条件时,判定该微服务出现了问题,并将该微服务与微服务系统断开,防止这个出了问题的微服务影响其他微服务,从而避免整个微服务系统崩溃。由此可见,熔断是微服务系统为了保护自身而进行的一种主动行为。
4)熔断粒度,表征了熔断的范围级别,也即表征了对微服务的隔离级别。例如,在熔断时,是对微服务进行微服务级别的熔断(即以单个微服务为单位进行熔断),对微服务进行应用程序接口(Application Programming Interface,API)级别的熔断(即以单个API为进行熔断),或者是对微服务进行实例的级别的熔断(实例可以理解为微服务中的节点、进程等,即以单个实例为单位进行熔断)进行熔断隔离等。
5)执行单位,是指熔断粒度内执行服务的最小单位。在不同的熔断粒度内,执行单元是不同的,示例性的,在微服务粒度内,执行单位即是一个个微服务,在熔断时,也是针对微服务进行操作,即在某次熔断时直接将一个或多个微服务熔断;在API粒度内,熔断是针对API进行操作,即在某次熔断时直接将支撑微服务运行的一个或多个API熔断;在实例粒度内,熔断是针对实例进行操作,即在某次熔断时,直接将支撑微服务运行的一个或多个实例,或者是API所调用的一个或多个实例进行熔断。
6)时间周期,是用来统计熔断粒度内的各个执行单位的服务性能的时间的周期。时间周期的时长是固定的,时间周期可以理解为滑动事件窗口、时间范围等,即在各个执行单位的运行时间轴上,用一个滑动事件窗口进行左右移动,一次只对一个滑动时间窗口内的指标进行统计,从而在各个执行单位的运行期间内,多次统计各个执行单位的服务性能。
7)熔断状态,至少存在开启和关闭状态。在一些情况下,熔断状态还可以为半开启状态,此时,执行单位只允许一个请求通过,即只对一个请求进行处理。
8)熔断器,是具体用来执行熔断操作的组件,熔断器内部会记录状态、指标等元信息。
9)抖动,是指服务的平均响应时间快速波动。
微服务是指将单一的软件产品分成多个单独的服务,通过这些服务的协同运作来为用户提供服务。也就是说,微服务的各个服务能够独立部署,从而能够提高系统的容错性。在实际应用中,服务器的复杂度会随着服务的个数,以及单个服务中的实例个数的增长而大幅增大。过载保护就是为了避免某个微服务的复杂度过高,从而避免这个微服务出现问题而导致整个微服务系统雪崩。
相关技术中,微服务过载保护大多是针对单一粒度进行的,例如,只针对某个服务,或者是某个微服务的调用方法进行熔断。也就是说,相关技术中熔断要么是作用在某个微服务上,要么是作用在微服务的某个方法上。这样,即使只有微服务中的小范围实例或者是API出现问题时,也需要将整个微服务,或者是对整个调用微服务的方法进行熔断。这势必会导致其他依赖于该微服务的微服务无法正常工作,从而影响整个微服务系统的服务质量。从而可见,针对单一粒度进行过载保护,会使得微服务的健壮性降低,从而影响微服务的服务质量。
同时,相关技术中,在熔断器从满足设定条件的打开状态,恢复为关闭状态时,大多是通过时间来判定的。例如,在熔断器打开的情况下,打开时间到达一定程度时直接恢复为关闭状态,而不会进行检测,此时,若是服务没有恢复,微服务系统很有可能会产生大量抖动,直到再次触发熔断器打开。在另一些情况下,熔断器虽然具有半打开状态,但是只会探测一个请求,若是这个请求被正确响应,则熔断器会恢复为关闭,若是该请求没有被正确响应,或者是没有被响应,则熔断器会继续开启,这时,如果下游微服务抖动,则本微服务也会抖动。由此可见,相关技术中针对熔断器的恢复控制也较为单一,从而会使得微服务系统容易出现抖动,进而影响微服务的质量。
本申请实施例提供一种过载保护方法、装置、设备及计算机可读存储介质,能够提升微服务的服务质量,下面说明本申请实施例提供的过载保护设备和规则配置设备的示例性应用。本申请实施例提供的过载保护设备可以实施为终端,也可以实施为服务器。其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不作限制。下面,将说明过载保护设备的示例性应用。
参见图1,图1是本申请实施例提供的过载保护系统100的一个可选的架构示意图,为实现支撑一个过载保护应用,规则配置设备400通过网络300连接过载保护设备200,网络300可以是广域网或者局域网,又或者是二者的组合。
当规则配置设备400接收到熔断规则配置指令时,响应于熔断规则配置指令,从当前显示界面跳转至熔断配置界面410。规则配置设备400在熔断配置界面410显示的微服务选择窗口,获取进行规则配置的目标微服务,熔断配置设备400在熔断配置界面410显示的熔断粒度选择窗口,提取目标微服务的至少一个熔断粒度。之后,规则配置设备400在熔断配置界面410的规则配置区域中显示的规则配置窗口中,获取到针对至少一个熔断粒度中的每个熔断粒度的配置参数,并利用每个熔断粒度的配置参数,生成每个熔断粒度对应的熔断规则,当对至少一个熔断粒度均生成对应的熔断规则时,得到与至少一个熔断粒度对应的至少一个熔断规则。之后,规则配置设备400会通过网络300将至少一个熔断规则发送给过载保护设备200。
过载保护设备200接收到规则配置设备400发送的与目标微服务的至少一个熔断粒度对应的至少一个熔断规则,其中,至少一个熔断粒度指明了熔断的范围级别。过载保护设备200依据至少一个熔断规则中的每个熔断规则,统计出每个熔断粒度内的执行单位所对应的统计指标,其中,统计指标用于表征每个熔断粒度内的执行单位针对请求的响应情况。接着,过载保护设备200基于执行单位对应的统计指标,以及至少一个熔断规则中与每个熔断粒度对应的熔断规则,确定出执行单位的熔断状态,熔断状态表征是否开始熔断。最后,过载保护设备200依据熔断状态,对每个熔断粒度的执行单位进行熔断控制,从而实现对目标微服务的过载保护。
在一些实施例中,过载保护设备200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。规则配置设备400可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不做限制。
参见图2(a),图2(a)是本申请实施例提供的图1中的过载保护设备的结构示意图,图2(a)所示的过载保护设备200包括:至少一个第一处理器210、第一存储器250、至少一个第一网络接口220和第一用户接口230。过载保护设备200中的各个组件通过第一总线系统240耦合在一起。可理解,第一总线系统240用于实现这些组件之间的连接通信。第一总线系统240除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2(a)中将各种总线都标为第一总线系统240。
第一处理器210可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
第一用户接口230包括使得能够呈现媒体内容的一个或多个第一输出装置231,包括一个或多个扬声器和/或一个或多个视觉显示屏。第一用户接口230还包括一个或多个第一输入装置232,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
第一存储器250可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。第一存储器250可选地包括在物理位置上远离第一处理器210的一个或多个存储设备。
第一存储器250包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Me mory)。本申请实施例描述的第一存储器250旨在包括任意适合类型的存储器。
在一些实施例中,第一存储器250能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
第一操作系统251,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
第一网络通信模块252,用于经由一个或多个(有线或无线)第一网络接口220到达其他计算设备,示例性的第一网络接口220包括:蓝牙、无线相容性认证(Wi-Fi)、和通用串行总线(USB,Universal Serial Bus)等;
第一呈现模块253,用于经由一个或多个与第一用户接口230相关联的第一输出装置231(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
第一输入处理模块254,用于对一个或多个来自一个或多个第一输入装置232之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的过载保护装置可以采用软件方式实现,图2(a)示出了存储在第一存储器250中的过载保护装置255,其可以是程序和插件等形式的软件,包括以下软件模块:规则接收模块2551、指标统计模块2552、熔断判断模块2553、熔断控制模块2554和熔断恢复模块2555,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。
将在下文中说明各个模块的功能。
在另一些实施例中,本申请实施例提供的过载保护装置可以采用硬件方式实现,作为示例,本申请实施例提供的过载保护装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的过载保护方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific IntegratedCircuit)、DSP、可编程逻辑器件(PLD,Progra mmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmabl e Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。
示例性的,本申请实施例提供一种过载保护设备,包括:
第一存储器,用于存储可执行过载保护指令;
第一处理器,用于执行所述第一存储器中存储的可执行过载保护指令时,实现本申请实施例过载保护设备侧提供的过载保护方法。
参见图2(b),图2(b)是本申请实施例提供的图1中的规则配置设备的结构示意图,图2(b)所示的规则配置设备400包括:至少一个第二处理器410、第二存储器450、至少一个第二网络接口420和第二用户接口430。规则配置设备400中的各个组件通过第二总线系统440耦合在一起。可理解,第二总线系统440用于实现这些组件之间的连接通信。第二总线系统440除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2(b)中将各种总线都标为第二总线系统440。
第二处理器410可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
第二用户接口430包括使得能够呈现媒体内容的一个或多个第二输出装置431,包括一个或多个扬声器和/或一个或多个视觉显示屏。第二用户接口430还包括一个或多个第二输入装置432,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
第二存储器450可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。第二存储器450可选地包括在物理位置上远离第二处理器410的一个或多个存储设备。
第二存储器450包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Me mory)。本申请实施例描述的第二存储器450旨在包括任意适合类型的存储器。
在一些实施例中,第二存储器450能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
第二操作系统451,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
第二网络通信模块452,用于经由一个或多个(有线或无线)第二网络接口420到达其他计算设备,示例性的第二网络接口420包括:蓝牙、无线相容性认证(Wi-Fi)、和通用串行总线(USB,Universal Serial Bus)等;
第二呈现模块453,用于经由一个或多个与第二用户接口430相关联的第二输出装置431(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
第二输入处理模块454,用于对一个或多个来自一个或多个第二输入装置432之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的装置可以采用软件方式实现,图2(b)示出了存储在第二存储器450中的规则配置装置455,其可以是程序和插件等形式的软件,包括以下软件模块:指令接收模块4551、界面跳转模块4552、选择提取模块4553、参数获取模块4554、规则生成模块4555和规则发送模块4556,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。
将在下文中说明各个模块的功能。
在另一些实施例中,本申请实施例提供的规则配置装置可以采用硬件方式实现,作为示例,本申请实施例提供的规则配置装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的规则配置方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific IntegratedCircuit)、DSP、可编程逻辑器件(PLD,Progra mmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmabl e Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。
示例性的,本申请实施例提供一种规则配置设备,包括:
第二存储器,用于存储可执行过载保护指令;
第二处理器,用于执行所述第二存储器中存储的可执行过载保护指令时,实现本申请实施例规则配置设备侧提供的过载保护方法。
下面,将结合本申请实施例提供的过载保护设备和规则配置设备的示例性应用和实施,说明本申请实施例提供的过载保护方法。需要说明的是,本申请可以借助云技术实现。
参见图3,图3是本申请实施例提供的过载保护方法的一个可选的流程示意图一,将结合图3示出的步骤进行说明。需要说明的是,本申请可以借助云技术实现。
S101、当规则配置设备接收到熔断规则配置指令时,响应于熔断规则配置指令,从当前显示界面跳转至熔断配置界面。
本申请实施例是在为微服务人工或机器自主配置熔断规则,并按照配置好的熔断规则来对目标微服务进行过载保护的场景下实现的,从而避免微服务出现问题而影响服务质量。在此场景下,规则配置设备会对每一个接收到的指令进行实时监控并解析,判断出这些指令是需要规则配置设备进行何种操作。当规则配置设备接收到需要开始对微服务进行熔断规则配置的指令,即接收到熔断规则配置指令时,规则配置设备会立即响应于熔断规则配置指令,从当前显示界面跳转到熔断规则配置界面中,以便于后续在熔断规则配置界面中来选择各项配置参数。
需要说明的是,当前显示界面为任意显示界面,也就是说,规则配置设备在接收到熔断规则配置指令之前,其可以显示任意一个界面,例如,显示待机界面,显示视频界面,显示办公软件的使用界面等。但是,只要规则配置设备接收到了熔断规则配置指令,就会立刻创建生成熔断配置界面,然后进入到熔断配置界面中去,以便于尽快开始对配置熔断规则。
可以理解的是,熔断规则配置指令可以是由人工触发的,例如,微服务管理人员通过触碰设置在规则配置设备的显示界面上的熔断规则触发控件,来触发熔断配置指令,或者是对熔断配置设备说出“开始熔断规则配置”的语音指令,来触发熔断规则配置指令。熔断规则配置指令也可以是由规则配置设备自身触发的,示例性的,规则配置设备在指定的时间固定触发熔断规则配置指令,进入到熔断配置界面中,例如,当微服务管理人员设置了在每个月1日调整熔断规则时,或者是微服务系统首次搭建好,需要提醒微服务管理人员及时配置熔断规则,以提高微服务系统的健壮性时。具体的熔断规则配置指令的触发方式可以根据实际需求进行设置,本申请实施例在此不作限定。
S102、规则配置设备在熔断配置界面显示的微服务选择窗口,获取进行规则配置的目标微服务,并在熔断配置界面显示的熔断粒度选择窗口,提取目标微服务的至少一个熔断粒度。
规则配置设备在进入到熔断配置界面中后,可以将显示在熔断配置界面中的微服务选择窗口在当前所选中的微服务进行获取,这个所获取到的微服务,就是规则配置设备认定的要进行规则配置的目标微服务,由此,可以通过熔断配置界面的微服务选择窗口,来指定需要进行规则配置的微服务。同时,规则配置设备还会将显示在熔断配置界面中的熔断粒度选择窗口在当前所选中的级别粒度来进行获取,所获取到的级别粒度,就是熔断粒度。由于在熔断粒度选择窗口中,可以选择到的级别粒度可以是一个,例如,微服务粒度,也可以是多个,例如,微服务粒度和实例粒度,可见,规则配置设备可以获取到至少一个熔断粒度。也就是说,可以通过熔断配置界面的熔断粒度选择窗口,来执行需要进行规则配置的级别粒度。
可以理解的是,微服务选择窗口可以设置在熔断配置界面的第一预设区域中,其中,第一预设区域的大小和位置,均是可以根据实际需求进行设置的,例如,将第一预设区域设置在熔断配置界面的上方,大小设置为100×50,或者是将第一预设区域设置在熔断配置界面的左侧,大小设置为100×100等。在本申请的一些实施例中,微服务选择窗口中当前所选中的微服务,也即目标微服务,可以是由人工选定的,例如,微服务管理人员通过微服务选择窗口提供的下拉菜单中,选择出目标微服务,或者是微服务管理人员通过在微服务选择窗口中输入微服务的编号或者是名称,来选定目标微服务。在另一些实施例中,微服务选择窗口中当前所选中的微服务,也可以是由规则配置设备自动填入的,例如,当进入到熔断配置界面中时,规则设置设备将默认的微服务填入至微服务选择窗口中,从而将该默认的微服务作为目标微服务,或者是规则设置设备将被填入次数最多的微服务直接填入至微服务选择窗口中,从而将被填入次数最多的微服务作为目标微服务。
同理的,熔断粒度选择窗口可以设置在熔断配置界面的第二预设区域中,其中,第二预设区域的大小和位置也是可以根据实际需求进行设定的。例如,将第二预设区域设置在熔断配置界面的右上部分,大小设置为100×50,或者是将第二预设区域设置在熔断配置界面的左下部分,大小设置为100×100。进一步的,熔断粒度选择窗口中当前所选中的级别粒度,可以是由人工选定的,可以是由规则配置设备自动填入的,本申请实施例在此不作限定。
示例性的,本申请实施例提供了熔断配置界面的示例图一,参见图4,在熔断配置界面4-1的上半部分,分别设置有微服务选择窗口4-11和熔断粒度窗口4-12。其中,微服务选择窗口4-11中有微服务管理人员通过微服务选择窗口4-11所提供的下拉菜单(未示出)所填入的微服务:consumer-demo4-111;熔断粒度选择窗口4-12中有规则配置设备自动填入的级别粒度:微服务4-121。
S103、规则配置设备在熔断配置界面的规则配置区域中显示的规则配置窗口中,获取到针对至少一个熔断粒度中的每个熔断粒度的配置参数。
规则配置设备还会将设置在熔断配置界面的中的规则配置区域的一个或多个规则配置窗口中所填入的内容提取出来,将这些提取到的内容作为配置参数,从而得到针对每个熔断粒度的配置参数,以便于后续利用配置参数来生成熔断规则。可以理解的是,规则配置区域中所显示的规则配置窗口可能不止一个。
需要说明的是,由于规则配置设备从熔断粒度选择窗口中所提取出来的熔断粒度可能不止一个,此时,规则配置设备从各个规则配置窗口中所提取到的各个配置参数,就是针对所有提取到的熔断粒度的。也就是说,熔断粒度选择窗口中具有多个不同的熔断粒度时,规则配置设备会将从各个规则配置窗口中所提取到的各个参数,作为每个熔断粒度所对应的配置参数。
在本申请的一些实施例中,规则配置窗口可以为时间周期设置窗口、请求数量设置窗口、触发指标条件设置窗口等,相应的,配置参数可以用于获取统计指标的时间周期、用于判断是否开始统计指标的请求阈值和用于判断是否开始熔断的指标阈值。在另一些实施例中,规则配置窗口中还可以包括熔断恢复时间阈值设置窗口和熔断恢复请求阈值设置窗口,相应的,配置参数可以包括熔断恢复时间阈值和熔断恢复请求阈值。当然,规则配置窗口中还可以包括其他一些内容,例如各个配置参数所对应的单位,以及对配置参数进行的说明等,本申请在此不作限定。
可以理解的是,规则配置区域可以设置在熔断配置界面的第三预设区域。类似的,第三预设区域的大小和位置也可以根据实际情况进行设定,例如,将第三预设区域设置在熔断配置界面的下半部分,大小设置为1000×500,或者是将第三预设区域设置在熔断配置界面的右半部分,大小设置为500×500等,本申请在此不作限定。
进一步的,规则配置区域中的各个规则配置窗口的位置和大小,也可以根据实际需求进行设置。例如,将各个规则配置窗口依次排列设置在规则配置区域的左侧,大小均为100×50,或者是将各个规则配置窗口依次排列设置在规则配置区域的右侧,大小均为100×100等,本申请在此不作限定。
示例性的,本申请实施例提供了熔断配置界面的示例图二,参见图5,在熔断配置界面5-1的下半部分,设置有规则配置区域5-11。在规则配置区域5-11中,设置有时间周期设置窗口5-12、请求数量设置窗口5-13和三个触发指标条件设置窗口,分别为窗口5-14、窗口5-15和窗口5-16,分别用来接收不同的指标阈值。其中,时间周期设置窗口5-12中当前所选中的时间周期为10秒,请求数量设置窗口5-13当前所选中的请求阈值为10次。在区域5-15中,三个触发指标条件设置窗口和这三个指标阈值的简要说明也被显示出来,例如,在窗口5-14周边,显示有达到__%时,触发熔断5-141,而窗口5-14中显示有50,从而表明达到50%时触发熔断;在窗口5-15周边,显示有当响应耗时超过__毫秒时,为响应超时的请求5-151,而在窗口5-15中显示有60000,表明响应耗时达到60000毫秒时,请求为超时请求;在窗口5-16周边,显示当响应超时的请求比例达到__%时,触发熔断5-161,而在窗口5-16中显示有50,即表明了响应超时的请求比例达到50%时,触发熔断。如此,能够结合文字,更清晰的表明所填入的参数是什么。
S104、规则配置设备利用每个熔断粒度的配置参数,生成每个熔断粒度对应的熔断规则,当对至少一个熔断粒度均生成对应的熔断规则时,得到与至少一个熔断粒度对应的至少一个熔断规则。
规则配置设备在得到每个熔断粒度的配置参数之后,就会将每个熔断粒度的配置参数进行打包整合,生成每个熔断粒度对应的熔断规则。当规则配置设备按照该方式对至少一个熔断粒度中的所有熔断粒度都生成了对应的熔断规则时,规则配置设备就得到了与至少一个熔断粒度对应的至少一个熔断规则了。
需要说明的是,规则配置设备可以直接对每个熔断粒度的各个配置参数进行打包整合,得到每个熔断粒度对应的熔断规则,也可以是将各个配置参数进行处理运算,例如,对各个配置参数取整,或者是对各个配置参数所对应的最常用的配置参数进行加权等,将处理之后的各个配置参数进行打包整理,从而得到每个熔断落地所对应的熔断规则。
S105、过载保护设备接收规则配置设备发送的与目标微服务的至少一个熔断粒度对应的至少一个熔断规则。
规则配置设备在得到针对目标微服务的至少一个熔断粒度的至少一个熔断规则之后,就会将至少一个熔断规则发送给过载保护设备,以使得过载保护设备利用至少一个熔断规则对目标微服务进行过载保护。
在本申请的一些实施例中,规则配置设备可以在得到至少一个熔断规则之后,直接通过网络将至少一个熔断规则发送给过载保护设备,还可以是在得到至少一个熔断规则之后,在接收规则下发指令时,再将至少一个熔断规则发送给过载保护设备。
可以理解的是,规则下发指令可以是人工触发的,例如由微服务管理人员触发的;规则下发指令还可以是由规则配置设备触发的,例如,在到达预设时间时规则配置设备自动触发规则下发指令。
需要说明的是,至少一个熔断粒度指明了熔断的范围级别,每个熔断的范围级别中的执行、处理请求的都是由属于该范围级别的一个一个的执行单位实现的,这时,过载保护设备在对目标微服务进行过载保护时,实质上就是判断是否要熔断某个熔断的范围级别内的一些执行单位。在本申请实施例中,至少一个熔断粒度包括微服务粒度、接口粒度和实例粒度中的任意一个或多个,也即,至少一个熔断粒度中可以只包括微服务粒度、接口粒度和实例粒度中的任意一个,还可以是包括微服务粒度、接口粒度和实例粒度中的多个,本申请在此不作限定。
S106、过载保护设备依据至少一个熔断规则中的每个熔断规则,统计出每个熔断粒度内的执行单位所对应的统计指标。
过载保护设备在得到至少一个熔断规则之后,就会依据每个熔断规则中所提供的获取统计指标的方式,来获取每个熔断粒度内的各个执行单位的统计指标,从而便于后续利用统计指标来判断出每个熔断粒度内的执行单位是否需要熔断。
需要说明的是,统计指标用于表征每个熔断粒度内的执行单位针对请求的响应情况,而请求的响应情况,能够说明执行单位的处理性能是不是出现了问题,也就是说,统计指标表明了每个熔断粒度内的执行单位的性能情况。
可以理解的是,由于对于整个微服务系统而言,不同的熔断粒度中的请求都是由单独的执行单位所处理、实现的,因此,执行单位应当是与熔断粒度相对应的。因此,在本申请实施例中,执行单位为微服务、接口或实例,特别地,当熔断粒度包括微服务粒度时,执行单位就可以为微服务,当熔断粒度为接口粒度时,执行单位就可以为接口,当熔断粒度包括实例粒度时,执行单位就可以为实例。在本申请的一些实施例中,当至少一个熔断粒度包括微服务粒度、接口粒度和实例粒度中的多个时,执行单位也会对应的为多个,例如,至少一个熔断粒度中包括微服务粒度和实例粒度时,执行单位也分别为微服务和实例。
由于对于不同的熔断粒度而言,所对应的熔断的判断条件也是不同的,本申请实施例中,是通过执行单位针对请求的响应情况,即通过统计指标来判断是否要开启熔断的,因此,不同的熔断粒度所对应的熔断规则,所提供的获取统计指标的方式也应当是不同的。过载保护设备为了准确地对不同的熔断粒度实现熔断,就需要按照先获得不同熔断粒度所对应的统计指标,故,过载保护设备会根据与不同的熔断粒度相对应的熔断规则中所提供的统计指标的获取方式,来得到统计指标。
需要说明的是,熔断规则中可以提供获取统计指标的时间周期,即统计周期,也可以提供开始获取统计指标的触发阈值。该触发阈值可以是请求阈值,即提供了在统计周期内达到多少请求才可以开始获取统计指标;该触发阈值还可以是时长阈值,即一个请求的响应时间达到了多长时间时才可以开始获取统计指标等。
在本申请的一些实施例中,统计指标可以为请求失败率,也可以为请求超时率,还可以为一些其他的指标,例如请求响应的时长等,本申请在此不作限定。
需要说明的是,同一个统计指标,在不同的熔断粒度中的获取方式可以是相同的,也可以是不同的。例如,在微服务粒度和接口粒度的统计指标都为请求失败率,但是微服务粒度的统计周期为10s,接口粒度的统计周期为5s;微服务粒度和实例粒度的统计指标都为请求超时率,并且统计周期都为10s等。
S107、过载保护设备基于执行单位对应的统计指标,以及至少一个熔断规则中与每个熔断粒度对应的熔断规则,确定出执行单位的熔断状态;熔断状态表征是否开启熔断。
过载保护设备在得到每个熔断粒度内的执行单位所对应的统计指标之后,就会先对每个熔断粒度的熔断规则进行解析,从而得到每个熔断粒度的熔断规则所指定的指标阈值。之后,过载保护设备会用统计指标与解析出的指标阈值进行大小比较,从而确定出是否要对执行单位开启熔断,得到每个熔断粒度内的执行单位所对应的熔断状态。也就是说,过载保护设备是基于执行单元的统计指标和每个熔断规则所指定的指标阈值,来判断出是否要对执行单位进行熔断。
由此可见,在本申请中,当熔断粒度包括微服务粒度时,过载保护设备在对目标微服务进行过载保护时,就是判断是否要对某个微服务进行熔断,当熔断粒度包括接口粒度,过载保护设备就是判断是否要对某个接口进行熔断,当熔断粒度包括实例粒度时,过载保护设备就是判断是否要对某个实例进行熔断。如此,在对目标微服务进行过载保护时,可以从多个不同的级别粒度出发来进判断要具体来对哪个对象进行熔断。
在本申请的一些实施例中,过载保护设备还会按照级别粒度的大小顺序,来进行熔断状态的判断。也就是说,当至少一个熔断粒度中包括了多个熔断粒度时,过载保护设备会先对作用范围大的熔断粒度进行判断,然后对作用范围小的熔断粒度进行判断。示例性的,当至少一个熔断粒度中包括了微服务粒度和接口粒度时,过载保护设备是先对微服务粒度中的各个执行单位进行熔断的判断,然后再对接口粒度中的各个执行范围进行熔断的判断。
S108、过载保护设备依据熔断状态,对每个熔断粒度内的执行单位进行熔断控制,实现对目标微服务的过载保护。
过载保护设备依据确定出的熔断状态,对每个熔断粒度内的执行单位来进行熔断控制。当某个执行单位的熔断状态表征的是开启熔断时,过载保护设备就会对该执行单位进行熔断,反之,当某个执行单位的熔断状态表征的是关闭熔断时,过载保护设备就会对该执行单位保持熔断关闭状态,从而继续允许各种请求通过。由此,可以实现对不同熔断粒度的中的执行单位的熔断控制,从而提高了对微服务系统的熔断控制的灵活性。
需要说明的是,当熔断粒度为微服务粒度,并且目标微服务是由于其所依赖的下游微服务发生问题而性能降低时,过载保护设备对目标微服务进行过载保护时,就会对目标微服务所依赖的下游微服务进行熔断,当目标微服务是由于自身原因出现问题时,过载保护设备就会对目标微服务进行熔断,以保证整个微服务系统不崩溃。当熔断粒度为接口粒度时,过载保护设备只要定位出有问题的接口,就会直接对该接口进行熔断,当熔断粒度为实例粒度时,过载保护设备只要定位出有问题的实例,就会直接对该实例进行熔断,而不会考虑接口或实例是属于哪个微服务的。
本申请实施例中,过载保护设备可以依据每个熔断粒度对应的熔断规则,统计出每个熔断粒度内的执行单位所对应的统计指标,然后再结合每个熔断粒度内的执行单位的统计指标和每个熔断粒度的熔断规则,来判断出是否要对执行单位进行熔断,从而实现对一个或多个熔断粒度中的执行单位的熔断判断,从而实现了对多个级别粒度的熔断的控制,提高了对微服务系统的熔断控制的灵活性,进而加强了微服务的健壮性可用性,最终提升了微服务的服务质量。
在本申请的一些实施例中,每个熔断粒度对应的熔断规则包括指标阈值,在此情况向,过载保护设备基于执行单元对应的统计指标,以及至少一个熔断规则中与每个熔断粒度对应的熔断规则,确定出熔断单元的熔断状态,即S107的实现过程,可以包括:S1071或S1072,如下:
S1071、当执行单位对应的统计指标大于等于指标阈值时,过载保护设备确定执行单位的熔断状态为开启熔断。
S1072、当熔断单元对应的统计指标小于指标阈值时,过载保护设备确定执行单位的熔断状态为关闭熔断。
过载保护设备将每个熔断粒度内的执行单位所对应的统计指标,与每个熔断粒度的熔断规则所指定的指标阈值进行比较,当执行单位对应的统计指标大于等于指标阈值时,说明执行单位的性能已经很低,需要对执行单位进行熔断此时,过载保护设备就会将执行单位的熔断状态确定为开启熔断,以防止执行单位响应微服务系统的整体性能。当统计指标小于指标阈值时,说明执行单位的性能还较为正常,即能够及时对请求进行响应并处理,这时,过载保护设备就会确定熔断状态继续关闭熔断状态,也就是不开启熔断,从而使得执行单位能够正常运行。其中,执行单位为微服务、接口或实例。
需要说明的是,指标阈值是由规则配置设备指定的,其与统计指标相对应的,即当统计指标为请求失败率时,指标阈值就可以为失败率阈值,当统计指标为超时请求率时,指标阈值就为超时率阈值,当统计指标为请求响应的时长时,指标阈值就为时长阈值。
可以理解的是,指标阈值的具体数值是可以根据实际情况进行设置的,例如,当指标阈值为失败率阈值或超时率阈值时,可以将指标阈值设置为50%,或者是70%;当指标阈值为请求响应的时长时,可以将指标阈值设置为10s,或者是5s等,本申请在此不作限定。
本申请实施例中,过载保护设备能够根据指标阈值与统计指标之间的大小关系,来确定出是否要对执行单位开始熔断,从而实现了对执行单位的熔断状态的判断。
参见图6,图6是本申请实施例提供的过载保护方法的一个可选的流程示意图二。在本申请的一些实施例中,过载保护设备依据至少一个熔断规则中的每个熔断规则,统计出每个熔断粒度内的执行单位所对应的统计指标,即S106的具体实现过程,可以包括:S1061-S1063,如下:
S1061、过载保护设备从每个熔断规则中解析出统计周期、请求阈值;请求阈值用于判断是否开始获取统计指标。
过载保护设备对至少一个熔断规则中的每个熔断规则进行解析,将每个熔断规则拆解为每个熔断粒度对应的各个配置参数,然后从各个配置参数中,提取出统计周期、请求阈值这两个参数,以便于后续获取执行单位为统计周期内的统计指标,以及利用请求阈值来判断是否要为执行单位开始获取其所对应的统计指标。
需要说明的是,之所以要用请求阈值判断是否开始获取统计指标,是因为在一个统计周期内的请求数量较为稀少的话,这些请求很大概率上是会被正常响应的,也即不需要开启熔断,而这时获取统计指标,无疑是对硬件资源的一种浪费。同时,由于在一个统计周期内的请求数量较少时,判断是否开启熔断的过程就太过于依赖个别请求,从而会给熔断状态的确定带来一些噪声,即使得熔断状态的判断的准确率偏低。因此,过载保护设备需要利用请求阈值来判断是否开始获取统计指标。
可以理解的是,本申请实施例中,统计周期可以是在规则配置设备中根据实际需求设置的,例如,将统计周期设置为10s,或者是20s等,本申请在此不作限制。类似的,请求阈值也是可以在规则配置设备中根据实际需求设置的,例如,将请求阈值设置为10,或者是设置5等,本申请在此不作限定。
S1062、过载保护设备根据统计周期,获取每个熔断粒度内的执行单位的请求数量。
过载保护设备在解析出统计周期和请求阈值之后,则会开始提取处于距当前时刻最接近的一个统计周期内的请求,然后统计这个所提取出的请求的数量,从而得到执行单位的请求数量。
可以理解的是,距离当前时刻最接近的一个统计周期,可以是指在当前时间之前的一个统计周期。示例性的,当统计周期为10s时,过载保护设备就是提取当前时刻的前10s的所有请求。
S1063、当请求数量大于等于请求阈值时,过载保护设备统计出每个熔断粒度内的执行单位在统计周期内的统计指标。
过载保护设备在得到请求数量之后,就会将请求数量和解析出的请求阈值进行大小比较。当请求数量大于等于请求阈值时,过载保护设备认为每个熔断粒度的执行单位在一个统计周期内已经有足够的请求了,能够判断是否开启熔断了,这时,过载保护设备就会开始统计每个熔断粒度内的执行单位在统计周期内的统计指标。当请求数量小于请求阈值时,过载保护设备会认为每个熔断粒度的执行单位在一个统计周期内的请求数量不足,不能用于判断是否开启熔断,这时,过载保护设备不会统计每个熔断粒度内的执行单位在统计周期内的统计指标。
可以理解的是,统计指标的统计方式,是根据统计指标的具体内容来确定的。当统计指标为请求失败率或者是请求超时率时,过载保护设备是根据失败请求的数量,或者是超时请求的数量和请求的总数量计算出的;当统计指标为请求超时的时长时,过载保护设备就是直接获取每个请求的超时时长。
本申请实施例中,过载保护设备能够从每个熔断粒度对应的熔断规则中解析出统计周期和请求阈值,然后在基于统计周期获取执行单位的请求数量,在请求数量大于请求阈值时,才开始统计执行单位的统计指标,从而避免了在请求数量过少给熔断状态的判断带来噪声,保证了熔断状态判断的准确度。
在本申请的一些实施例中,统计指标包括:请求失败率,在此情况下,过载保护设备统计出每个熔断粒度内的执行单位在统计周期内的统计指标,即S1063的具体实现过程,可以包括:S301-S303,如下:
S301、过载保护设备统计出执行单位在统计周期内的请求的总数量。
S302、过载保护设备统计出执行单位在统计周期内的失败请求的数量。
其中,失败请求表征未被成功响应的请求。
过载保护设备先将统计周期内的所有请求的数量统计出来,得到执行单位在统计周期内所接收到的请求的总数量,之后,过载保护设备将执行单位从所接收到的所有请求中,将未被成功响应的请求提取出来,即将失败请求提取出来,然后统计出失败请求的数量。
S303、过载保护设备利用失败请求的数量和请求的总数量,计算出每个熔断粒度内的执行单位在统计周期内的请求失败率。
过载保护设备在得到失败请求数量和请求的总数量之后,就会将识别请求数量作为分子,将请求的总数量作为分母来进行比例运算,将比例运算的结果作为每个熔断粒度内的执行单位,在该统计周期内的请求失败率。
本申请实施例中,过载保护设备能够统计出执行单位在统计周期内的请求的总数量,同时统计出未被成功响应的失败请求的数量,然后用失败请求的数量和统计出的总数量相比,得到请求失败率。如此,过载保护设备就提取出了统计指标,以便于后续利用统计指标来判断是否要对执行单位开启熔断。
在本申请的一些实施例中,统计指标包括:请求超时率,此时,过载保护设备统计出每个熔断粒度内的执行单位在统计周期内的统计指标,即S1063的具体实现过程,可以包括:S304-S306,如下:
S304、过载保护设备统计出执行单位在统计周期内的请求的总数量。
S305、过载保护设备统计出执行单位在统计周期内的超时请求的数量。
其中,超时请求表征响应超时的请求。
当统计指标包括请求超时率时,过载保护设备在统计执行单位的统计指标时,也是先统计出执行单位在统计周期内的请求的总数量。然后,过载保护设备在执行单位在统计周期内的所有请求中,响应超时的请求提取出来,得到超时请求,并统计出超时请求的数量。
S306、过载保护设备利用超时请求的数量和请求的总数量,计算出每个熔断粒度内的执行单位在统计周期内的超时请求率。
过载保护设备将超时请求的数量作为分子,将请求的总数量作为分母来进行比例运算,将比例运算所得到的结果作为执行单位在统计周期内的请求超市率。如此,过载保护设备就完成了统计指标的获取过程。
本申请实施例中,过载保护设备能够统计出执行单位在统计周期内的请求的总数量,以及统计出响应超时的超时请求的数量,然后用超时请求的数量和统计出的总数量相比,得到请求超时率。如此,过载保护设备就提取出了统计指标,以便于后续利用统计指标来判断是否要对执行单位开启熔断。
在本申请的一些实施例中,熔断状态表征开启熔断时,过载保护设备依据熔断状态,对每个熔断粒度的执行单位进行熔断控制,实现对目标微服务的过载保护之后,即在S108之后,该方法还可以包括:S109-S112,如下:
S109、过载保护设备从每个熔断粒度的熔断规则中,解析出熔断恢复时间阈值和熔断恢复请求阈值。
其中,熔断恢复时间阈值表征从熔断开启状态恢复至允许单个请求的状态的时间,熔断恢复请求阈值表征从允许单个请求的状态恢复至正常状态的请求数量。
过载保护设备在判断出需要为每个熔断粒度的执行单位开启熔断,并将这先执行单位熔断之后,还要能够将及时判断出这些执行单位是否能够结束熔断,恢复到正常状态。这时,过载保护设备会继续对每个熔断粒度的熔断规则进行解析,从中提取出用于判断执行单位是否能够从熔断开启状态,恢复到允许单个请求的状态,即恢复到熔断半开启状态的熔断恢复时间阈值,以及用于判断执行单位是否能够熔断半开启状态,恢复到熔断关闭状态,也就是正常状态的请求数量。
可以理解的是,熔断恢复时间阈值可以是在规则配置设备中根据实际情况进行设定的,例如,将熔断恢复时间阈值设置为10s,或者是20s,本申请在此不作限定。同理的,熔断恢复请求阈值可以是在规则配置设备中根据实际情况设置的,例如,将熔断恢复请求阈值设置为5条,或者是设置为10条,本申请在此不作限制。
S110、当熔断持续时间达到熔断恢复时间阈值时,过载保护设备控制每个熔断粒度内的执行单位从熔断开启状态恢复至允许单个请求的状态。
其中,熔断持续时间表征熔断状态已经开启的时间。
过载保护设备在执行单位开始熔断的那一刻开始计时,所记录的时间就是熔断持续时间。当熔断时长时间到达熔断恢复时间阈值时,过载保护设备会将执行单位的熔断状态从熔断开启变为熔断半开启,从而允许执行单位一次只对单个的请求进行响应、处理,以便于后续依据执行单位对单个的请求的响应、处理情况,来判断出执行单位有恢复正常的迹象。
需要说明的是,当熔断恢复时间阈值较长时,例如长于常用的故障恢复时间时,执行单位很有可能就在等待时间到达恢复时间阈值的期间恢复正常了,此时,过载保护设备在达到熔断恢复时间阈值,将执行单位的熔断状态变为熔断半开启,能够有效减少抖动,但是,这种方式无疑会造成故障恢复的时间增大。
反之,当熔断恢复时间阈值较短时,例如短语常用的故障恢复时间时,执行单位很有可能并没有完全恢复正常,此时,过载保护设备在达到熔断恢复时间阈值,将执行单位的熔断状态变从熔断开启变为熔断半开启时,会大幅度减少故障恢复时间,但是有可能会增加抖动的可能性。
S111、当熔断请求数量达到所述熔断恢复请求阈值时,过载保护设备统计每个熔断粒度内的执行单位的请求处理指标。
其中,熔断请求数量表征所述允许单个请求的状态时,执行单位所响应的请求的数量。
过载保护设备执行单位开始在允许单个请求的状态下运行时,就会监控执行单位是否能够正常处理单个的请求,从而判断执行单位是否完全恢复正常。当过载保护设备发现执行单位在允许单个请求的状态下所处理的请求的数量达到熔断恢复请求阈值时,说明执行单位在熔断半开启状态下已经响应、处理了足够多的请求,这时候,过载保护设备会统计每个熔断粒度的执行单位针对这些请求的请求处理指标,从而明确执行范围对这些请求的整体处理情况,进行来判断执行单位是否已经完全恢复正常了。
在本申请的一些实施例中,请求处理指标可以是请求处理失败率,此时,过载保护设备会先统计执行单位在熔断半开启状态时处理的请求总个数,然后统计出执行单位在熔断半开启状态时处理失败的请求个数,从而将处理失败的请求的个数和处理的请求总个数相比,将比值作为请求处理指标。
在本申请的另一些实施例中,请求处理指标可以是请求超时失败率,此时,过载保护设备会先统计执行单位在熔断半开启状态时处理的请求总个数,然后统计出执行单位在熔断半开启状态时处理超时的请求个数,从而将处理超时的请求的个数和处理的请求总个数相比,将该比值作为请求处理指标。
S112、当请求处理指标小于每个熔断粒度对应的熔断规则所指定的处理指标阈值时,过载保护设备将每个熔断粒度的执行单位从允许单个请求的状态恢复至正常状态。
过载保护设备从每个熔断粒度对应的熔断规则中,将指定的处理指标阈值解析出来,然后将请求运行指标和运行指标阈值进行大小比较,得到用于表征请求处理指标和处理指标阈值的大小关系的比较结果。当比较结果表征请求处理指标小于指定的运行指标阈值时,过载保护设备就会认为每个熔断粒度的执行单位已经完全恢复正常了,这时,过载保护设备就会将执行单位从允许单个请求的状态,即从熔断半开启状态,恢复为正常状态,从而使得执行单位能够正常响应和处理请求。如此,过载保护设备可以对将执行单位针对请求的响应情况进行判断,从而确认出执行单位是否要恢复为正常状态,避免了只判断一个请求就关闭熔断的情况。
本申请实施例中,过载保护设备会在熔断开启时间到达熔断恢复时间阈值时,将执行单位从熔断开启状态恢复至熔断半开启状态,然后在熔断半开启时所响应、处理的请求达到熔断恢复请求阈值时,统计执行单位对请求的请求处理指标,并在请求处理指标达到要求时才将每个熔断粒度内的执行单位恢复为正常状态。如此,避免了只判断一个请求就关闭熔断的情况,增多了对熔断状态恢复的控制,进一步提升了微服务的质量。
在本申请的一些实施例中,过载保护设备基于执行单位对应的统计指标,以及至少一个熔断规则中和每个熔断粒度对应的熔断规则,确定出执行单位的熔断状态,即S107的具体实现过,可以包括:S1073-S1076,如下:
S1073、过载保护设备从至少一个熔断粒度中,提取出作用范围最大的最大范围熔断粒度;至少一个熔断粒度包括微服务粒度、接口粒度和实例粒度中的至少一个。
S1074、过载保护设备根据最大范围熔断粒度内的最大执行单位所对应的最大统计指标,以及最大范围熔断粒度对应的最大范围熔断规则,判断出最大范围熔断粒度内的最大执行单位的熔断状态。
本申请实施例中,过载保护设备还能够依据按照熔断粒度的作用范围,来为每个熔断粒度确定出判断熔断的顺序。此时,过载保护设备先对至少一个熔断粒度进行分析,从中将作用范围最大的熔断粒度提取出来,得到最大范围熔断粒度。接着,过载保护设备根据最大范围熔断粒度内的执行单位,即最大执行单位所对应的最大统计指标,以及最大熔断粒度所对应的最大范围熔断规则,判断出最大执行单位的熔断状态,从而能够最先对作用范围最大的熔断粒度内的各个执行单位的熔断状态进行判断。
S1075、过载保护设备从至少一个熔断粒度中,提取出除最大范围熔断粒度之外的其他范围熔断粒度。
S1076、过载保护设备重复从其他范围熔断粒度,提取出新的最大范围熔断粒度,并判断新的最大范围熔断粒度内的新的最大执行单位的熔断状态的过程,直至其他范围熔断粒度为空时结束,得到执行单元的熔断状态。
接着,过载保护设备从至少一个熔断粒度中,将除去最大范围熔断粒度之外的其他范围熔断粒度提取出来,并继续从其他范围熔断粒度中找到作用范围最大的熔断粒度,记为新的最大范围熔断粒度,接着判断这个新的最大范围熔断粒度内的各个执行单位的熔断状态,即得到新的最大执行单位的熔断状态。过载保护设备重复这个过程,知道其他范围熔断粒度为空时结束,这时,就能够按照作用范围从大小的顺序,得到每个熔断粒度内的执行单位的熔断状态了。
示例性的,当至少一个熔断粒度中同时包括微服务粒度、接口粒度和实例粒度时,过载保护设备会先对微服务粒度内的各个执行单位的熔断状态进行判断,即先用微服务粒度所对应的熔断规则,以及微服务粒度内的各个微服务的统计指标,来判断出各个微服务的熔断状态。过载保护设备在对微服务粒度内的执行单位判断完成之后,才会开始对接口粒度内的各个执行单位的熔断状态来进行判断,即利用接口粒度内的各个接口的统计指标,以及接口粒度所对应的熔断规则,判断出各个接口的熔断状态。最后,过载保护设备会对实例粒度中的各个执行范围的熔断状态进行判断,得到实例粒度内的各个实例的熔断状态。
在本申请的另一些实施例中,若是过载保护设备判断出作用范围大的熔断粒度的执行单位要被熔断时,可以不再继续判断其他作用范围小的熔断粒度的执行单位是否要被熔断;若是过载保护设备判断出作用范围大的熔断粒度的执行单位不被熔断时,需要继续判断其他作用范围小的熔断粒度的执行单位是否要被熔断。
本申请实施例中,过载保护设备可以先对作用范围大的熔断粒度内的执行单位的熔断状态进行判断,再对作用范围小的熔断粒度内的执行单位的熔断状态进行判断,从而能够按照作用范围从大到小的顺序,为每个熔断粒度内的执行单位做出熔断判断,保护整个微服务系统不会雪崩。
在本申请的一些实施例中,规则配置设备将至少一个熔断规则发送给过载保护设备,即S105的具体实现过程,可以包括:S1051-S1052,如下:
S1051、当规则配置设备接收到界面跳转指令时,响应于界面跳转指令,从熔断配置界面跳转至规则控制界面。
规则配置设备在生成与至少一个熔断粒度对应的至少一个熔断规则之后,会先将至少一个熔断规则保存下来,然后在接收到相应的指令时在发出。此时,规则配置设备会监听是否触发界面跳转指令,当监听触发了界面跳转指令时,规则配置设备会响应于界面跳转指令,生成规则控制界面,然后退出熔断配置界面,进入规则控制界面。
需要说明的是,规则控制界面用于对至少一个熔断规则进行控制,也即,规则配置设备通过界面跳转指令从配置生成熔断规则的界面,进入到了对熔断规则进行控制的界面,该控制可以包括删除、发送、修改等操作。
可以理解的是,界面跳转指令可以是由人工触发的,例如,微服务管理人员通过熔断配置界面设置的“下一步”按钮,触发界面跳转指令,或者是通过语音指令“进入控制界面”来触发界面跳转指令。界面跳转指令也可以是由规则配置设备自主触发的,例如,当规则配置设备检测到在一定的时间内没有微服务管理人员的操作时,自动触发界面跳转指令,或者是判断出熔断配置界面中的所有窗口均具有选中的配置参数时,自动触发界面跳转指令。
S1052、当规则配置设备接收到作用在规则控制界面的下发操作控件上的规则下发指令时,响应于规则下发指令,将至少一个熔断规则发送给过载保护设备。
规则配置设备在进入到规则控制界面之后,并在设置在规则控制界面的下发操作控件上监听到规则下发指令时,会响应于规则下发指令,通过网络将至少一个熔断规则发送给过载保护设备,以便于过载保护设备利用至少一个熔断规则来对目标微服务进行过载保护。
可以理解的是,规则下发指令可以是由人工触发的,也可以是由机器触发的,例如,当微服务管理人员点击了设置在规则控制界面的下发操作控件时,触发规则下发指令,也可以是规则配置设备在进入到规则控制界面的时间到达阈值时,自动触发规则下发指令。
需要说明的是,下发操作控件可以设置在规则控制界面的第四预设区域中,第四预设区域的大小和位置可以根据实际需求进行设置,例如,将第四预设区域设置在规则控制界面的上半部分,大小设置为20×20,或者是设置在规则控制界面的右半部分,大小设置为30×25,本申请在此不作限定。
在本申请的一些实施例中,规则控制界面中还可以设置有其他类型的操作控件,例如,设置有查看操作控件、删除操作控件等,以便于对至少一个熔断规则进行查看和删除。在另一些实施例中,规则控制界面还显示了至少一个熔断规则的基本信息,例如,显示了熔断粒度、所属的微服务系统,以及对应的下游微服务等。
示例性的,本申请实施例提供了规则控制界面的示例图,如图7所示,在规则控制界面7-1中,显示有目标微服务的下游微服务7-11consumer-demo,目标微服务所属的微服务系统7-12lq-test-vm_default,目标微服务的熔断粒度7-13:微服务粒度,熔断规则的更新时间7-14:2020-01-15,下发操作控件7-15,查看操作控件,以及查看操作控件上搭配的文字信息“查看规则7-16”,删除操作控件,以及删除操作控件上搭配的文字信息“删除7-17”。
本申请实施例中,规则配置设备可以在接收到界面跳转指令时,从熔断配置界面跳转至规则控制界面,然后在规则控制界面的下发操作控件上接收到规则下发指令时,将至少一个熔断规则下发给过载保护设备,从而实现依据指令下发至少一个熔断规则。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
本申请实施例是在对用户指定的微服务配置进行不同隔离级别熔断控制的场景下实现的。
在本申请实施例中,隔离级别(熔断粒度)划分为三类,分别是服务(微服务粒度)、实例(实例粒度)以及API(接口粒度)。其中,服务级别是指上游微服务欲访问的下游微服务,当下游微服务不可用时,服务级别会将整个下游微服务(微服务粒度内的执行单位)进行熔断,拒绝访问;实例级别是指每个微服务都有一台及以上实例提供服务,当某台实例(实例粒度内的执行单位)出现故障,实例级别可以单独隔离某个实例;API级别,每个微服务会暴漏若干API供其他微服务调用,当某个API(接口粒度内的执行单位)出现问题时,API级别可以单独将条用词API的服务进行熔断。
用户(微服务管理人员)可以指定针对某个微服务配置不同的熔断隔离级别组合。例如,欲保护的微服务(目标微服务)为consumer-demo,欲访问的下游微服务为provider-demo,provider-demo提供两个方法,分别为echo1以及echo2,provider-demo有两台实例提供服务,分别为ins-1,ins-2。用户可以针对consumer-demo配置三条规则,分别是对provider-demo进行整体服务级别的熔断,对provider-demo进行API级别的熔断,以及对provider-demo进行实例级别的熔断。三条规则同时作用,先满足预先设定的阈值规则的规则条件先作用,同时范围越大的作用时间越早,此时,级别直接的先后顺序为:服务级别>API级别>实例级别(在同时包括微服务粒度、接口粒度和实例粒度时,先对微服务粒度内的执行单位进行判断,再判断接口粒度内的执行单位,最后判断实例粒度内的执行单位)。举例来说,用户访问provider-demo的实例ins-2的ech o2方法,会先判断provider-demo是否被熔断,没有的话判断echo2是否被熔断,如果echo2满足熔断条件(熔断粒度所对应的熔断规则所指定的请求处理阈值),则不允许继续访问,如果没有满足条件,则判断实例ins-2是否满足熔断条件。隔离级别可以共存,这样可以达到提高微服务熔断的灵活性。
熔断器是由两个维度组成,熔断粒度和熔断规则,熔断粒度分为三个级别,熔断规则更为自由,用户可以根据任意标签进行熔断规则的设置。
熔断规则分为两个部分,一个是规则的计算范围,一个是用来判定规则生效的统计指标。计算范围包括:滑动窗口时间(统计周期)、最少请求数(请求阈值)、熔断器开启到半开间隔(熔断恢复时间阈值)和熔断器半开到关闭最少请求数(熔断恢复请求阈值)。下面,对计算范围的各个内容进行说明。
滑动窗口时间:熔断规则中的统计指标的范围是由一个固定的时间窗口来决定,假设用户设定窗口大小为10s,则会每个请求统计当前时刻前10s内所有请求的统计指标。
最少请求数:最少请求数指的是在统计窗口内至少接收到多少请求才会开始计算统计指标,假设滑动窗口时间大小为10s,最少请求数设置为10,则如果当前的滑动窗口时间内请求不满足10个时,不进行熔断阈值判断,这样的好处在于不会因为过少的样本造成太大的噪声。
熔断器开启到半开间隔:熔断器有三个状态,从开启(熔断开启)到半开(允许单个请求的状态)的时间可以自由设置,设置的时间较长可以减少抖动但是会影响到故障恢复时间,设置的较短可以减少故障恢复时间但是会增加抖动的概率,这里可以根据实际情况自由决定。
熔断器半开到关闭最少请求数:半开状态会运行接收请求,熔断器半开到关闭(正常状态)最少请求数,是指需要满足这个最少请求数之和才开始判断是否要关闭熔断器,这时,不统计滑动窗口时间。
用来判定规则生效的统计指标可以是请求失败率(请求失败率)和慢请求率(请求超时率)。其中,请求失败率是根据请求响应的成功与否来标记当前请求是正常还是错误,根据请求失败率进行熔断阈值的判断,即超过阈值(熔断规则指定的指标阈值)进行熔断;慢请求率是根据请求的响应时间来判定当前请求是否是慢请求(超时请求),对于慢请求统计整体占比,超过设定的阈值(熔断规则指定的指标阈值)进行熔断。用户还可以根据自动以标签指标进行统计,比如用户需要对某一类比较在意响应时间(响应时长)的用户请求进行熔断保护等。
参见图8,图8是本申请实施例提供的对指定的微服务进行规则配置的界面的示例图。在界面8-1(熔断配置界面)中的服务窗口8-11(微服务选择窗口)中,选择命名空间lq-test-vm_default8-111(微服务系统)的consumer-dem o8-112(目标微服务);在隔离级别窗口8-12(熔断粒度选择窗口)中,选择服务8-121(微服务粒度);在滑动时间窗口8-13(一个规则配置窗口),选择10s8-131;在最少请求数窗口8-14(一个规则配置窗口),选择10次8-141;在触发条件的失败请求率窗口8-15(一个规则配置窗口),选择50%8-151,从而得到达到50%时,触发熔断;在触发条件的慢请求率窗口8-16(一个规则配置窗口),选择6000ms8-161,和50%8-162,从而得到当响应耗时超过6000ms的请求比率达到50%时,触发熔断;在开启到半开间隔窗口8-17(一个规则配置窗口),选择60s 8-171。由此,可以得到针对指定的微服务的各个参数(配置参数)。
为了让用户更好的对微服务进行掌控,可以通过实时生效下发的能力,允许用户通过简单的界面操作,例如通过图7所示界面的操作,无需更待代码或者重启应用即可时间规则更新以及关闭,让用户能够在紧急时刻一键启停熔断功能。
下面,以实例级别来进行熔断控制的说明。用户可以首先在界面上选择实例(熔断粒度)级别熔断,同时进行熔断规则配置,比如最大熔断实例比例为50%(这样可以确保保留最小限度的示例不被熔断以防出现雪崩的情况),滑动窗口时间设置为10s,最小请求数为10个。用户设置完成并提交之后,该规则会实时下发到应用程序微服务中(过载保护设备),此时如果某几台实例出现了问题,则会在10个请求之后,将这批出现问题的实例进行熔断,在后续请求中将不会把请求流量负载到该批出现问题的示例上,确保流量的平稳。
通过上述方式,能够增加熔断粒度,实现更细粒度的熔断控制,同时增加了熔断关闭的检测,增强了微服务的可用性的健壮性,帮助微服务系统整体提升服务质量。
下面继续说明本申请实施例提供的过载保护装置255的实施为软件模块的示例性结构,在一些实施例中,如图2(a)所示,存储在第一存储器250的过载保护装置255中的软件模块可以包括:
规则接收模块2551,用于接收规则配置设备发送的与目标微服务的至少一个熔断粒度对应的至少一个熔断规则;所述至少一个熔断粒度指明了熔断的范围级别;
指标统计模块2552,用于依据所述至少一个熔断规则中的每个熔断规则,统计出每个熔断粒度内的执行单位所对应的统计指标;所述统计指标用于表征所述每个熔断粒度内的执行单位针对请求的响应情况;
熔断判断模块2553,用于基于所述执行单位对应的统计指标,以及所述至少一个熔断规则中与所述每个熔断粒度对应的熔断规则,确定出所述执行单位的熔断状态;所述熔断状态表征是否开启熔断;
熔断控制模块2554,用于依据所述熔断状态,对所述每个熔断粒度内的所述执行单位进行熔断控制,实现对所述目标微服务的过载保护。
在本申请的一些实施例中,所述每个熔断粒度对应的熔断规则包括指标阈值;所述熔断判断模块2553,还用于当所述执行单位对应的所述统计指标大于等于所述指标阈值时,确定所述执行单位的所述熔断状态为开启熔断;所述指标阈值是由所述规则配置设备指定的,所述执行单位为微服务、接口或实例;当所述执行单位对应的所述统计指标小于所述指标阈值时,确定所述执行单位的所述熔断状态为关闭熔断。
在本申请的一些实施例中,所述指标统计模块2552,还用于从所述每个熔断规则中解析出统计周期、请求阈值;所述请求阈值用于判断是否开始获取所述统计指标;根据所述统计周期,获取所述每个熔断粒度内的所述执行单位的请求数量;当所述请求数量大于等于所述请求阈值时,统计出所述每个熔断粒度内的所述执行单位在所述统计周期内的所述统计指标。
在本申请的一些实施例中,所述统计指标包括:请求失败率;
所述指标统计模块2552,还用于统计出所述执行单位在所述统计周期内的请求的总数量;统计出所述执行单位在所述统计周期内的失败请求的数量;所述失败请求表征未被成功响应的请求;利用所述失败请求的数量和所述请求的总数量,计算出所述每个熔断粒度内的所述执行单位在所述统计周期内的所述请求失败率。
在本申请的一些实施例中,所述统计指标包括:请求超时率;
所述指标统计模块2552,还用于统计出所述执行单位在所述统计周期内的请求的总数量;统计出所述执行单位在所述统计周期内的超时请求的数量;所述超时请求表征响应超时的请求;利用所述超时请求的数量和所述请求的总数量,计算出所述每个熔断粒度内的所述执行单位在所述统计周期内的所述超时请求率。
在本申请的一些实施例中,所述过载保护装置255还包括:熔断恢复模块2555;所述熔断状态表征开启熔断时,所述熔断恢复模块2555,还用于从所述每个熔断粒度的所述熔断规则中,解析出熔断恢复时间阈值和熔断恢复请求阈值;其中,所述熔断恢复时间阈值表征从熔断开启状态恢复至允许单个请求的状态的时间,所述熔断恢复请求阈值表征从允许单个请求的状态恢复至正常状态的请求数量;当熔断持续时间达到所述熔断恢复时间阈值时,控制所述每个熔断粒度内的所述执行单位从所述熔断开启状态恢复至所述允许单个请求的状态;所述熔断持续时间表征熔断状态已经开启的时间;当熔断请求数量达到所述熔断恢复请求阈值时,统计所述每个熔断粒度内的所述执行单位的请求处理指标;所述熔断请求数量表征所述允许单个请求的状态时,所述执行单位所响应的请求的数量;当所述请求处理指标小于所述每个熔断粒度对应的熔断规则所指定的处理指标阈值时,将所述每个熔断粒度内的执行单位从所述允许单个请求的状态恢复至所述正常状态。
在本申请的一些实施例中,所述熔断判断模块2553,还用于从所述至少一个熔断粒度中,提取出作用范围最大的最大范围熔断粒度;所述至少一个熔断粒度包括微服务粒度、接口粒度和实例粒度中的至少一个;根据所述最大范围熔断粒度内的最大执行单位所对应的最大统计指标,以及所述最大范围熔断粒度对应的最大范围熔断规则,判断出所述最大范围熔断粒度内的最大执行单位的熔断状态;从所述至少一个熔断粒度中,提取出除所述最大范围熔断粒度之外的其他范围熔断粒度;重复从所述其他范围熔断粒度,提取出新的最大范围熔断粒度,并判断所述新的最大范围熔断粒度内的新的最大执行单位的熔断状态的过程,直至所述其他范围熔断粒度为空时结束,得到所述执行单元的熔断状态。
下面继续说明本申请实施例提供的规则配置装置455的实施为软件模块的示例性结构,在一些实施例中,如图2(b)所示,存储在第二存储器450的规则配置装置455中的软件模块可以包括:
指令接收模块4551,用于接收到熔断规则配置指令;
界面跳转模块4552,用于响应于所述熔断规则配置指令,从当前显示界面跳转至熔断配置界面;所述当前显示界面为任意显示界面;
选择提取模块4553,用于在所述熔断配置界面显示的微服务选择窗口,获取进行规则配置的目标微服务,并在所述熔断配置界面显示的熔断粒度选择窗口,提取所述目标微服务的至少一个熔断粒度;
参数获取模块4554,用于在所述熔断配置界面的规则配置区域中显示的规则配置窗口中,获取到针对所述至少一个熔断粒度中的每个熔断粒度的配置参数;
规则生成模块4555,用于利用所述每个熔断粒度的配置参数,生成所述每个熔断粒度对应的熔断规则,当对所述至少一个熔断粒度均生成对应的熔断规则时,得到与所述至少一个熔断粒度对应的至少一个熔断规则;
规则发送模块4556,用于将所述至少一个熔断规则发送给所述过载保护设备,以使得所述过载保护设备利用所述至少一个熔断规则对所述目标微服务进行过载保护。
在本申请的一些实施例中,所述规则发送模块4556,还用于当接收到界面跳转指令时,响应于所述界面跳转指令,从所述熔断配置界面跳转至规则控制界面;所述规则控制界面用于对所述至少一个熔断规则进行控制;当接收到作用在所述规则控制界面的下发操作控件上的规则下发指令时,响应于所述规则下发指令,将所述至少一个熔断规则发送给过载保护设备。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的过载保护方法。
本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行过载保护指令,当可执行过载保护指令被第一处理器执行时,将引起第一处理器执行本申请实施例过载保护设备侧提供的过载保护方法;当可执行过载保护指令被第二处理器执行时,将引起第二处理器执行本申请实施例规则配置设备侧提供的过载保护方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EP ROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行过载保护指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行过载保护指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,HyperText Markup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行过载保护指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。

Claims (10)

1.一种过载保护方法,其特征在于,包括:
接收规则配置设备发送的与目标微服务的至少一个熔断粒度对应的至少一个熔断规则;所述至少一个熔断粒度指明了熔断的范围级别;
依据所述至少一个熔断规则中的每个熔断规则,统计出每个熔断粒度内的执行单位所对应的统计指标;所述统计指标用于表征所述每个熔断粒度内的执行单位针对请求的响应情况;
基于所述执行单位对应的统计指标,以及所述至少一个熔断规则中与所述每个熔断粒度对应的熔断规则,确定出所述执行单位的熔断状态;所述熔断状态表征是否开启熔断;
依据所述熔断状态,对所述每个熔断粒度内的所述执行单位进行熔断控制,实现对所述目标微服务的过载保护。
2.根据权利要求1所述的方法,其特征在于,所述每个熔断粒度对应的熔断规则包括指标阈值;所述基于所述执行单元对应的统计指标,以及所述至少一个熔断规则中与所述每个熔断粒度对应的熔断规则,确定出所述执行单位的熔断状态,包括:
当所述执行单位对应的所述统计指标大于等于所述指标阈值时,确定所述执行单位的所述熔断状态为开启熔断;所述指标阈值是由所述规则配置设备指定的,所述执行单位为微服务、接口或实例;
当所述执行单位对应的所述统计指标小于所述指标阈值时,确定所述执行单位的所述熔断状态为关闭熔断。
3.根据权利要求1或2所述的方法,其特征在于,所述依据所述至少一个熔断规则中的每个熔断规则,统计出每个熔断粒度内的执行单位所对应的统计指标,包括:
从所述每个熔断规则中解析出统计周期、请求阈值;所述请求阈值用于判断是否开始获取所述统计指标;
根据所述统计周期,获取所述每个熔断粒度内的所述执行单位的请求数量;
当所述请求数量大于等于所述请求阈值时,统计出所述每个熔断粒度内的所述执行单位在所述统计周期内的所述统计指标。
4.根据权利要求1或2所述的方法,其特征在于,所述熔断状态表征开启熔断时,所述依据所述熔断状态,对所述每个熔断粒度的所述执行单位进行熔断控制,实现对所述目标微服务的过载保护之后,所述方法还包括:
从所述每个熔断粒度的所述熔断规则中,解析出熔断恢复时间阈值和熔断恢复请求阈值;
其中,所述熔断恢复时间阈值表征从熔断开启状态恢复至允许单个请求的状态的时间,所述熔断恢复请求阈值表征从允许单个请求的状态恢复至正常状态的请求数量;
当熔断持续时间达到所述熔断恢复时间阈值时,控制所述每个熔断粒度内的所述执行单位从所述熔断开启状态恢复至所述允许单个请求的状态;所述熔断持续时间表征熔断状态已经开启的时间;
当熔断请求数量达到所述熔断恢复请求阈值时,统计所述每个熔断粒度内的所述执行单位的请求处理指标;所述熔断请求数量表征所述允许单个请求的状态时,所述执行单位所响应的请求的数量;
当所述请求处理指标小于所述每个熔断粒度对应的熔断规则所指定的处理指标阈值时,将所述每个熔断粒度内的所述执行单位从所述允许单个请求的状态恢复至所述正常状态。
5.根据权利要求1或2所述的方法,其特征在于,所述基于所述执行单位对应的统计指标,以及所述至少一个熔断规则中与所述每个熔断粒度对应的熔断规则,确定出所述执行单位的熔断状态,包括:
从所述至少一个熔断粒度中,提取出作用范围最大的最大范围熔断粒度;所述至少一个熔断粒度包括微服务粒度、接口粒度和实例粒度中的至少一个;
根据所述最大范围熔断粒度内的最大执行单位所对应的最大统计指标,以及所述最大范围熔断粒度对应的最大范围熔断规则,判断出所述最大范围熔断粒度内的最大执行单位的熔断状态;
从所述至少一个熔断粒度中,提取出除所述最大范围熔断粒度之外的其他范围熔断粒度;
重复从所述其他范围熔断粒度,提取出新的最大范围熔断粒度,并判断所述新的最大范围熔断粒度内的新的最大执行单位的熔断状态的过程,直至所述其他范围熔断粒度为空时结束,得到所述执行单元的熔断状态。
6.一种过载保护方法,其特征在于,应用于规则配置设备,包括:
当接收到熔断规则配置指令时,响应于所述熔断规则配置指令,从当前显示界面跳转至熔断配置界面;所述当前显示界面为任意显示界面;
在所述熔断配置界面显示的微服务选择窗口,获取进行规则配置的目标微服务,并在所述熔断配置界面显示的熔断粒度选择窗口,提取所述目标微服务的至少一个熔断粒度;
在所述熔断配置界面的规则配置区域中显示的规则配置窗口中,获取到针对所述至少一个熔断粒度中的每个熔断粒度的配置参数;
利用所述每个熔断粒度的配置参数,生成所述每个熔断粒度对应的熔断规则,当对所述至少一个熔断粒度均生成对应的熔断规则时,得到与所述至少一个熔断粒度对应的至少一个熔断规则;
将所述至少一个熔断规则发送给所述过载保护设备,以使得所述过载保护设备利用所述至少一个熔断规则对所述目标微服务进行过载保护。
7.一种过载保护装置,其特征在于,包括:
规则接收模块,用于接收规则配置设备发送的与目标微服务的至少一个熔断粒度对应的至少一个熔断规则;所述至少一个熔断粒度指明了熔断的范围级别;
指标统计模块,用于依据所述至少一个熔断规则中的每个熔断规则,统计出每个熔断粒度内的执行单位所对应的统计指标;所述统计指标用于表征所述每个熔断粒度内的执行单位针对请求的响应情况;
熔断判断模块,用于基于所述执行单位对应的统计指标,以及所述至少一个熔断规则中与所述每个熔断粒度对应的熔断规则,确定出所述执行单位的熔断状态;所述熔断状态表征是否开启熔断;
熔断控制模块,用于依据所述熔断状态,对所述每个熔断粒度内的所述执行单位进行熔断控制,实现对所述目标微服务的过载保护。
8.一种过载保护设备,其特征在于,包括:
第一存储器,用于存储可执行过载保护指令;
第一处理器,用于执行所述第一存储器中存储的可执行过载保护指令时,实现权利要求1至5任一项所述的方法。
9.一种规则配置设备,其特征在于,包括:
第二存储器,用于存储可执行过载保护指令;
第二处理器,用于执行所述第二存储器中存储的可执行过载保护指令时,实现实现权利要求6所述的方法。
10.一种计算机可读存储介质,其特征在于,存储有可执行过载保护指令,用于被第一处理器执行时,实现权利要求1至5任一项所述的方法;或者用于被第二处理器执行时,实现权利要求6所述的方法。
CN202011071959.6A 2020-10-09 2020-10-09 一种过载保护方法、装置、设备及计算机可读存储介质 Pending CN112131036A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011071959.6A CN112131036A (zh) 2020-10-09 2020-10-09 一种过载保护方法、装置、设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011071959.6A CN112131036A (zh) 2020-10-09 2020-10-09 一种过载保护方法、装置、设备及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN112131036A true CN112131036A (zh) 2020-12-25

Family

ID=73843936

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011071959.6A Pending CN112131036A (zh) 2020-10-09 2020-10-09 一种过载保护方法、装置、设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN112131036A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112764913A (zh) * 2021-04-09 2021-05-07 腾讯科技(深圳)有限公司 服务熔断方法和装置、存储介质及电子设备
CN112965848A (zh) * 2021-03-05 2021-06-15 北京百度网讯科技有限公司 用于微服务的熔断降级方法、装置、设备和介质
CN113783908A (zh) * 2020-06-10 2021-12-10 腾讯科技(上海)有限公司 服务调用方法、装置、设备及存储介质
CN114157551A (zh) * 2021-11-29 2022-03-08 中国平安财产保险股份有限公司 适用于微服务的熔断识别方法、装置、设备及存储介质
CN114666207A (zh) * 2022-03-17 2022-06-24 福建天晴数码有限公司 一种客户端对服务端进行请求保护的方案及系统

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113783908A (zh) * 2020-06-10 2021-12-10 腾讯科技(上海)有限公司 服务调用方法、装置、设备及存储介质
CN112965848A (zh) * 2021-03-05 2021-06-15 北京百度网讯科技有限公司 用于微服务的熔断降级方法、装置、设备和介质
CN112764913A (zh) * 2021-04-09 2021-05-07 腾讯科技(深圳)有限公司 服务熔断方法和装置、存储介质及电子设备
CN114157551A (zh) * 2021-11-29 2022-03-08 中国平安财产保险股份有限公司 适用于微服务的熔断识别方法、装置、设备及存储介质
CN114157551B (zh) * 2021-11-29 2023-07-21 中国平安财产保险股份有限公司 适用于微服务的熔断识别方法、装置、设备及存储介质
CN114666207A (zh) * 2022-03-17 2022-06-24 福建天晴数码有限公司 一种客户端对服务端进行请求保护的方案及系统
CN114666207B (zh) * 2022-03-17 2023-06-06 福建天晴数码有限公司 一种客户端对服务端进行请求保护的方案及系统

Similar Documents

Publication Publication Date Title
CN112131036A (zh) 一种过载保护方法、装置、设备及计算机可读存储介质
US10838838B2 (en) Method and apparatus for dealing with abnormality of application program and storage medium
CN106648779B (zh) 一种智能终端悬浮窗权限设置方法
US7636919B2 (en) User-centric policy creation and enforcement to manage visually notified state changes of disparate applications
US8271951B2 (en) System and methods for collecting software development feedback
CN112714030B (zh) 告警方法、装置、设备及计算机可读存储介质
CN107465575A (zh) 一种集群的监控方法及系统
CN113835985B (zh) 一种监测卡顿、分析卡顿原因的方法、装置及设备
CN112954031B (zh) 一种基于云手机的设备状态通知方法
CN113792341B (zh) 应用程序的隐私合规自动化检测方法、装置、设备及介质
CN113722134A (zh) 一种集群故障处理方法、装置、设备及可读存储介质
CN113127320B (zh) 应用程序异常检测方法、装置、设备及系统
CN115001989A (zh) 一种设备预警方法、装置、设备及可读存储介质
CN109800124A (zh) Cpu使用率监控方法、装置、电子设备及存储介质
CN113238815A (zh) 一种接口访问控制方法、装置、设备及存储介质
CN111949421A (zh) Sdk调用方法、装置、电子设备和计算机可读存储介质
CN107682427B (zh) 一种消息推送方法、装置、设备及存储介质
CN115454673A (zh) 一种基板管理控制器的数据收集方法、装置及介质
CN113312263B (zh) 异常监测方法和装置
CN109634814A (zh) 基于日志流的故障预警方法、设备、存储介质及装置
CN110764974B (zh) 一种监控方法、装置及存储介质
CN110445935B (zh) 上网保护方法以及上网保护装置
CN109327433B (zh) 基于运行场景分析的威胁感知方法及系统
CN113971608A (zh) 交易渠道的管理方法以及装置
CN113395234A (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