本发明涉及一种基于服务质量的服务熔断方法,属于电网调度自动化领域。
背景技术:
在电网调度自动化系统中,通常会有多个层次的服务调用,服务之间存在多层依赖关系,在一些极端情况下,大量的请求会阻塞在异常的远程服务调用上,导致一些关键性系统资源耗尽,进而影响关键核心业务,当基础服务出现异常后,还容易引起服务雪崩效应,造成系统级危害,针对这种情况需提供服务熔断机制,它能熔断节点微服务的异常调用,有效避免系统级故障。
在现有的服务熔断机制中,大量外部请求是通过网关访问内部服务,并且熔断是发生在失败了一定次数达到阈值之后,但是电网调度自动化系统是一个与外部完全物理隔离的独立网络,其中的请求都是由内部服务客户端访问内部服务,与互联网访问不同的是,其访问粒度更加细密,且区分不同的场景和子场景,不同的场景和子场景都有独立的服务程序提供服务,这些不同的服务程序部署在不同的服务器上。一个业务链中,有可能会依次访问多个场景和子场景的服务程序,且请求内容多种多样,有可能不同的客户端对于同一服务程序的调用,会得到不同的结果,也不排除存在一个客户端不停地进行访问,而且都返回错误的请求结果,并且占用系统资源。所以使用业界常用的根据服务调用结果进行服务熔断判断统计的方式,可能会形成大量的误判,同时这种失败了一定次数之后再进行熔断的措施较为滞后,并不适用于对稳定性要求极高的电网调度自动化系统中。
技术实现要素:
本发明的目的在于克服现有技术中的不足,提供一种基于服务质量的服务熔断方法,能够根据质量变化趋势实现提前退出熔断,加快对电网调度自动化系统故障的恢复,更好地保证了电网调度自动化系统的稳定性。
为达到上述目的,本发明是采用下述技术方案实现的:
本发明提供了一种基于服务质量的服务熔断方法,所述方法包括如下步骤:获取服务的质量信息参数值,读取服务的熔断配置,选取服务的质量信息参数中任意一个或多个参数,作为熔断配置的熔断元素,并获取熔断元素阈值;
比较服务的质量信息参数值和熔断元素阈值,若质量信息参数值中任意一个参数值都低于对应的熔断元素阈值,则判定熔断器处于熔断关闭状态,否则判定熔断器处于熔断打开状态;
熔断打开后,将当前熔断冷却时间设置为熔断配置的熔断冷却时间t;
若之前状态机在熔断中,则根据当前服务质量的变化趋势,动态调整服务在下个熔断周期的熔断冷却时间并进行反馈,然后等待当前熔断冷却时间t结束,再进行新的服务质量信息参数值的获取和熔断判定。
进一步的,若之前状态机不在熔断中,则等待当前熔断冷却时间t结束,然后进行新的服务质量信息参数值的获取和熔断判定。
进一步的,服务的质量信息参数包括服务的客户端连接数、服务的cpu占用率和内存。
进一步的,若之前状态机在熔断中,则根据当前服务质量的变化趋势,动态调整服务在下个熔断周期的熔断冷却时间的方法具体包括如下步骤:若当前服务质量好转,则将下一个周期的熔断冷却时间设置为0.5t;若当前服务质量不变,则将下一个周期的熔断冷却时间维持为t;若当前服务质量变坏,则将下一个周期的熔断冷却时间设置为2t。
进一步的,若熔断器处于熔断关闭状态,则正常执行服务请求,等待服务端响应并返回服务不在熔断中的结果。
进一步的,若熔断器处于熔断打开状态,则直接执行拒绝策略,返回服务在熔断中的结果,不再执行服务请求。
与现有技术相比,本发明所达到的有益效果:
本发明能够根据当前服务质量的变化趋势,动态调整服务在下个熔断周期的熔断冷却时间,从而能够实现提前退出熔断,加快对电网调度自动化系统故障的恢复,更好地保证了电网调度自动化系统的稳定性。
附图说明
图1是本发明实施例提供的一种基于服务质量的服务熔断方法流程图;
图2是本发明实施例提供的电网调度自动化系统内部拟发起服务请求的具体执行流程图。
具体实施方式
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
如图1所示,本发明实施例提供的一种基于服务质量的服务熔断方法,所述方法包括如下步骤:
获取服务的质量信息参数值,而服务的质量信息参数包括服务的客户端连接数、服务的cpu占用率和内存;
读取服务的熔断配置,选取服务的质量信息参数中任意一个或多个参数,例如服务的客户端连接数、服务的cpu占用率和内存中的任意一个,也可以是其中几个的组合,来作为熔断配置的熔断元素,并获取熔断元素阈值;
比较服务的质量信息参数值和熔断元素阈值,若质量信息参数值中任意一个参数值都低于对应的熔断元素阈值,则判定熔断器处于熔断关闭状态,若质量信息参数值中只要有一个参数值高于或等于对应的熔断元素阈值,则判定熔断器处于熔断打开状态;
熔断打开后,将当前熔断冷却时间设置为熔断配置的熔断冷却时间t,在当前熔断冷却时间t内,所有的服务请求都将熔断,系统内部不再向服务端发送请求;
若之前状态机不在熔断中,则等待当前熔断冷却时间t结束,然后进行新的服务质量信息参数值的获取和熔断判定;
若之前状态机在熔断中,则根据当前服务质量的变化趋势,动态调整服务在下个熔断周期的熔断冷却时间并进行反馈,从而能够实现提前退出熔断,加快对电网调度自动化系统故障的恢复,更好地保证了电网调度自动化系统的稳定性,具体包括如下步骤:若当前服务质量好转,则将下一个周期的熔断冷却时间设置为0.5t;若当前服务质量不变,则将下一个周期的熔断冷却时间维持为t;若当前服务质量变坏,则将下一个周期的熔断冷却时间设置为2t,然后等待当前熔断冷却时间t结束,再进行新的服务质量信息参数值的获取和熔断判定。
如图2所示,电网调度自动化系统内部拟发起服务请求,若熔断器处于熔断关闭状态,则正常执行服务请求,等待服务端响应并返回服务不在熔断中的结果;若熔断器处于熔断打开状态,则直接执行拒绝策略,返回服务在熔断中的结果,不再执行服务请求。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
1.一种基于服务质量的服务熔断方法,其特征在于,所述方法包括如下步骤:
获取服务的质量信息参数值,读取服务的熔断配置,选取服务的质量信息参数中任意一个或多个参数,作为熔断配置的熔断元素,并获取熔断元素阈值;
比较服务的质量信息参数值和熔断元素阈值,若质量信息参数值中任意一个参数值都低于对应的熔断元素阈值,则判定熔断器处于熔断关闭状态,否则判定熔断器处于熔断打开状态;
熔断打开后,将当前熔断冷却时间设置为熔断配置的熔断冷却时间t;
若之前状态机在熔断中,则根据当前服务质量的变化趋势,动态调整服务在下个熔断周期的熔断冷却时间并进行反馈,然后等待当前熔断冷却时间t结束,再进行新的服务质量信息参数值的获取和熔断判定。
2.根据权利要求1所述的一种基于服务质量的服务熔断方法,其特征在于,
若之前状态机不在熔断中,则等待当前熔断冷却时间t结束,然后进行新的服务质量信息参数值的获取和熔断判定。
3.根据权利要求1所述的一种基于服务质量的服务熔断方法,其特征在于,服务的质量信息参数包括服务的客户端连接数、服务的cpu占用率和内存。
4.根据权利要求1所述的一种基于服务质量的服务熔断方法,其特征在于,若之前状态机在熔断中,则根据当前服务质量的变化趋势,动态调整服务在下个熔断周期的熔断冷却时间的方法具体包括如下步骤:
若当前服务质量好转,则将下一个周期的熔断冷却时间设置为0.5t;若当前服务质量不变,则将下一个周期的熔断冷却时间维持为t;若当前服务质量变坏,则将下一个周期的熔断冷却时间设置为2t。
5.根据权利要求1所述的一种基于服务质量的服务熔断方法,其特征在于,若熔断器处于熔断关闭状态,则正常执行服务请求,等待服务端响应并返回服务不在熔断中的结果。
6.根据权利要求1所述的一种基于服务质量的服务熔断方法,其特征在于,若熔断器处于熔断打开状态,则直接执行拒绝策略,返回服务在熔断中的结果,不再执行服务请求。