一种熔断方法、装置、电子设备和存储介质与流程

未命名 10-26 阅读:124 评论:0


1.本发明涉及微服务技术领域,尤其涉及一种熔断方法、装置、电子设备和存储介质。


背景技术:

2.根据业务类别的不同,可以将传统的单体应用拆分成一个一个的微服务,每一个微服务聚焦单一业务的逻辑处理,明确了业务边界范围。若服务之间存在业务依赖,可以通过超文本传输协议(hyper text transfer protocol,http)或远程过程调用(remote procedure call,rpc)协议进行服务间的调用。
3.然而,当拆分的微服务不断增加时,服务间的调用关系也会越来越复杂,使得在网络环境中服务的稳定性较差。例如,当出现网络波动时,服务之间的调用时间将会变长,调用线程会产生堆积,导致服务本身变得不可用,甚至出现服务的雪崩效应。目前,一般基于熔断机制,对出现异常的服务进行熔断,避免整个业务系统崩溃。其中,服务熔断的参数需要凭经验估计,以确定合适的范围,并需要手动调整,容易出现熔断参数不准确、更新不及时的情况,导致仍会有较多的请求分配到熔断的服务实例上,造成不必要的资源浪费。
4.可见,现有的熔断机制存在适应性较差的问题。


技术实现要素:

5.本发明实施例提供一种熔断方法、装置、电子设备和存储介质,以解决现有的熔断机制适应性较差的问题。
6.第一方面,本发明实施例提供了一种熔断方法,应用于业务分配系统,所述方法包括:
7.基于获取的目标服务器的负载数据,确定所述目标服务器的状态信息,所述目标服务器用于提供至少一个微服务;
8.基于所述状态信息,得到熔断配置参数,所述熔断配置参数用于调整所述微服务的熔断规则;
9.将所述熔断配置参数推送至所述目标服务器。
10.第二方面,本发明实施例还提供了另一种熔断方法,应用于微服务系统的服务器,所述方法包括:
11.发送所述服务器的负载数据至业务分配系统;
12.基于接收到的所述业务分配系统根据所述负载数据生成的熔断配置参数,更新微服务的熔断规则。
13.第三方面,本发明实施例还提供了一种熔断装置,所述装置包括:
14.确定模块,用于基于获取的目标服务器的负载数据,确定所述目标服务器的状态信息,所述目标服务器用于提供至少一个微服务;
15.第一计算模块,用于基于所述状态信息,得到熔断配置参数,所述熔断配置参数用
于调整所述微服务的熔断规则;
16.推送模块,用于将所述熔断配置参数推送至所述目标服务器。
17.第四方面,本发明实施例还提供了另一种熔断装置,所述装置包括:
18.发送模块,用于发送所述服务器的负载数据至业务分配系统;
19.更新模块,用于基于接收到的所述业务分配系统根据所述负载数据生成的熔断配置参数,更新微服务的熔断规则。
20.第五方面,本发明实施例还提供了一种电子设备,包括:
21.至少一个处理器;以及
22.与所述至少一个处理器通信连接的存储器;其中,
23.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如第一方面所述的熔断方法,或者,所述至少一个处理器能够执行如第二方面所述的熔断方法。
24.第六方面,本发明实施例还提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行如第一方面所述的熔断方法,或者,所述计算机指令用于使所述计算机执行如第二方面所述的熔断方法。
25.本发明实施例中,在根据熔断配置参数对微服务的熔断规则进行调整时,考虑了微服务对应的目标服务器的状态信息,可以根据目标服务器的不同的状态信息,得到不同的熔断配置参数,这样,将不同的熔断配置参数推送至目标服务器可以使得调整后的熔断规则适应目标服务器的状态,提升了熔断机制的适应性。
附图说明
26.为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
27.图1是本发明实施例提供的一种熔断方法的流程图之一;
28.图2是本发明实施例提供的一种熔断方法的流程图之二;
29.图3是本发明实施例提供的另一种熔断方法的流程图;
30.图4是本发明实施例提供的一种熔断装置的结构示意图;
31.图5是本发明实施例提供的另一种熔断装置的结构示意图;
32.图6是本发明实施例提供的一种电子设备的结构示意图;
33.图7是本发明实施例提供的另一种电子设备的结构示意图。
具体实施方式
34.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
35.本发明实施例中,提出了一种熔断方法、装置、电子设备和存储介质,以解决现有
的熔断机制适应性较差的问题。
36.参见图1,图1是本发明实施例提供的一种熔断方法的流程图之一,应用于业务分配系统,所述方法包括:
37.步骤101、基于获取的目标服务器的负载数据,确定所述目标服务器的状态信息,所述目标服务器用于提供至少一个微服务;
38.目标服务器可以提供一个或多个微服务,在多个微服务之间存在业务依赖的情况下,可以通过http或rpc协议进行服务间的调用。例如,在收到业务请求时,可以通过微服务架构中的统一网关(gateway)调用微服务a和微服务b,其中,微服务a可以存在调用微服务c、微服务d的情况,微服务b可以存在调用微服务d的情况,不同微服务之间根据业务请求的逻辑进行相互调用,形成复杂的调用链路。应当理解的是,微服务a、微服务b、微服务c、微服务d可以对应同一个目标服务器,也可以分别对应不同的目标服务器。
39.根据业务请求所需要调用的一个或多个微服务,获取一个或多个微服务对应的目标服务器的负载数据,以确定目标服务器的状态信息。进一步通过步骤102根据状态信息,动态调整微服务的熔断规则。
40.步骤102、基于所述状态信息,得到熔断配置参数,所述熔断配置参数用于调整所述微服务的熔断规则;
41.状态信息可以表征目标服务器的数据处理压力,换言之,目标服务器的负载越多,状态信息表征的目标服务器的数据处理压力越大;反之,则状态信息表征的目标服务器的数据处理压力越小。当某个目标服务器的数据处理压力较大,甚至发生了熔断的情况下,若仍然根据固定的熔断规则将较多的请求分配到数据处理压力较大的目标服务器上,会导致请求结果持续出现异常,更严重的出现服务器崩溃的情况。相关技术中,在目标服务器的数据处理压力较大的情况下,通过手动设置参数值,以避免数据处理压力继续增加,这样,虽然可以减少熔断的情况,确保业务请求可以持续进行,但是服务熔断的参数值凭经验估计合适的范围,容易出现业务请求分配不均的情况,造成不必要的资源浪费,并且部署服务的目标服务器性能有提升或下降,还需要重新设置服务熔断的参数值。本发明的实施方式中可以根据目标服务器的状态信息,得到相应的熔断配置参数,进一步根据步骤103,可以动态调整微服务的熔断规则。
42.步骤103、将所述熔断配置参数推送至所述目标服务器。
43.在多次调用某个微服务出现请求异常时,可以对该微服务进行熔断。这样,可以避免整个服务器崩溃。应当理解的是,调用某个微服务出现请求异常的原因有多种,例如,请求验证不通过、服务器繁忙、受到恶意攻击等。通过获取的目标服务器的负载数据,可以判断引起某个微服务出现请求异常的原因,若微服务对应的服务器繁忙,则通过熔断配置参数动态调整微服务的熔断规则,以延时对业务请求的响应;若微服务对应的服务器空闲,则通过熔断配置参数动态调整微服务的熔断规则,以增加分配业务请求的数量,提高目标服务器资源的利用率,使得调整后的微服务的熔断规则适应目标服务器的状态。
44.本发明实施例中,在根据熔断配置参数对微服务的熔断规则进行调整时,考虑了微服务对应的目标服务器的状态信息,可以根据目标服务器的不同的状态信息,得到不同的熔断配置参数,这样,将不同的熔断配置参数推送至目标服务器可以使得调整后的熔断规则适应目标服务器的状态,提升了熔断机制的适应性。
45.其中,每一个微服务均可以引入开源的熔断组件(sentinel),sentinel组件能实现慢调用比例、异常比例、异常数三种不同的熔断策略。微服务的熔断规则可以包括慢调用比例、异常比例、异常数这三种不同的熔断策略。需要说明的是,引入的开源组件还可以是其他类型的,在此不作限定。
46.基于慢调用比例的熔断策略为:设置允许慢调用的时间,当单位统计时长内请求(即调用某个微服务的请求)数目大于设置的最小请求数目,并且慢调用的比例大于第一阈值,则接下来的熔断时长内请求会自动被熔断。经过熔断时长后熔断器会进入探测恢复状态,若接下来的一个请求响应时间小于设置的慢调用时间则结束熔断,若大于设置的慢调用时间则会再次被熔断。
47.基于异常比例的熔断策略为:设置异常比例的值,当单位统计时长内请求数目大于设置的最小请求数目,并且异常的比例大于第二阈值,则接下来的熔断时长内请求会自动被熔断。经过熔断时长后熔断器会进入探测恢复状态,若接下来的一个请求成功完成则结束熔断,否则会再次被熔断。
48.基于异常数的熔断策略为:设置异常数的值,当单位统计时长内的异常数目超过第三阈值之后会自动进行熔断。经过熔断时长后熔断器会进入探测恢复状态,若接下来的一个请求成功完成则结束熔断,否则会再次被熔断。
49.在一实例中,业务分配系统可以包括消息队列集群、计算服务集群、列式数据库集群和配置注册中心集群,如图2所示。
50.每间隔单位时间可以获取一次目标服务器的负载数据,并将获取的每个目标服务器的负载数据缓存在消息队列集群的系统负载主题(system-load-topic)上。其中,单位时间可以是60秒。
51.计算服务集群可以订阅消息队列集群的主题system-load-topic,当收到该主题的负载数据时,会将该数据放入到计算服务集群对应的服务器的缓存队列中,并定时检查缓存队列的大小,若当前缓存队列的大小超过默认队列大小(可通过配置修改)时,会从该缓存队列中取出默认队列大小的数据,并可以将当前缓存队列中默认大小的数据批量写入到列式数据库集群的系统加载记录表(t_system_load_record)中,通过列式数据库集群实现数据的持久化。
52.计算服务集群还可以间隔60秒去尝试获取分布式锁,若获取成功,则从列式数据库集群数据库中查询每个目标服务器的负载数据,确定目标服务器的状态信息,并根据这些信息计算每个微服务相对合适的熔断配置参数。最后将计算后的熔断配置参数发布到配置注册中心集群中,在配置注册中心集群中的标识groupid为fusing-group-id,标示dataid为sentinel-config。
53.配置注册中心集群可以将groupid为fusing-group-id,dataid为sentinel-config的熔断配置信息(即熔断配置参数)推送至目标服务器,以实现动态调整微服务的熔断规则。当配置注册中心集群中的熔断配置信息发生变更时,配置注册中心集群会主动通知到每个订阅该熔断配置的微服务,同时微服务对应的目标服务器也会主动刷新本地内存中缓存的熔断配置信息。
54.作为一种可选地实施方式,所述负载数据包括所述目标服务器的资源占用率,步骤102:所述基于所述状态信息,得到熔断配置参数,包括如下至少一项:
55.在根据所述目标服务器的资源占用率,确定的所述状态信息为表征第一状态的情况下,根据所述目标服务器对应的微服务的响应时间,得到第一配置参数;
56.在根据所述目标服务器的资源占用率,确定的所述状态信息为表征第二状态的情况下,根据所述目标服务器对应的微服务的响应时间,得到第二配置参数,以及;
57.在根据所述目标服务器的资源占用率,确定的所述状态信息为表征第三状态的情况下,根据所述目标服务器对应的微服务的响应时间,得到第三配置参数;
58.其中,所述熔断规则包括调用所述微服务的频次,所述第一配置参数用于控制调用所述微服务的频次为第一频次,所述第二配置参数用于控制调用所述微服务的频次为第二频次,所述第三配置参数用于控制调用所述微服务的频次为第三频次,所述第一频次大于所述第二频次,所述第二频次大于所述第三频次,且所述第一状态下的资源占用率小于所述第二状态下的资源占用率,所述第二状态下的资源占用率小于所述第三状态下的资源占用率。
59.负载数据可以包括目标服务器的资源占用率,例如,目标服务器的资源占用率可以包括中央处理器(central processing unit,cpu)的占用率、内存的占用率、磁盘的占用率、网络的占用率等。本实施方式中负载数据以cpu的占用率为例,应当理解的是负载数据包括其他资源占用率中的一种或多种的情况下同样可以达到相同的技术效果。
60.在一示例中,根据目标服务器cpu的占用率,可以将目标服务器的状态划分为健康状态(即第一状态)、亚健康状态(即第二状态)和不健康状态(即第三状态),分别对应目标服务器状态信息中的第一状态信息、第二状态信息和第三状态信息。例如,目标服务器cpu的占用率小于等于40%时,将目标服务器的状态信息为第一状态信息;目标服务器cpu的占用率大于40%,且小于等于90%时,将目标服务器的状态信息为第二状态信息;目标服务器cpu的占用率大于90%时,将目标服务器的状态信息为第三状态信息。
61.其中,每一个微服务会引入应用程序编程接口(application programming interface,api)的公共向切面编程(aspect oriented programming,aop),该切面的主要功能为异步计算每个api接口的响应时间、请求结果,并将响应时间发送到消息队列集群的api-time-topic主题上。
62.计算服务集群可以订阅消息队列集群的主题api-time-topic,当收到该主题的数据时,会将该数据放入到计算服务集群对应的服务器的缓存队列中,并定时检查缓存队列的大小,若当前缓存队列的大小超过默认队列大小(可通过配置修改)时,会从该缓存队列中取出默认队列大小的数据,并可以将当前缓存队列中默认大小的数据批量写入到列式数据库集群的系统加载记录表(t_api_time_record)中,通过列式数据库集群实现数据的持久化。
63.计算服务集群还可以间隔60秒去尝试获取分布式锁,若获取成功,则从列式数据库集群数据库中查询每个目标服务器的api响应时间和服务器负载信息,并根据这些信息计算每个微服务相对合适的熔断配置参数(即第一配置参数、第二配置参数和第三配置参数)。这样,在第一状态下,可以增加调用微服务的频次,以提升资源的利用率;在第二状态下,可以减少调用微服务的频次,降低目标服务器的负载压力;在第三状态下,可以进行熔断,不对该微服务进行调用,确保业务请求的正常运行。这样,根据目标服务器的不同的状态信息,将对应的第一配置参数、第二配置参数或第三配置参数推送至目标服务器可以使
得调整后的熔断规则适应目标服务器的状态,提升了熔断机制的适应性。
64.其中,通过微服务的api接口可以记录到每个微服务的响应时间(即接口响应时间),计算每个微服务的响应时间的平均值,可以得到多个微服务的平均响应时间,平均响应时间可以记为a。
65.其中,通过微服务的api接口可以记录到每个微服务的响应时间,比较每个微服务的响应时间之间的大小关系,可以得到多个微服务对应的响应时间中的最大响应时间和最小响应时间,最大响应时间可以记为b,最小响应时间可以记为c。
66.其中,通过在配置注册中心集群配置的默认的最大响应时间(即预设响应时间,记为d)。
67.其中,通过微服务的api接口可以记录到每个微服务的响应时间,可以得到接口响应时间大于接口平均响应时间(即平均响应时间a)的接口个数,将接口响应时间大于接口平均响应时间的接口个数记为e。
68.其中,通过微服务的api接口可以记录到每个微服务的响应时间,可以得到接口响应时间小于接口平均响应时间(即平均响应时间a)的接口个数,将接口响应时间小于接口平均响应时间的接口个数记为f。
69.其中,通过微服务的api接口可以记录到每个微服务的响应时间,可以得到每个微服务接口的每秒查询率(queries-per-second,qps),将qps记为l。
70.其中,将用户在配置注册中心集群配置的统计时长值记为m,若未配置则默认为0。
71.其中,通过微服务的api接口可以记录到每个微服务的响应时间,可以得到大于接口平均响应时间的接口响应时间,将大于接口平均响应时间的接口响应时间记为n。
72.这样,可以根据目标服务器对应的微服务的响应时间,在不同状态信息下,得到不同的熔断配置参数,熔断配置参数中均可以包括最大响应时间、异常数、比例阈值、熔断时长、最小请求数和统计时长这些类别的配置参数,换言之,第一配置参数、第二配置参数和第三配置参数均可以包括上述类别的配置参数。基于熔断配置参数,通过熔断组件sentinel可以在慢调用比例、异常比例、异常数三种不同的熔断策略之间的动态调整。
73.在一可选地实施方式中,所述根据所述目标服务器对应的微服务的响应时间,得到第一配置参数,包括:
74.根据所述目标服务器对应的至少一个微服务的响应时间,得到微服务的平均响应时间;
75.将所述平均响应时间和第一预设响应时间中的最大值,确定为第一响应时间子参数;
76.将所述平均响应时间和第一目标响应时间中的最小值,确定为第一熔断时长子参数,所述第一目标响应时间为所述至少一个微服务的响应时间中最长响应时间与最短响应时间的差值;
77.所述第一配置参数包括所述第一响应时间子参数和所述第一熔断时长子参数。
78.本实施方式中,通过微服务的api接口可以记录到目标服务器对应的至少一个微服务中每个微服务的响应时间,从而可以计算出微服务的平均响应时间a。第一响应时间子参数,可以记为(rt),(rt)=max(a,d),其中,d为通过在配置注册中心集群配置的默认的最大响应时间。第一熔断时长子参数可以记为min(b-c,a),其中,b-c为第一目标响应时间,b
为多个微服务对应的响应时间中的最大响应时间,c为多个微服务对应的响应时间中的最小响应时间。这样,在第一状态下,通过第一响应时间子参数可以增加服务器允许的最大响应时间,以及通过第一熔断时长子参数减小了熔断的时间,从而增加了调用微服务的频次,以提升资源的利用率。提升了熔断机制的适应性。
79.此外,第一配置参数还可以包括如下子参数:
80.异常数子参数=e,e为接口响应时间大于接口平均响应时间的接口个数;
81.比例阀值子参数=e/l,l为qps;
82.最小请求数子参数=l-f,f为接口响应时间小于接口平均响应时间的接口个数;
83.统计时长子参数(ms)=min(1000,m),m为用户在配置注册中心集群配置的统计时长值。
84.在一可选地实施方式中,所述根据所述目标服务器对应的微服务的响应时间,得到第二配置参数,包括:
85.根据所述目标服务器对应的至少一个微服务的响应时间,得到微服务的平均响应时间;
86.将第二目标响应时间的平均值和第二预设响应时间中的最大值,确定为第二响应时间子参数,所述第二目标响应时间为所述至少一个微服务的响应时间中大于所述平均响应时间的微服务的响应时间;
87.将所述平均响应时间和最长响应时间中的最小值,确定为第二熔断时长子参数,所述最长响应时间为所述至少一个微服务的响应时间中的最大值;
88.所述第二配置参数包括所述第二响应时间子参数和所述第二熔断时长子参数。
89.本实施方式中,通过微服务的api接口可以记录到目标服务器对应的至少一个微服务中每个微服务的响应时间,从而可以计算出微服务的平均响应时间a。第二响应时间子参数,可以记为(rt),(rt)=max(avg(n),d)其中,d为通过在配置注册中心集群配置的默认的最大响应时间。第二熔断时长子参数可以记为min(a,b),其中,b为多个微服务对应的响应时间中的最大响应时间。这样,在第二状态下,第二响应时间子参数相较于第一响应时间子参数减小了服务器允许的最大响应时间,以及通过第二熔断时长子参数相较于原本的第一熔断时长子参数增加了熔断的时间,从而减少了调用微服务的频次,以降低目标服务器的负载压力。提升了熔断机制的适应性。
90.此外,第二配置参数还可以包括如下子参数:
91.异常数子参数=f,f为接口响应时间小于接口平均响应时间的接口个数;
92.比例阀值子参数=f/l,l为qps;
93.最小请求数子参数=l-e,e为接口响应时间大于接口平均响应时间的接口个数;
94.统计时长子参数(ms)=min(1000,m),m为用户在配置注册中心集群配置的统计时长值。
95.在一可选地实施方式中,所述根据所述目标服务器对应的微服务的响应时间,得到第三配置参数,包括:
96.将最短响应时间,确定为第三响应时间子参数,所述最短响应时间为所述至少一个微服务的响应时间中的最小值;
97.将最长响应时间,确定为第三熔断时长子参数,所述最长响应时间为所述至少一
个微服务的响应时间中的最大值;
98.所述第三配置参数包括所述第三响应时间子参数和所述第三熔断时长子参数。
99.本实施方式中,通过微服务的api接口可以记录到目标服务器对应的至少一个微服务中每个微服务的响应时间,从而可以确定多个微服务对应的响应时间中的最小响应时间c,以及多个微服务对应的响应时间中的最大响应时间b;并且将c作为第三响应时间子参数,将b作为第三熔断时长子参数。这样,在第三状态下,第三响应时间子参数相较于第二响应时间子参数进一步减小了服务器允许的最大响应时间,以及通过第三熔断时长子参数相较于原本的第二熔断时长子参数进一步增加了熔断的时间,从而进一步减少了调用微服务的频次,以进一步降低目标服务器的负载压力。提升了熔断机制的适应性。
100.此外,第三配置参数还可以包括如下子参数:
101.异常数子参数=5,5可以是接口响应时间小于接口平均响应时间的接口个数的预设值;
102.比例阀值子参数=0.1;
103.最小请求数子参数=3,3可以是接口响应时间大于接口平均响应时间的接口个数的预设值;
104.统计时长子参数(ms)=min(1000,m),m为用户在配置注册中心集群配置的统计时长值。
105.作为一种可选地实施方式,所述微服务包括至少一个子服务;
106.在所述将所述熔断配置参数推送至所述目标服务器之前,所述方法还包括:
107.基于所述状态信息,得到权重参数,所述权重参数用于调整所述至少一个子服务中各子服务的熔断规则;
108.所述将所述熔断配置参数推送至所述目标服务器,包括:
109.将所述熔断配置参数和所述权重参数推送至所述目标服务器。
110.本实施方式中,计算服务集群可以间隔单位时间去尝试获取一次分布式锁,若获取成功,则从列式数据库集群数据库中查询每个目标服务器的api响应时间和服务器负载信息,并根据这些信息计算每个微服务相对合适的熔断配置参数和权重参数。这样,可以根据不同的熔断配置参数动态调整微服务的熔断规则;并且可以根据权重参数对每个微服务中各子服务进行请求分配,以实现负载均衡,换言之,可以根据微服务的权重参数选择处理请求的微服务中的子服务,权重值越大,被选中的概率就越大,进一步提升了熔断机制的适应性。
111.状态信息可以包括第一状态信息、第二状态信息和第三状态信息,换言之,同一个微服务中,不同的子服务对应的状态信息可以相同,也可以不相同。各子服务对应的权重参数的值越大,则被分配的请求就会越多。所以可根据子服务的状态设置权重参数,权重参数的值的范围为0到1。例如,当系统负载状态为健康时:子服务权重参数的值可设置为1;当系统负载状态为亚健康时:子服务权重参数的值可设置为0.7;当系统负载状态为不健康时:子服务权重参数的值可设置为0.1。
112.参见图3,图3是本发明实施例提供的另一种熔断方法的流程图,应用于微服务系统的服务器,所述方法包括:
113.步骤301、发送所述服务器的负载数据至业务分配系统;
114.每个微服务每间隔单位时间可以记录一次对应的服务器的负载数据,并将记录的负载数据发送至消息队列集群的系统负载主题(system-load-topic)上。其中,单位时间可以是60秒。
115.步骤302、基于接收到的所述业务分配系统根据所述负载数据生成的熔断配置参数,更新微服务的熔断规则。
116.每一个微服务都会订阅配置注册中心集群中的groupid为fusing-group-id,dataid为sentinel-config的熔断配置信息(即熔断配置参数),当微服务启动/重启时,会主动从配置注册中心集群中拉取熔断配置信息,并将获取到熔断配置信息缓存到内存中,缓存的熔断配置信息格式为键值对结构,键为微服务地址,值为改微服务地址的熔断配置。当配置注册中心集群中的熔断配置信息发生变更时,配置注册中心集群会主动通知到每个订阅该熔断配置的微服务,同时微服务也会主动刷新本地内存中缓存的熔断配置信息。
117.其中,假设使用的配置注册中心集群为纳克斯(nacos),则可以将微服务的熔断规则修改为纳克斯规则(com.alibaba.cloud.nacos.ribbon.nacosrule),该熔断规则会根据微服务的权重信息选择处理请求的服务实例,权重越大,被选中的概率就越大。
118.重写nacosrule中的choose方法,在该方法中会根据权重选择服务实例,当选定好服务实例后,需要在内存中查询该微服务的熔断配置参数,并通过sentinel的熔断规则(degraderulemanager.loadrules)重新刷新该服务实例的熔断规则信息。各微服务均可以引入重写后的nacosrule配置信息,引入后才会在每次调用微服务时,根据被调用的微服务所在服务器的负载信息来动态设置该微服务的熔断配置参数。这样,本实施方式中服务器可以根据不同的熔断配置参数进行业务请求的动态分配,以适应服务器的状态,提升了熔断机制的适应性。
119.参见图4,图4是本发明实施例提供的一种熔断装置的结构示意图,熔断装置400包括:
120.确定模块401,用于基于获取的目标服务器的负载数据,确定所述目标服务器的状态信息,所述目标服务器用于提供至少一个微服务;
121.第一计算模块402,用于基于所述状态信息,得到熔断配置参数,所述熔断配置参数用于调整所述微服务的熔断规则;
122.推送模块403,用于将所述熔断配置参数推送至所述目标服务器。
123.可选地,所述负载数据包括所述目标服务器的资源占用率,所述第一计算模块402包括:
124.第一计算子模块,用于在根据所述目标服务器的资源占用率,确定的所述状态信息为表征第一状态的情况下,根据所述目标服务器对应的微服务的响应时间,得到第一配置参数;
125.第二计算子模块,用于在根据所述目标服务器的资源占用率,确定的所述状态信息为表征第二状态的情况下,根据所述目标服务器对应的微服务的响应时间,得到第二配置参数,以及;
126.第三计算子模块,用于在根据所述目标服务器的资源占用率,确定的所述状态信息为表征第三状态的情况下,根据所述目标服务器对应的微服务的响应时间,得到第三配置参数;
127.其中,所述熔断规则包括调用所述微服务的频次,所述第一配置参数用于控制调用所述微服务的频次为第一频次,所述第二配置参数用于控制调用所述微服务的频次为第二频次,所述第三配置参数用于控制调用所述微服务的频次为第三频次,所述第一频次大于所述第二频次,所述第二频次大于所述第三频次,且所述第一状态下的资源占用率小于所述第二状态下的资源占用率,所述第二状态下的资源占用率小于所述第三状态下的资源占用率。
128.可选地,所述第一计算子模块包括:
129.第一计算单元,用于根据所述目标服务器对应的至少一个微服务的响应时间,得到微服务的平均响应时间;
130.第一确定单元,用于将所述平均响应时间和第一预设响应时间中的最大值,确定为第一响应时间子参数;
131.第二确定单元,用于将所述平均响应时间和第一目标响应时间中的最小值,确定为第一熔断时长子参数,所述第一目标响应时间为所述至少一个微服务的响应时间中最长响应时间与最短响应时间的差值;
132.所述第一配置参数包括所述第一响应时间子参数和所述第一熔断时长子参数。
133.可选地,所述第二计算子模块包括:
134.第二计算单元,用于根据所述目标服务器对应的至少一个微服务的响应时间,得到微服务的平均响应时间;
135.第三确定单元,用于将第二目标响应时间的平均值和第二预设响应时间中的最大值,确定为第二响应时间子参数,所述第二目标响应时间为所述至少一个微服务的响应时间中大于所述平均响应时间的微服务的响应时间;
136.第四确定单元,用于将所述平均响应时间和最长响应时间中的最小值,确定为第二熔断时长子参数,所述最长响应时间为所述至少一个微服务的响应时间中的最大值;
137.所述第二配置参数包括所述第二响应时间子参数和所述第二熔断时长子参数。
138.可选地,所述第三计算子模块包括:
139.第五确定单元,用于将最短响应时间,确定为第三响应时间子参数,所述最短响应时间为所述至少一个微服务的响应时间中的最小值;
140.第六确定单元,用于将最长响应时间,确定为第三熔断时长子参数,所述最长响应时间为所述至少一个微服务的响应时间中的最大值;
141.所述第三配置参数包括所述第三响应时间子参数和所述第三熔断时长子参数。
142.可选地,所述微服务包括至少一个子服务,熔断装置400还包括:
143.第二计算模块,用于基于所述状态信息,得到权重参数,所述权重参数用于调整所述至少一个子服务中各子服务的熔断规则;
144.所述推送模块403包括:
145.推送子模块,用于将所述熔断配置参数和所述权重参数推送至所述目标服务器。
146.本发明实施例提供的熔断装置能够实现图1的方法实施例实现的各个过程并达到相同的技术效果,为避免重复,这里不再赘述。
147.参见图5,图5是本发明实施例提供的另一种熔断装置的结构示意图,熔断装置500包括:
148.发送模块501,用于发送服务器的负载数据至业务分配系统;
149.更新模块502,用于基于接收到的所述业务分配系统根据所述负载数据生成的熔断配置参数,更新微服务的熔断规则。
150.本发明实施例提供的熔断装置能够实现图3的方法实施例实现的各个过程并达到相同的技术效果,为避免重复,这里不再赘述。
151.参见图6,图6是本发明实施例提供的一种电子设备的结构示意图,如图6所示,电子设备600,包括:
152.至少一个处理器601;以及
153.与所述至少一个处理器通信连接的存储器602;其中,
154.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行图1的熔断方法的实施例的各个过程。
155.需要说明的是,本实施例中电子设备600可以设置在本发明实施例中方法实施例中任意实施方式的业务分配系统中,本发明实施例中方法实施例中业务分配系统的任意实施方式都可以被本实施例中的电子设备600所实现,且能达到相同的技术效果,为避免重复,这里不再赘述。
156.参见图7,图7是本发明实施例提供的另一种电子设备的结构示意图,如图7所示,电子设备700,包括:
157.至少一个处理器701;以及
158.与所述至少一个处理器通信连接的存储器702;其中,
159.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行图3的熔断方法的实施例的各个过程。
160.需要说明的是,本实施例中电子设备700可以设置在本发明实施例中方法实施例中任意实施方式的服务器中,本发明实施例中方法实施例中服务器的任意实施方式都可以被本实施例中的电子设备700所实现,且能达到相同的技术效果,为避免重复,这里不再赘述。
161.本发明实施例中,提供一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行图1的熔断方法的实施例的各个过程,或者,所述计算机指令用于使所述计算机执行图3的熔断方法的实施例的各个过程,以及达到相同的有益效果,此处不再赘述。
162.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本发明实施方式中的方法和装置的范围不限于按所讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
163.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方
法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
164.上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。

技术特征:
1.一种熔断方法,其特征在于,应用于业务分配系统,所述方法包括:基于获取的目标服务器的负载数据,确定所述目标服务器的状态信息,所述目标服务器用于提供至少一个微服务;基于所述状态信息,得到熔断配置参数,所述熔断配置参数用于调整所述微服务的熔断规则;将所述熔断配置参数推送至所述目标服务器。2.根据权利要求1所述的方法,其特征在于,所述负载数据包括所述目标服务器的资源占用率,所述基于所述状态信息,得到熔断配置参数,包括如下至少一项:在根据所述目标服务器的资源占用率,确定的所述状态信息为表征第一状态的情况下,根据所述目标服务器对应的微服务的响应时间,得到第一配置参数;在根据所述目标服务器的资源占用率,确定的所述状态信息为表征第二状态的情况下,根据所述目标服务器对应的微服务的响应时间,得到第二配置参数,以及;在根据所述目标服务器的资源占用率,确定的所述状态信息为表征第三状态的情况下,根据所述目标服务器对应的微服务的响应时间,得到第三配置参数;其中,所述熔断规则包括调用所述微服务的频次,所述第一配置参数用于控制调用所述微服务的频次为第一频次,所述第二配置参数用于控制调用所述微服务的频次为第二频次,所述第三配置参数用于控制调用所述微服务的频次为第三频次,所述第一频次大于所述第二频次,所述第二频次大于所述第三频次,且所述第一状态下的资源占用率小于所述第二状态下的资源占用率,所述第二状态下的资源占用率小于所述第三状态下的资源占用率。3.根据权利要求2所述的方法,其特征在于,所述根据所述目标服务器对应的微服务的响应时间,得到第一配置参数,包括:根据所述目标服务器对应的至少一个微服务的响应时间,得到微服务的平均响应时间;将所述平均响应时间和第一预设响应时间中的最大值,确定为第一响应时间子参数;将所述平均响应时间和第一目标响应时间中的最小值,确定为第一熔断时长子参数,所述第一目标响应时间为所述至少一个微服务的响应时间中最长响应时间与最短响应时间的差值;所述第一配置参数包括所述第一响应时间子参数和所述第一熔断时长子参数。4.根据权利要求2所述的方法,其特征在于,所述根据所述目标服务器对应的微服务的响应时间,得到第二配置参数,包括:根据所述目标服务器对应的至少一个微服务的响应时间,得到微服务的平均响应时间;将第二目标响应时间的平均值和第二预设响应时间中的最大值,确定为第二响应时间子参数,所述第二目标响应时间为所述至少一个微服务的响应时间中大于所述平均响应时间的微服务的响应时间;将所述平均响应时间和最长响应时间中的最小值,确定为第二熔断时长子参数,所述最长响应时间为所述至少一个微服务的响应时间中的最大值;所述第二配置参数包括所述第二响应时间子参数和所述第二熔断时长子参数。
5.根据权利要求2所述的方法,其特征在于,所述根据所述目标服务器对应的微服务的响应时间,得到第三配置参数,包括:将最短响应时间,确定为第三响应时间子参数,所述最短响应时间为所述至少一个微服务的响应时间中的最小值;将最长响应时间,确定为第三熔断时长子参数,所述最长响应时间为所述至少一个微服务的响应时间中的最大值;所述第三配置参数包括所述第三响应时间子参数和所述第三熔断时长子参数。6.根据权利要求1所述的方法,其特征在于,所述微服务包括至少一个子服务;在所述将所述熔断配置参数推送至所述目标服务器之前,所述方法还包括:基于所述状态信息,得到权重参数,所述权重参数用于调整所述至少一个子服务中各子服务的熔断规则;所述将所述熔断配置参数推送至所述目标服务器,包括:将所述熔断配置参数和所述权重参数推送至所述目标服务器。7.一种熔断方法,其特征在于,应用于微服务系统的服务器,所述方法包括:发送所述服务器的负载数据至业务分配系统;基于接收到的所述业务分配系统根据所述负载数据生成的熔断配置参数,更新微服务的熔断规则。8.一种熔断装置,其特征在于,所述装置包括:确定模块,用于基于获取的目标服务器的负载数据,确定所述目标服务器的状态信息,所述目标服务器用于提供至少一个微服务;第一计算模块,用于基于所述状态信息,得到熔断配置参数,所述熔断配置参数用于调整所述微服务的熔断规则;推送模块,用于将所述熔断配置参数推送至所述目标服务器。9.一种熔断装置,其特征在于,所述装置包括:发送模块,用于发送服务器的负载数据至业务分配系统;更新模块,用于基于接收到的所述业务分配系统根据所述负载数据生成的熔断配置参数,更新微服务的熔断规则。10.一种电子设备,其特征在于,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至6中任一项所述的熔断方法,或者,所述至少一个处理器能够执行如权利要求7所述的熔断方法。11.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行如权利要求1至6中任一项所述的熔断方法,或者,所述计算机指令用于使所述计算机执行如权利要求7所述的熔断方法。

技术总结
本发明提供一种熔断方法、装置、电子设备和存储介质,所述方法包括:基于获取的目标服务器的负载数据,确定所述目标服务器的状态信息,所述目标服务器用于提供至少一个微服务;基于所述状态信息,得到熔断配置参数,所述熔断配置参数用于调整所述微服务的熔断规则;将所述熔断配置参数推送至所述目标服务器。在根据熔断配置参数对微服务的熔断规则进行调整时,考虑了微服务对应的目标服务器的状态信息,可以根据目标服务器的不同的状态信息,得到不同的熔断配置参数,这样,将不同的熔断配置参数推送至目标服务器可以使得调整后的熔断规则适应目标服务器的状态,提升了熔断机制的适应性。的适应性。的适应性。


技术研发人员:李海涛
受保护的技术使用者:中国移动通信集团有限公司
技术研发日:2022.12.29
技术公布日:2023/10/20
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐