本发明专利技术公开了一种系统熔断实现方法及装置,方法包括:将通过不同请求参数调用同一外部系统接口的逻辑封装在同一个代码方法中,并将该代码方法定义为熔断资源;为所述熔断资源配置基于请求参数的熔断规则,所述熔断规则包括对应不同请求参数的不同的规则;获得用户请求,所述用户请求为可以触发所述熔断资源的请求,所述用户请求包括请求参数;基于所述用户请求和所述熔断规则确定是否对所述用户请求进行熔断。本申请实施例提出的基于请求参数的系统熔断方案,减少熔断资源定义代码开发量,提高熔断资源定义代码扩展性,降低熔断规则运维成本。维成本。维成本。
【技术实现步骤摘要】
一种系统熔断实现方法及装置
[0001]本专利技术涉及微服务技术,更具体的说,是涉及一种系统熔断实现方法及装置。
技术介绍
[0002]在微服务分布式架构中,熔断是一个非常重要用来保障系统高可用和稳定性的技术方案。微服务系统由非常多的服务组成,一个服务通常会调用其他服务,这些服务可以是远程服务、数据库、第三方API等。然而,作为调用方的服务,无法保证被调用的服务的稳定性。如果被调用的服务出现了不稳定的情况,请求的响应时间变长,那么调用方服务的方法的响应时间也会变长,服务进程中会创建大量线程,最终可能耗尽服务资源,导致调用服务本身也变得不可用。进而在系统中产生放大的效果,单一服务的不可用层层级联,最后导致整个系统都不可用。当发生上述现象时,系统熔断可以暂时切断服务间不稳定的调用,避免局部不稳定因素导致系统整体的雪崩。熔断作为保护服务自身的手段,通常在调用方服务进行熔断规则配置,熔断规则包含:熔断资源名称、熔断策略(如慢调用比例、异常比例、异常数策略)、熔断阈值、熔断时长等。
[0003]业务系统在单体应用架构向微服务架构改造的过程中,由于项目周期、改造成本的考量,往往会有一些核心服务仍以单体应用的形式对外提供调用功能,这些服务的特点是,提供的调用接口单一,需要调用方传递不同的请求参数来调用不同的功能,如在民航领域的航班预订系统,核心服务基于HTTP协议只提供单一供外界调用的接口,对于不同类型的航班查询,如:单程、多程、缺口程,需要通过调用方传递不同的请求参数来执行。
[0004]对于上述单体应用架构的服务的调用,不同调用场景,需要有不同的熔断配置,在航班查询场景,通常使用慢调用比例熔断策略。由于业务流程的差异,接口调用的正常响应时间不同,熔断阈值的配置也会有所不同。这就需要开发人员针对不同的调用场景编写不同的定义代码,且后续维护阶段也需要维护不同的熔断规则,成本会非常大。
技术实现思路
[0005]有鉴于此,本专利技术提供如下技术方案:
[0006]一种系统熔断实现方法,包括:
[0007]将通过不同请求参数调用同一外部系统接口的逻辑封装在同一个代码方法中,并将该代码方法定义为熔断资源;
[0008]为所述熔断资源配置基于请求参数的熔断规则,所述熔断规则包括对应不同请求参数的不同的规则;
[0009]获得用户请求,所述用户请求为可以触发所述熔断资源的请求,所述用户请求包括请求参数;
[0010]基于所述用户请求和所述熔断规则确定是否对所述用户请求进行熔断。
[0011]可选地,所述基于所述用户请求和所述熔断规则确定是否对所述用户请求进行熔断,包括:
[0012]基于所述用户请求对应的熔断规则构建断路器对象列表;
[0013]基于所述断路器对象列表中断路器对象的状态确定是否对所述用户请求进行熔断。
[0014]可选地,所述基于所述断路器对象列表中的断路器对象的状态确定是否对所述用户请求进行熔断,包括:
[0015]确定所述断路器对象的状态是否为关闭;
[0016]若否,判断所述断路器对象的开启状态是否已到期;
[0017]若已到期,设置所述断路器对象的状态的为半开启;
[0018]若未到期,抛出熔断异常。
[0019]可选地,还包括:
[0020]在熔断规则被更新时,加载更新后的熔断规则,并构建请求参数与熔断阈值的映射关系,其中,所述更新后的熔断规则包括所述熔断阈值。
[0021]可选地,还包括:
[0022]基于所述用户请求更新断路器对象的状态。
[0023]可选地,所述基于所述用户请求更新断路器对象的状态,包括:
[0024]遍历所述用户请求关联的断路器对象列表,根据所述用户请求的实际响应时间和所述熔断规则中定义的慢调用时长阈值,基于滑动窗口算法更新慢调用计数器、调用总数计数器,并基于上述计数器的值,决定是否设置断路器的断路状态为开启或关闭。
[0025]可选地,所述根据所述用户请求的实际响应时间和所述熔断规则中定义的慢调用时长阈值,基于滑动窗口算法更新慢调用计数器、调用总数计数器,并基于上述计数器的值,决定是否设置断路器的断路状态为开启或关闭,包括:
[0026]确定所述用户请求的响应时间是否大于慢调用时长阈值;
[0027]若大于慢调用时长阈值,更新慢调用计数器和调用总数计数器,并判断所述断路器对象的状态是否为开启;
[0028]若断路器对象的状态不是开启,判断断路器对象的状态是否为半开启;
[0029]若断路器对象的状态是半开启,判断所述用户请求的响应时间是否大于慢调用时长阈值;
[0030]若大于慢调用时长阈值,设置断路器状态为开启,同时设置断路器开启状态过期时间;如不大于,设置断路器状态为关闭;
[0031]若断路器对象的状态不是半开启,计算当前慢调用比例,并判断慢调用比例是否大于慢调用比例阈值;
[0032]若大于慢调用比例阈值,设置断路器对象状态为开启,同时设置断路器对象开启状态的过期时间。
[0033]一种系统熔断实现装置,包括:
[0034]资源定义模块,用于将通过不同请求参数调用同一外部系统接口的逻辑封装在同一个代码方法中,并将该代码方法定义为熔断资源;
[0035]规则管理模块,用于为所述熔断资源配置基于请求参数的熔断规则,所述熔断规则包括对应不同请求参数的不同的规则;
[0036]请求接收模块,用于获得用户请求,所述用户请求为可以触发所述熔断资源的请
求,所述用户请求包括请求参数;
[0037]熔断处理模块,用于基于所述用户请求和所述熔断规则确定是否对所述用户请求进行熔断。
[0038]可选地,所述熔断处理模块包括:
[0039]对象构建模块,用于基于所述用户请求对应的熔断规则构建断路器对象列表;
[0040]熔断确定模块,用于基于所述断路器对象列表中断路器对象的状态确定是否对所述用户请求进行熔断。
[0041]可选地,所述熔断确定模块包括:
[0042]第一确定模块,用于确定所述断路器对象的状态是否为关闭;
[0043]第二确定模块,用于在所述第一确定模块的判断结果为否时,判断所述断路器对象的开启状态是否已到期;
[0044]熔断确定子模块,用于在第二确定模块确定开启状态已到期的情况下,设置所述断路器对象的状态的为半开启,并在确定开启状态未到期的情况下,抛出熔断异常。
[0045]经由上述的技术方案可知,与现有技术相比,本专利技术实施例公开了一种系统熔断实现方法及装置,方法包括:将通过不同请求参数调用同一外部系统接口的逻辑封装在同一个代码方法中,并将该代码方法定义为熔断资源;为所述熔断资源配置基于请求参数的熔断规则,所述熔断规则包括对应不同请求参数的不同的规则;获得用户请求,所述用户请求为可以触发所述熔断资源的请求,所述用户请求包括请求参数;基于所述用户请求和所述熔断规则确定是否对本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种系统熔断实现方法,其特征在于,包括:将通过不同请求参数调用同一外部系统接口的逻辑封装在同一个代码方法中,并将该代码方法定义为熔断资源;为所述熔断资源配置基于请求参数的熔断规则,所述熔断规则包括对应不同请求参数的不同的规则;获得用户请求,所述用户请求为可以触发所述熔断资源的请求,所述用户请求包括请求参数;基于所述用户请求和所述熔断规则确定是否对所述用户请求进行熔断。2.根据权利要求1所述的系统熔断实现方法,其特征在于,所述基于所述用户请求和所述熔断规则确定是否对所述用户请求进行熔断,包括:基于所述用户请求对应的熔断规则构建断路器对象列表;基于所述断路器对象列表中断路器对象的状态确定是否对所述用户请求进行熔断。3.根据权利要求2所述的系统熔断实现方法,其特征在于,所述基于所述断路器对象列表中的断路器对象的状态确定是否对所述用户请求进行熔断,包括:确定所述断路器对象的状态是否为关闭;若否,判断所述断路器对象的开启状态是否已到期;若已到期,设置所述断路器对象的状态的为半开启;若未到期,抛出熔断异常。4.根据权利要求1所述的系统熔断实现方法,其特征在于,还包括:在熔断规则被更新时,加载更新后的熔断规则,并构建请求参数与熔断阈值的映射关系,其中,所述更新后的熔断规则包括所述熔断阈值。5.根据权利要求1所述的系统熔断实现方法,其特征在于,还包括:基于所述用户请求更新断路器对象的状态。6.根据权利要求5所述的系统熔断实现方法,其特征在于,所述基于所述用户请求更新断路器对象的状态,包括:遍历所述用户请求关联的断路器对象列表,根据所述用户请求的实际响应时间和所述熔断规则中定义的慢调用时长阈值,基于滑动窗口算法更新慢调用计数器、调用总数计数器,并基于上述计数器的值,决定是否设置断路器的断路状态为开启或关闭。7.根据权利要求6所述的系统熔断实现方法,其特征在于,所述根据所述用户请求的实际响应时间和所述熔断规则中定义的慢调用时长阈值,基于滑动窗口算法更新慢调用计数器、调用总数计数器,并基于上述...
【专利技术属性】
技术研发人员:王中华,卢鹏飞,李雄清,孔颖,王骏飞,
申请(专利权)人:中国民航信息网络股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。