1.本技术涉及到微服务技术领域,特别是涉及到一种适用于微服务的熔断识别方法、装置、设备及存储介质。
背景技术:
2.随着互联网技术的发展,微服务架构得到广泛的应用。在微服务架构中,具有海量的微服务提供服务,微服务之间存在互相依赖、链式调用的情况。当某个微服务出现异常时,将导致请求积压,造成关联的微服务的阻塞,影响了系统的稳定性。
技术实现要素:
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.若所述目标依赖关系属性是弱,判断所述第二正在处理请求数是否大于所述第二熔断触发条件中的第四正在处理请求阈值,以及判断所述第二窗口处理请求总数是否大于所述第二熔断触发条件中的第四窗口请求数阈值,若均为是,则确定所述熔断识别结果为熔断,否则,确定所述熔断识别结果为不熔断,其中,所述第四窗口请求数阈值大于所述第一熔断触发条件中的第二窗口请求数阈值,所述第四正在处理请求阈值大于所述第一熔断触发条件中的第二正在处理请求阈值;
28.若所述目标依赖关系属性是强,判断所述第二正在处理请求数是否大于所述第二熔断触发条件中的第五正在处理请求阈值,以及判断所述第二窗口处理请求总数是否大于所述第二熔断触发条件中的第五窗口请求数阈值,若均为是,则确定所述熔断识别结果为熔断,否则,确定所述熔断识别结果为不熔断,其中,所述第五窗口请求数阈值大于所述第四窗口请求数阈值,所述第五正在处理请求阈值大于所述第四正在处理请求阈值。
29.进一步的,所述采用获取的与所述目标微服务接口对应的第二熔断触发条件,对所述单服务调用请求进行熔断识别,得到所述熔断识别结果的步骤之后,还包括:
30.当所述熔断识别结果为不熔断时,获取与所述单服务调用请求对应的目标响应时长;
31.判断所述目标响应时长是否大于预设的响应时长阈值;
32.若大于所述响应时长阈值,则确定所述熔断识别结果为熔断。
33.进一步的,所述采用获取的与所述目标微服务接口对应的第二熔断触发条件,对所述单服务调用请求进行熔断识别,得到所述熔断识别结果的步骤之后,还包括:
34.当所述熔断识别结果为熔断时,将所述目标微服务接口的服务状态设为关闭;
35.获取所述熔断识别结果的最晚更新时间距离当前时间的第一间隔时长、与所述目标微服务接口对应的目标慢调用比例及目标异常线程比例,判断所述第一间隔时长是否大
于预设的第一间隔时长阈值、判断所述目标慢调用比例是否小于预设的慢调用比例阈值和判断所述目标异常线程比例是否小于预设的异常线程比例阈值阈值;
36.若均为是,则将所述目标微服务接口的所述服务状态设为半开放;
37.获取所述目标微服务接口的所述服务状态确定为半开放的时间距离当前时间的第二间隔时长,判断所述第二间隔时长是否大于预设的第二间隔时长阈值;
38.若大于所述第二间隔时长阈值,则将所述目标微服务接口的所述服务状态设为全开放。
39.本技术还提出了一种适用于微服务的熔断识别装置,所述装置包括:
40.请求获取模块,用于实时监控目标微服务接口接收到的单服务调用请求;
41.目标调用链路属性确定模块,用于获取与所述单服务调用请求对应的目标调用链路属性;
42.判断模块,用于判断所述目标调用链路属性是否为核心;
43.第一熔断识别模块,用于若否,则采用获取的与所述目标微服务接口对应的第一熔断触发条件,对所述单服务调用请求进行熔断识别,得到熔断识别结果;
44.第二熔断识别模块,用于若是,则采用获取的与所述目标微服务接口对应的第二熔断触发条件,对所述单服务调用请求进行熔断识别,得到所述熔断识别结果。
45.本技术还提出了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。
46.本技术还提出了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。
47.本技术的适用于微服务的熔断识别方法、装置、设备及存储介质,其中方法实现了基于与单服务调用请求对应的调用链路属性对微服务接口进行熔断识别,在微服务接口响应请求出现异常时及时进行熔断,避免了请求积压,避免造成关联的微服务的阻塞;而且在调用链路属性为非核心时采用第一熔断触发条件,在调用链路属性为核心时采用第二熔断触发条件,实现优先保障对核心的调用链路的响应,保证了核心的调用链路执行的稳定性。
附图说明
48.图1为本技术一实施例的适用于微服务的熔断识别方法的流程示意图;
49.图2为本技术一实施例的适用于微服务的熔断识别装置的结构示意框图;
50.图3为本技术一实施例的计算机设备的结构示意框图。
51.本技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
52.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
53.参照图1,本技术实施例中提供一种适用于微服务的熔断识别方法,所述方法包括:
54.s1:实时监控目标微服务接口接收到的单服务调用请求;
55.s2:获取与所述单服务调用请求对应的目标调用链路属性;
56.s3:判断所述目标调用链路属性是否为核心;
57.s4:若否,则采用获取的与所述目标微服务接口对应的第一熔断触发条件,对所述单服务调用请求进行熔断识别,得到熔断识别结果;
58.s5:若是,则采用获取的与所述目标微服务接口对应的第二熔断触发条件,对所述单服务调用请求进行熔断识别,得到所述熔断识别结果。
59.本实施例实现了基于与单服务调用请求对应的调用链路属性对微服务接口进行熔断识别,在微服务接口响应请求出现异常时及时进行熔断,避免了请求积压,避免造成关联的微服务的阻塞;而且在调用链路属性为非核心时采用第一熔断触发条件,在调用链路属性为核心时采用第二熔断触发条件,实现优先保障对核心的调用链路的响应,保证了核心的调用链路执行的稳定性。
60.对于s1,可以是同一微服务架构中的其它微服务向目标微服务接口发送的单服务调用请求,也可以是服务端以外的系统向目标微服务接口发送的单服务调用请求。
61.目标微服务接口,是微服务中的一个接口。可以理解的是,每个微服务可以设置一个或多个接口。
62.单服务调用请求,是调用微服务提供软件服务的请求。
63.对于s2,将所述单服务调用请求携带的请求标识在预设的调用链路表中进行调用链路标识匹配,将匹配到的所述调用链路标识对应的调用链路属性作为所述目标调用链路属性。
64.调用链路表包括:请求标识、调用链路标识和调用链路属性。调用链路标识,是调用链路id,用于唯一标识一个调用链路。调用链路属性包括:核心和非核心。请求标识,是请求id,用于唯一标识一个请求。
65.为核心的调用链路属性对应的调用链路,是影响业务的处理结果的流程。比如,当本技术应用于车险行业时,车理赔的查勘定损任务处理流程是产生业务结果的重要流程,因此该流程的调用链路属性是核心。
66.为非核心的调用链路属性对应的调用链路,是不影响业务的处理结果的流程。比如,当本技术应用于车险行业时,客户标识的展示流程是不影响车理赔业务处理结果的流程,客户标识的展示流程可有可无,因此客户标识的展示流程的调用链路属性是非核心。
67.可选的,所述获取与所述单服务调用请求对应的目标调用链路属性的步骤,包括:获取与所述单服务调用请求对应的调用链路异常线程数;判断所述调用链路异常线程数是否大于预设的单链路异常线程数阈值;若大于所述单链路异常线程数阈值,则确定熔断识别结果为熔断;若不大于所述单链路异常线程数阈值,获取与所述单服务调用请求对应的目标调用链路属性。从而实现将异常线程数超过阈值的调用链路的单服务调用请求直接设置为熔断,避免异常调用链路对资源的无效消耗。
68.调用链路异常线程数,是调用链路的异常的线程的总数。
69.对于s3,判断所述目标调用链路属性值是否为核心,也是判断所述单服务调用请求是否是核心的调用链路发送的请求。
70.对于s4,若否,意味着所述单服务调用请求是非核心的调用链路的请求,因此,可以从数据库中获取与所述目标微服务接口对应的第一熔断触发条件,也可以从第三方应用
系统中获取与所述目标微服务接口对应的第一熔断触发条件,还可以将与所述目标微服务接口对应的第一熔断触发条件写入实现本技术的程序中。
71.其中,判断所述单服务调用请求对应的参数是否符合所述第一熔断触发条件,若符合,则确定所述熔断识别结果为熔断,若不符合,确定所述熔断识别结果为不熔断。
72.对于s5,若是,意味着所述单服务调用请求是核心的调用链路的请求,因此,可以从数据库中获取与所述目标微服务接口对应的第二熔断触发条件,也可以从第三方应用系统中获取与所述目标微服务接口对应的第二熔断触发条件,还可以将与所述目标微服务接口对应的第二熔断触发条件写入实现本技术的程序中。
73.其中,判断所述单服务调用请求对应的参数是否符合所述第二熔断触发条件,若符合,则确定所述熔断识别结果为熔断,若不符合,确定所述熔断识别结果为不熔断。
74.第二熔断触发条件,用于实现优先保障对核心的调用链路的响应,保证了核心的调用链路执行的稳定性。也就是说,对于同一条件的阈值,第二熔断触发条件对应的值大于第一熔断触发条件对应的值。
75.在一个实施例中,上述采用获取的与所述目标微服务接口对应的第一熔断触发条件,对所述单服务调用请求进行熔断识别,得到熔断识别结果的步骤,包括:
76.s41:获取与所述目标微服务接口对应的所述第一熔断触发条件、第一正在处理请求数和在预设的第一时长内的第一窗口处理请求总数;
77.s42:判断所述第一正在处理请求数是否大于所述第一熔断触发条件中的第一正在处理请求阈值,以及所述第一窗口处理请求总数是否大于所述第一熔断触发条件中的第一窗口请求数阈值;
78.s43:若均否,则确定所述熔断识别结果为不熔断;
79.s44:若任一个为是,则确定所述熔断识别结果为熔断。
80.本实施例实现了根据正在处理请求数、在预设的第一时长内的第一窗口处理请求总数和第一熔断触发条件,对所述单服务调用请求进行熔断识别,从而限制高并发请求的数量时,避免所述目标微服务接口因需要响应的请求数过多而出现故障。
81.对于s41,可以从数据库中获取与所述目标微服务接口对应的第一熔断触发条件,也可以从第三方应用系统中获取与所述目标微服务接口对应的第一熔断触发条件,还可以将与所述目标微服务接口对应的第一熔断触发条件写入实现本技术的程序中。
82.可以从数据库中获取与所述目标微服务接口对应的第一正在处理请求数,也可以从监控工具或监控软件中获取与所述目标微服务接口对应的第一正在处理请求数。
83.第一正在处理请求数,也就是所述目标微服务接口在当前时间正在处理的请求的数量。
84.可以从数据库中获取与所述目标微服务接口对应的在预设的第一时长内的第一窗口处理请求总数,也可以从监控工具或监控软件中获取与所述目标微服务接口对应的在预设的第一时长内的第一窗口处理请求总数。
85.第一窗口处理请求总数,也就是紧靠当前时间的历史窗口期内(也就是第一时长内)所述目标微服务接口响应的请求的数量。
86.对于s43,若均否,也就是说,所述第一正在处理请求数小于或等于所述第一熔断触发条件中的第一正在处理请求阈值,并且,所述第一窗口处理请求总数小于或等于所述
第一熔断触发条件中的第一窗口请求数阈值,此时意味着还未达到所述第一正在处理请求阈值和第一窗口请求数阈值中任一个对应的熔断要求,因此确定所述熔断识别结果为不熔断,以使所述目标微服务接口正常响应所述单服务调用请求。
87.对于s44,若任一个为是,也就是说,所述第一正在处理请求数大于所述第一熔断触发条件中的第一正在处理请求阈值,或者,所述第一窗口处理请求总数大于所述第一熔断触发条件中的第一窗口请求数阈值,此时意味着已达到所述第一正在处理请求阈值和第一窗口请求数阈值中至少一个对应的熔断要求,因此确定所述熔断识别结果为熔断,以使所述目标微服务接口不响应所述单服务调用请求,避免所述目标微服务接口因需要响应的请求数过多而出现故障。
88.在一个实施例中,上述若任一个为是,则确定所述熔断识别结果为熔断的步骤s44,包括:
89.s441:若任一个为是,则获取与所述目标微服务接口对应的目标依赖关系属性;
90.s442:若所述目标依赖关系属性是弱,则确定所述熔断识别结果为熔断;
91.s443:若所述目标依赖关系属性是强,判断所述第一正在处理请求数是否大于所述第一熔断触发条件中的第二正在处理请求阈值,以及判断所述第一窗口处理请求总数是否大于所述第一熔断触发条件中的第二窗口请求数阈值;
92.s444:若均为是,则确定所述熔断识别结果为熔断,否则,确定所述熔断识别结果为不熔断。
93.本实施例在所述第一正在处理请求数大于所述第一熔断触发条件中的第一正在处理请求阈值或所述第一窗口处理请求总数大于所述第一熔断触发条件中的第一窗口请求数阈值时,根据依赖关系属性确定熔断识别结果是否为熔断,有利于避免了请求积压,避免造成关联的微服务的阻塞。
94.对于s441,若任一个为是,也就是说,所述第一正在处理请求数大于所述第一熔断触发条件中的第一正在处理请求阈值或所述第一窗口处理请求总数大于所述第一熔断触发条件中的第一窗口请求数阈值,此时意味着已达到所述第一正在处理请求阈值和第一窗口请求数阈值中至少一个对应的熔断要求,将所述单服务调用请求携带的参数在依赖关系表中进行依赖关系属性匹配,将匹配到的所述依赖关系属性作为所述目标依赖关系属性。
95.依赖关系表包括:请求发送方标识、微服务标识和依赖关系属性,其中,请求发送方标识,是发送请求的应用的唯一标识,微服务标识,是接收请求发送方标识对应的应用发送的请求的微服务的唯一标识。依赖关系属性只有一个值,依赖关系属性的取值范围包括:强和弱。
96.为强的依赖关系属性,是提供核心功能的服务。比如,当本技术应用于车险行业时的客户服务系统,客户服务系统的核心功能是客户服务,因此,用户服务和用户身份标识服务的依赖关系属性是强,用户服务和理赔服务的依赖关系属性是弱。
97.为弱的依赖关系属性,是提供非核心功能的服务。比如,当本技术应用于车险行业时的产险理赔系统,产险理赔系统的核心功能是理赔,因此,用户服务和查勘定损服务的依赖关系属性是弱,报案服务和查勘定损服务的依赖关系属性是强。
98.对于s442,若所述目标依赖关系属性是弱,意味着所述单服务调用请求对应的请求发送方与所述目标微服务接口对应的微服务的依赖关系是弱,对所述单服务调用请求的
熔断对所述单服务调用请求对应的调用链路的执行影响比较小,因此确定所述熔断识别结果为熔断,也节约微服务的服务资源。
99.对于s443,若所述目标依赖关系属性是强,意味着所述单服务调用请求对应的请求发送方与所述目标微服务接口对应的微服务的依赖关系是强,对所述单服务调用请求的熔断对所述单服务调用请求对应的调用链路的执行的影响较大,因此,判断所述第一正在处理请求数是否大于所述第一熔断触发条件中的第二正在处理请求阈值,以及判断所述第一窗口处理请求总数是否大于所述第一熔断触发条件中的第二窗口请求数阈值,以判断所述单服务调用请求是否符合采用预留的微服务资源进行服务的条件。
100.其中,第二正在处理请求阈值大于第一正在处理请求阈值,第二窗口请求数阈值大于第一窗口请求数阈值。
101.对于s444,若均为是,也就是说,所述第一正在处理请求数大于所述第一熔断触发条件中的第二正在处理请求阈值,并且,所述第一窗口处理请求总数大于所述第一熔断触发条件中的第二窗口请求数阈值,此时所述单服务调用请求不符合采用预留的微服务资源进行服务的条件,因此确定所述熔断识别结果为熔断。
102.若任一个为否,也就是说,所述第一正在处理请求数小于或等于所述第一熔断触发条件中的第二正在处理请求阈值,或者,所述第一窗口处理请求总数小于或等于所述第一熔断触发条件中的第二窗口请求数阈值,此时所述单服务调用请求符合采用预留的微服务资源进行服务的条件,因此确定所述熔断识别结果为不熔断。
103.在一个实施例中,上述采用获取的与所述目标微服务接口对应的第二熔断触发条件,对所述单服务调用请求进行熔断识别,得到所述熔断识别结果的步骤,包括:
104.s51:获取与所述目标微服务接口对应的所述第二熔断触发条件、第二正在处理请求数和在预设的第二时长内的第二窗口处理请求总数;
105.s52:判断所述第二正在处理请求数是否大于所述第二熔断触发条件中的第三正在处理请求阈值,以及判断所述第二窗口处理请求总数是否大于所述第二熔断触发条件中的第三窗口请求数阈值,其中,所述第三正在处理请求阈值大于所述第一熔断触发条件中的第一正在处理请求阈值,所述第三窗口请求数阈值大于所述第一熔断触发条件中的第一窗口请求数阈值;
106.s53:若均否,则确定所述熔断识别结果为不熔断;
107.s54:若任一个为是,则确定所述熔断识别结果为熔断
108.本实施例实现了根据正在处理请求数、在预设的第二时长内的第二窗口处理请求总数和第二熔断触发条件,对所述单服务调用请求进行熔断识别,从而限制高并发请求的数量时,避免所述目标微服务接口因需要响应的请求数过多而出现故障。
109.对于s51,可以从数据库中获取与所述目标微服务接口对应的第二熔断触发条件,也可以从第三方应用系统中获取与所述目标微服务接口对应的第二熔断触发条件,还可以将与所述目标微服务接口对应的第二熔断触发条件写入实现本技术的程序中。
110.可以从数据库中获取与所述目标微服务接口对应的第二正在处理请求数,也可以从监控工具或监控软件中获取与所述目标微服务接口对应的第二正在处理请求数。
111.第二正在处理请求数,也就是所述目标微服务接口在当前时间正在处理的请求的数量。
112.可以从数据库中获取与所述目标微服务接口对应的在预设的第二时长内的第二窗口处理请求总数,也可以从监控工具或监控软件中获取与所述目标微服务接口对应的在预设的第二时长内的第二窗口处理请求总数。
113.第二窗口处理请求总数,也就是紧靠当前时间的历史窗口期内(也就是第二时长内)所述目标微服务接口响应的请求的数量。
114.可选的,第二时长等于第一时长。
115.对于s52,所述第三正在处理请求阈值大于所述第一熔断触发条件中的第一正在处理请求阈值,所述第三窗口请求数阈值大于所述第一熔断触发条件中的第一窗口请求数阈值,从而有利于采用预留的微服务资源对核心的调用链路进行服务,实现优先保障对核心的调用链路的响应,保证了核心的调用链路执行的稳定性。
116.对于s53,若均否,也就是说,所述第二正在处理请求数小于或等于所述第二熔断触发条件中的第三正在处理请求阈值,并且,所述第二窗口处理请求总数小于或等于所述第二熔断触发条件中的第三窗口请求数阈值,此时意味着还未达到所述第三正在处理请求阈值和第三窗口请求数阈值中任一个对应的熔断要求,因此确定所述熔断识别结果为不熔断,以使所述目标微服务接口正常响应所述单服务调用请求。
117.对于s44,若任一个为是,也就是说,所述第二正在处理请求数大于所述第二熔断触发条件中的第三正在处理请求阈值,或者,所述第二窗口处理请求总数大于所述第二熔断触发条件中的第三窗口请求数阈值,此时意味着已达到所述第三正在处理请求阈值和第三窗口请求数阈值中至少一个对应的熔断要求,因此确定所述熔断识别结果为熔断,以使所述目标微服务接口不响应所述单服务调用请求,避免所述目标微服务接口因需要响应的请求数过多而出现故障。
118.在一个实施例中,上述若任一个为是,则确定所述熔断识别结果为熔断的步骤s54,包括:
119.s541:若任一个为是,获取与所述目标微服务接口对应的目标依赖关系属性;
120.s542:若所述目标依赖关系属性是弱,判断所述第二正在处理请求数是否大于所述第二熔断触发条件中的第四正在处理请求阈值,以及判断所述第二窗口处理请求总数是否大于所述第二熔断触发条件中的第四窗口请求数阈值,若均为是,则确定所述熔断识别结果为熔断,否则,确定所述熔断识别结果为不熔断,其中,所述第四窗口请求数阈值大于所述第一熔断触发条件中的第二窗口请求数阈值,所述第四正在处理请求阈值大于所述第一熔断触发条件中的第二正在处理请求阈值;
121.s543:若所述目标依赖关系属性是强,判断所述第二正在处理请求数是否大于所述第二熔断触发条件中的第五正在处理请求阈值,以及判断所述第二窗口处理请求总数是否大于所述第二熔断触发条件中的第五窗口请求数阈值,若均为是,则确定所述熔断识别结果为熔断,否则,确定所述熔断识别结果为不熔断,其中,所述第五窗口请求数阈值大于所述第四窗口请求数阈值,所述第五正在处理请求阈值大于所述第四正在处理请求阈值。
122.本实施例在所述第二正在处理请求数大于所述第二熔断触发条件中的第三正在处理请求阈值时,根据窗口期的窗口处理请求总数和依赖关系属性确定熔断识别结果是否为熔断,有利于避免了请求积压,避免造成关联的微服务的阻塞。
123.对于s541,若任一个为是,也就是说,所述第二正在处理请求数大于所述第二熔断
触发条件中的第三正在处理请求阈值,或者,所述第二窗口处理请求总数大于所述第二熔断触发条件中的第三窗口请求数阈值,此时意味着已达到所述第三正在处理请求阈值和第三窗口请求数阈值中至少一个对应的熔断要求,将所述单服务调用请求携带的参数在依赖关系表中进行依赖关系属性匹配,将匹配到的所述依赖关系属性作为所述目标依赖关系属性。
124.对于s542,若所述目标依赖关系属性是弱,意味着所述单服务调用请求对应的请求发送方与所述目标微服务接口对应的微服务的依赖关系是弱,对所述单服务调用请求的熔断对所述单服务调用请求对应的调用链路的执行影响比较小。
125.其中,若均为是,也就是所述第二正在处理请求数大于所述第二熔断触发条件中的第四正在处理请求阈值,并且,所述第二窗口处理请求总数大于所述第二熔断触发条件中的第四窗口请求数阈值,此时所述单服务调用请求不符合采用预留的微服务资源进行服务的条件,因此确定所述熔断识别结果为熔断。
126.其中,若任一个为否,也就是所述第二正在处理请求数小于或等于所述第二熔断触发条件中的第四正在处理请求阈值,或者,所述第二窗口处理请求总数小于或等于所述第二熔断触发条件中的第四窗口请求数阈值,此时所述单服务调用请求符合采用预留的微服务资源进行服务的条件,因此确定所述熔断识别结果为不熔断。
127.因所述第四窗口请求数阈值大于所述第一熔断触发条件中的第二窗口请求数阈值,所述第四正在处理请求阈值大于所述第一熔断触发条件中的第二正在处理请求阈值,从而有利于采用预留的微服务资源对核心的调用链路进行服务,实现优先保障对核心的调用链路的响应,保证了核心的调用链路执行的稳定性。
128.对于s543,若所述目标依赖关系属性是强,意味着所述单服务调用请求对应的请求发送方与所述目标微服务接口对应的微服务的依赖关系是强,对所述单服务调用请求的熔断对所述单服务调用请求对应的调用链路的执行的影响较大,因此,判断所述第二正在处理请求数是否大于所述第二熔断触发条件中的第五正在处理请求阈值,以及判断所述第二窗口处理请求总数是否大于所述第二熔断触发条件中的第五窗口请求数阈值,以判断所述单服务调用请求是否符合采用预留的微服务资源进行服务的条件。
129.若均为是,也就是,所述第二正在处理请求数大于所述第二熔断触发条件中的第五正在处理请求阈值,以及所述第二窗口处理请求总数大于所述第二熔断触发条件中的第五窗口请求数阈值,此时所述单服务调用请求不符合采用预留的微服务资源进行服务的条件,因此确定所述熔断识别结果为熔断。
130.其中,若任一个为否,所述第二正在处理请求数小于或等于所述第二熔断触发条件中的第五正在处理请求阈值,或者,判断所述第二窗口处理请求总数小于或等于所述第二熔断触发条件中的第五窗口请求数阈值,此时所述单服务调用请求符合采用预留的微服务资源进行服务的条件,因此确定所述熔断识别结果为不熔断。
131.所述第五窗口请求数阈值大于所述第四窗口请求数阈值,所述第五正在处理请求阈值大于所述第四正在处理请求阈值。有利于采用预留的微服务资源优先服务目标依赖关系属性是强的所述单服务调用请求。
132.在一个实施例中,上述采用获取的与所述目标微服务接口对应的第二熔断触发条件,对所述单服务调用请求进行熔断识别,得到所述熔断识别结果的步骤之后,还包括:
133.s61:当所述熔断识别结果为不熔断时,获取与所述单服务调用请求对应的目标响应时长;
134.s62:判断所述目标响应时长是否大于预设的响应时长阈值;
135.s63:若大于所述响应时长阈值,则确定所述熔断识别结果为熔断。
136.本实施例当第一熔断触发条件或第二熔断触发条件判断为不熔断时,根据响应时长阈值对所述单服务调用请求进行熔断识别,从而进一步避免了请求积压,进一步避免造成关联的微服务的阻塞。
137.对于s61,当所述熔断识别结果为不熔断时,意味着第一熔断触发条件或第二熔断触发条件判断为不熔断,可以从监控工具或监控软件中获取与所述单服务调用请求对应的目标响应时长。
138.对于s63,若大于所述响应时长阈值,也就是所述目标响应时长大于预设的响应时长阈值,此时所述目标微服务接口对所述单服务调用请求的响应超限,因此确定所述熔断识别结果为熔断,避免造成关联的微服务的阻塞。
139.在一个实施例中,上述采用获取的与所述目标微服务接口对应的第二熔断触发条件,对所述单服务调用请求进行熔断识别,得到所述熔断识别结果的步骤之后,还包括:
140.s71:当所述熔断识别结果为熔断时,将所述目标微服务接口的服务状态设为关闭;
141.s72:获取所述熔断识别结果的最晚更新时间距离当前时间的第一间隔时长、与所述目标微服务接口对应的目标慢调用比例及目标异常线程比例,判断所述第一间隔时长是否大于预设的第一间隔时长阈值、判断所述目标慢调用比例是否小于预设的慢调用比例阈值和判断所述目标异常线程比例是否小于预设的异常线程比例阈值阈值;
142.s73:若均为是,则将所述目标微服务接口的所述服务状态设为半开放;
143.s74:获取所述目标微服务接口的所述服务状态确定为半开放的时间距离当前时间的第二间隔时长,判断所述第二间隔时长是否大于预设的第二间隔时长阈值;
144.s75:若大于所述第二间隔时长阈值,则将所述目标微服务接口的所述服务状态设为全开放。
145.本实施例当第一熔断触发条件或第二熔断触发条件判断为熔断时,自动化对所述目标微服务接口进行关闭和重新开放,不需人工介入,提高了本技术的自动化程度。
146.对于s71,当所述熔断识别结果为熔断时,意味着第一熔断触发条件或第二熔断触发条件判断为熔断,因此,将所述目标微服务接口的服务状态设为关闭以不再接收新的请求。
147.对于s72,获取所述熔断识别结果的最晚更新时间距离当前时间的第一间隔时长,获取所述目标微服务接口对应的目标慢调用比例及目标异常线程比例。
148.目标慢调用比例,是在单位时长内,所述目标微服务接口处理的请求中,响应时长大于最大响应时长的比例。
149.目标异常线程比例,是在单位时长内,执行所述目标微服务接口对应的微服务的线程中的异常的比例。
150.对于s73,若均为是,也就是,所述第一间隔时长大于预设的第一间隔时长阈值、判断所述目标慢调用比例小于预设的慢调用比例阈值和判断所述目标异常线程比例小于预
设的异常线程比例阈值阈值,此时熔断时长超过了冷静期(也就是第一间隔时长阈值),此时小于慢调用比例阈值和异常线程比例阈值阈值,意味着目标微服务接口已初步恢复服务能力,因此将所述目标微服务接口的所述服务状态设为半开放。当所述目标微服务接口的所述服务状态设为半开放时,可以处理一些核心的调用链路、依赖关系属性为强的请求,从而实现优先保障对核心的调用链路、依赖关系属性强的请求的响应,保证了核心的调用链路、依赖关系属性强的请求执行的稳定性。
151.对于s75,若大于所述第二间隔时长阈值,也就是所述第二间隔时长大于所述第二间隔时长阈值,此时意味着超过了半开放的冷静期(第二间隔时长阈值),因此将所述目标微服务接口的所述服务状态设为全开放,以实现使目标微服务接口正常响应请求。
152.参照图2,本技术还提出了一种适用于微服务的熔断识别装置,所述装置包括:
153.请求获取模块100,用于实时监控目标微服务接口接收到的单服务调用请求;
154.目标调用链路属性确定模块200,用于获取与所述单服务调用请求对应的目标调用链路属性;
155.判断模块300,用于判断所述目标调用链路属性是否为核心;
156.第一熔断识别模块400,用于若否,则采用获取的与所述目标微服务接口对应的第一熔断触发条件,对所述单服务调用请求进行熔断识别,得到熔断识别结果;
157.第二熔断识别模块500,用于若是,则采用获取的与所述目标微服务接口对应的第二熔断触发条件,对所述单服务调用请求进行熔断识别,得到所述熔断识别结果。
158.本实施例实现了基于与单服务调用请求对应的调用链路属性对微服务接口进行熔断识别,在微服务接口响应请求出现异常时及时进行熔断,避免了请求积压,避免造成关联的微服务的阻塞;而且在调用链路属性为非核心时采用第一熔断触发条件,在调用链路属性为核心时采用第二熔断触发条件,实现优先保障对核心的调用链路的响应,保证了核心的调用链路执行的稳定性。
159.参照图3,本技术实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于储存适用于微服务的熔断识别方法等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种适用于微服务的熔断识别方法。所述适用于微服务的熔断识别方法,包括:实时监控目标微服务接口接收到的单服务调用请求;获取与所述单服务调用请求对应的目标调用链路属性;判断所述目标调用链路属性是否为核心;若否,则采用获取的与所述目标微服务接口对应的第一熔断触发条件,对所述单服务调用请求进行熔断识别,得到熔断识别结果;若是,则采用获取的与所述目标微服务接口对应的第二熔断触发条件,对所述单服务调用请求进行熔断识别,得到所述熔断识别结果。
160.本实施例实现了基于与单服务调用请求对应的调用链路属性对微服务接口进行熔断识别,在微服务接口响应请求出现异常时及时进行熔断,避免了请求积压,避免造成关联的微服务的阻塞;而且在调用链路属性为非核心时采用第一熔断触发条件,在调用链路
属性为核心时采用第二熔断触发条件,实现优先保障对核心的调用链路的响应,保证了核心的调用链路执行的稳定性。
161.本技术一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种适用于微服务的熔断识别方法,包括步骤:实时监控目标微服务接口接收到的单服务调用请求;获取与所述单服务调用请求对应的目标调用链路属性;判断所述目标调用链路属性是否为核心;若否,则采用获取的与所述目标微服务接口对应的第一熔断触发条件,对所述单服务调用请求进行熔断识别,得到熔断识别结果;若是,则采用获取的与所述目标微服务接口对应的第二熔断触发条件,对所述单服务调用请求进行熔断识别,得到所述熔断识别结果。
162.上述执行的适用于微服务的熔断识别方法,实现了基于与单服务调用请求对应的调用链路属性对微服务接口进行熔断识别,在微服务接口响应请求出现异常时及时进行熔断,避免了请求积压,避免造成关联的微服务的阻塞;而且在调用链路属性为非核心时采用第一熔断触发条件,在调用链路属性为核心时采用第二熔断触发条件,实现优先保障对核心的调用链路的响应,保证了核心的调用链路执行的稳定性。
163.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双速据率sdram(ssrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
164.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
165.以上所述仅为本技术的优选实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
技术特征:
1.一种适用于微服务的熔断识别方法,其特征在于,所述方法包括:实时监控目标微服务接口接收到的单服务调用请求;获取与所述单服务调用请求对应的目标调用链路属性;判断所述目标调用链路属性是否为核心;若否,则采用获取的与所述目标微服务接口对应的第一熔断触发条件,对所述单服务调用请求进行熔断识别,得到熔断识别结果;若是,则采用获取的与所述目标微服务接口对应的第二熔断触发条件,对所述单服务调用请求进行熔断识别,得到所述熔断识别结果。2.根据权利要求1所述的适用于微服务的熔断识别方法,其特征在于,所述采用获取的与所述目标微服务接口对应的第一熔断触发条件,对所述单服务调用请求进行熔断识别,得到熔断识别结果的步骤,包括:获取与所述目标微服务接口对应的所述第一熔断触发条件、第一正在处理请求数和在预设的第一时长内的第一窗口处理请求总数;判断所述第一正在处理请求数是否大于所述第一熔断触发条件中的第一正在处理请求阈值,以及所述第一窗口处理请求总数是否大于所述第一熔断触发条件中的第一窗口请求数阈值;若均否,则确定所述熔断识别结果为不熔断;若任一个为是,则确定所述熔断识别结果为熔断。3.根据权利要求2所述的适用于微服务的熔断识别方法,其特征在于,所述若任一个为是,则确定所述熔断识别结果为熔断的步骤,包括:若任一个为是,则获取与所述目标微服务接口对应的目标依赖关系属性;若所述目标依赖关系属性是弱,则确定所述熔断识别结果为熔断;若所述目标依赖关系属性是强,判断所述第一正在处理请求数是否大于所述第一熔断触发条件中的第二正在处理请求阈值,以及判断所述第一窗口处理请求总数是否大于所述第一熔断触发条件中的第二窗口请求数阈值;若均为是,则确定所述熔断识别结果为熔断,否则,确定所述熔断识别结果为不熔断。4.根据权利要求1所述的适用于微服务的熔断识别方法,其特征在于,所述采用获取的与所述目标微服务接口对应的第二熔断触发条件,对所述单服务调用请求进行熔断识别,得到所述熔断识别结果的步骤,包括:获取与所述目标微服务接口对应的所述第二熔断触发条件、第二正在处理请求数和在预设的第二时长内的第二窗口处理请求总数;判断所述第二正在处理请求数是否大于所述第二熔断触发条件中的第三正在处理请求阈值,以及判断所述第二窗口处理请求总数是否大于所述第二熔断触发条件中的第三窗口请求数阈值,其中,所述第三正在处理请求阈值大于所述第一熔断触发条件中的第一正在处理请求阈值,所述第三窗口请求数阈值大于所述第一熔断触发条件中的第一窗口请求数阈值;若均否,则确定所述熔断识别结果为不熔断;若任一个为是,则确定所述熔断识别结果为熔断。5.根据权利要求4所述的适用于微服务的熔断识别方法,其特征在于,所述若任一个为
是,则确定所述熔断识别结果为熔断的步骤,包括:若任一个为是,获取与所述目标微服务接口对应的目标依赖关系属性;若所述目标依赖关系属性是弱,判断所述第二正在处理请求数是否大于所述第二熔断触发条件中的第四正在处理请求阈值,以及判断所述第二窗口处理请求总数是否大于所述第二熔断触发条件中的第四窗口请求数阈值,若均为是,则确定所述熔断识别结果为熔断,否则,确定所述熔断识别结果为不熔断,其中,所述第四窗口请求数阈值大于所述第一熔断触发条件中的第二窗口请求数阈值,所述第四正在处理请求阈值大于所述第一熔断触发条件中的第二正在处理请求阈值;若所述目标依赖关系属性是强,判断所述第二正在处理请求数是否大于所述第二熔断触发条件中的第五正在处理请求阈值,以及判断所述第二窗口处理请求总数是否大于所述第二熔断触发条件中的第五窗口请求数阈值,若均为是,则确定所述熔断识别结果为熔断,否则,确定所述熔断识别结果为不熔断,其中,所述第五窗口请求数阈值大于所述第四窗口请求数阈值,所述第五正在处理请求阈值大于所述第四正在处理请求阈值。6.根据权利要求1所述的适用于微服务的熔断识别方法,其特征在于,所述采用获取的与所述目标微服务接口对应的第二熔断触发条件,对所述单服务调用请求进行熔断识别,得到所述熔断识别结果的步骤之后,还包括:当所述熔断识别结果为不熔断时,获取与所述单服务调用请求对应的目标响应时长;判断所述目标响应时长是否大于预设的响应时长阈值;若大于所述响应时长阈值,则确定所述熔断识别结果为熔断。7.根据权利要求1所述的适用于微服务的熔断识别方法,其特征在于,所述采用获取的与所述目标微服务接口对应的第二熔断触发条件,对所述单服务调用请求进行熔断识别,得到所述熔断识别结果的步骤之后,还包括:当所述熔断识别结果为熔断时,将所述目标微服务接口的服务状态设为关闭;获取所述熔断识别结果的最晚更新时间距离当前时间的第一间隔时长、与所述目标微服务接口对应的目标慢调用比例及目标异常线程比例,判断所述第一间隔时长是否大于预设的第一间隔时长阈值、判断所述目标慢调用比例是否小于预设的慢调用比例阈值和判断所述目标异常线程比例是否小于预设的异常线程比例阈值阈值;若均为是,则将所述目标微服务接口的所述服务状态设为半开放;获取所述目标微服务接口的所述服务状态确定为半开放的时间距离当前时间的第二间隔时长,判断所述第二间隔时长是否大于预设的第二间隔时长阈值;若大于所述第二间隔时长阈值,则将所述目标微服务接口的所述服务状态设为全开放。8.一种适用于微服务的熔断识别装置,其特征在于,所述装置包括:请求获取模块,用于实时监控目标微服务接口接收到的单服务调用请求;目标调用链路属性确定模块,用于获取与所述单服务调用请求对应的目标调用链路属性;判断模块,用于判断所述目标调用链路属性是否为核心;第一熔断识别模块,用于若否,则采用获取的与所述目标微服务接口对应的第一熔断触发条件,对所述单服务调用请求进行熔断识别,得到熔断识别结果;
第二熔断识别模块,用于若是,则采用获取的与所述目标微服务接口对应的第二熔断触发条件,对所述单服务调用请求进行熔断识别,得到所述熔断识别结果。9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
技术总结
本申请涉及微服务技术领域,揭示了一种适用于微服务的熔断识别方法、装置、设备及存储介质,其中方法包括:实时监控目标微服务接口接收到的单服务调用请求;判断与所述单服务调用请求对应的目标调用链路属性是否为核心;若否,则采用获取的与所述目标微服务接口对应的第一熔断触发条件,对所述单服务调用请求进行熔断识别,得到熔断识别结果;若是,则采用获取的与所述目标微服务接口对应的第二熔断触发条件,对所述单服务调用请求进行熔断识别,得到所述熔断识别结果。实现了基于与单服务调用请求对应的调用链路属性对微服务接口进行熔断识别,避免了请求积压,避免造成关联的微服务的阻塞,保证了核心的调用链路执行的稳定性。性。性。
技术研发人员:罗凤宁 肖洒 王正锋
受保护的技术使用者:中国平安财产保险股份有限公司
技术研发日:2021.11.29
技术公布日:2022/3/8