服务接口的异常熔断和自我恢复的方法与流程

文档序号:23729105发布日期:2021-01-26 19:18阅读:161来源:国知局
服务接口的异常熔断和自我恢复的方法与流程

[0001]
本发明涉及分布式多应用服务环境下的服务接口技术领域,特别是一种服务接口的异常熔断和自我恢复的方法。


背景技术:

[0002]
目前关于服务熔断和服务自我恢复的方案主要包括通过外部nginx或者网关层面在服务异常之后手动切换后端服务节点,或者在服务内硬编码服务过载异常的流程。这些方案主要缺陷在于需要服务异常之后手动操作,或是硬编码解决已知异常,并且不能动态调整服务熔断参数。通过nginx或者网关的方式需要服务异常之后有邮件通知或者运维监控发现服务的异常,然后人工的却切换服务,过程冗长,且会导致服务中断,且不具备自我检查和恢复的功能;另外一种方案是在代码中硬编码发生具体异常比如统计请求超时多少次之后熔断,然后设定具体等待时间之后再检查,如果恢复则取消熔断,这种方案能够感知到服务的异常并且有有效的自我恢复措施,但是硬编码工作量巨大,对业务侵入太强,且对现有业务改造难度极大。


技术实现要素:

[0003]
为解决现有技术中存在的问题,本发明的目的是提供一种服务接口的异常熔断和自我恢复的方法,本发明采用java动态代理和反射技术结合配置中心,解决服务熔断和服务自我恢复的问题。
[0004]
为实现上述目的,本发明采用的技术方案是:一种服务接口的异常熔断和自我恢复的方法,包括以下步骤:
[0005]
步骤1、引入sdk以及加入配置中心相关依赖配置,其中所述sdk中通过java的动态代理和反射技术将服务请求响应的统计功能、服务熔断判断功能以及服务熔断自我恢复功能埋点到服务的每个接口请求;且熔断标识以及熔断自我恢复尝试时间间隔均从对应的配置中心动态获取,以及可以动态的通过配置中心进行修改;
[0006]
步骤2、当服务请求到达的时候,服务先判断熔断标识是否开启,当服务熔断标识为开启状态则本次请求就进入熔断流程,响应熔断结果;当服务熔断标识未开启的时候,服务异步记录和统计请求相关统计数据;
[0007]
步骤3、当统计数据达到熔断触发阈值,或者通过配置中心动态修改了熔断阈值时,服务则会修改所述熔断标识,且当下次请求到达时再次进入步骤2;
[0008]
步骤4、当服务熔断标识开启的时候会触发熔断自我恢复的异步任务,自我恢复的异步任务根据从配置中心拿到的自我恢复间隔时间尝试恢复服务。
[0009]
作为本发明的进一步改进,所述步骤2中,服务异步记录和统计请求相关统计数据包括响应时间、qps和服务异常比例。
[0010]
作为本发明的进一步改进,所述步骤4中,自我恢复的异步任务会根据从配置中心拿到的自我恢复间隔时间尝试恢复服务具体包括:
[0011]
尝试恢复熔断标识让请求进入服务请求具体接口如果响应正常,则继续让请求进入服务请求具体接口,当到达阀值的时候则将熔断标识标记为断开并关闭自我修复异步任务,如果尝试阶段放入的请求依旧不正常则不修改熔断标识,等待下一次熔断恢复尝试。
[0012]
本发明的有益效果是:
[0013]
通过引入实现的动态代理和反射,对每个接口嵌入熔断和自我恢复代码,熔断和恢复代码里根据接口请求响应情况,执行对应的熔断和自我恢复逻辑,同时通过配置中心可达到动态的修改熔断和恢复关键参数,从而实现应用服务动态自我熔断保护和自我恢复的效果。
附图说明
[0014]
图1为本发明实施例1中复杂服务间调用以及配置中心的关系图;
[0015]
图2为本发明实施例1中服务异常熔断场景下的服务调用状态图;
[0016]
图3为本发明实施例1中单个服务内部服务熔断以及自我恢复过程图。
具体实施方式
[0017]
下面结合附图对本发明的实施例进行详细说明。
[0018]
实施例1
[0019]
如图1-图3所示,本实施例主要针对后端java服务在运行过程中由于请求量过大或其他原因导致服务响应超时或者无响应的情况,导致雪崩效应影响其他关联服务,并且在服务恢复后无法自动感知恢复对外服务。
[0020]
针对该问题,通过java动态代理和反射技术针对所有对外暴露接口嵌入统计代码以及异常控制开关及处理方案代码,并通过配置中心可动态调整异常控制开关以及代码处理流程,嵌入的代码可以统计本地服务请求响应情况,根据从配置中心获取的配置项,达到阀值则触发熔断流程,熔断触发后根据从配置中心获取的恢复尝试时间,尝试恢复服务,服务响应正常,则关闭熔断达到自动回复服务的效果。
[0021]
步骤一、接入服务熔断恢复方案的服务需要引入sdk以及加入配置中心相关依赖配置,其中sdk中通过java的动态代理和反射技术会将服务请求响应的统计功能,服务熔断判断功能以及服务熔断自我恢复功能埋点到服务的每个接口请求。
[0022]
熔断标识以及熔断自我恢复尝试时间间隔都从对应的配置中心动态获取,以及可以动态的通过配置中心修改后同步到运行中的服务。
[0023]
步骤二、当服务请求到达的时候,如图3中s1所示,服务会先判断熔断标识是否开启,当服务熔断标识为开启状态则本次请求就进入熔断流程,直接响应熔断结果,如图2所示,当上游接口请求多个下游接口的时候不会因为下游中如图2所示的其中一个服务异常导致上游服务的异常。
[0024]
步骤三、当服务请求到达的时候,如图3中s1所示,服务会先判断熔断标识是否开启,当服务熔断标识未开启的时候,如图3中s2所示,服务会异步记录和统计请求相关统计数据,包括但不限于请求响应时间,qps,服务异常比例等。
[0025]
步骤四、当如图3中s2所示统计信息达到熔断触发阀值,或者通过配置中心动态修改了熔断阀值的时候,服务会修改熔断标识如图3中s3所示。再下次请求到达的时候则会进
入步骤二的流程。
[0026]
步骤五、当熔断标识开启的时候会触发熔断自我恢复的异步任务,如图3中s4所示,自我恢复的异步任务会根据从配置中心拿到的自我恢复间隔时间尝试恢复服务,具体为尝试恢复熔断标识让请求进入服务请求具体接口如果响应正常,则继续让请求进入服务请求具体接口,当到达阀值的时候则将熔断标识标记为断开并关闭自我修复异步任务,如果尝试阶段放入的请求依旧不正常则不修改熔断标识,等待下一次熔断恢复尝试。
[0027]
步骤六、以上步骤中所述的熔断标识、熔断自我恢复尝试时间间隔、服务熔断返回都可以通过配置中心动态的修改。从而达到服务既可以自动根据服务统计数据熔断和自我恢复,也可以通过动态的通过配置中心手动熔断和恢复服务。
[0028]
本实施例通过java动态代理和反射技术针对所有对外暴露接口嵌入统计代码以及异控制开关及处理方案代码,并通过配置中心可动态调整异常控制开关以及代码处理流程,从而达到对服务异常动态感知应用接口请求响应情况,动态熔断服务,动态恢复服务。因为是通过动态代理和反射技术统一处理不需要硬编码到代码中,并且配合配置中心,异常熔断过程中的关键参数,以及一些熔断方案可以通过配置中心动态的调整,从而达到无侵入式的实现动态熔断和自我恢复。
[0029]
实施例2
[0030]
一种服务接口的异常熔断和自我恢复的方法,包括以下步骤:
[0031]
步骤一、需要实现动态熔断功能的微服务micro-service-a接入本专利所述的服务熔断恢复方案的服务需要引入本专利所述sdk以及加入配置中心相关依赖配置。并在配置中心config-service中配置micro-servce-a的熔断配置。
[0032]
步骤二、当微服务micro-service-a的接口service-interface-1因为请求量过大,请求积压,导致接口响应时间超长超过config-service中配置的服务超时时间,并且单位时间内服务异常比例达到配置中心config-server中配置的熔断阀值的时候,sdk中的熔断逻辑就会触发,后续到达的请求不会再执行service-interface-1内部的逻辑,而是尝试动态执行配置文件拉取的备选方案代码,通过java的反射技术执行备选策略,从而最大限度的保障服务的可用性,如果service-interface-1没有配置接口熔断备选方案代码,则在入口处被拒绝,返回统一的错误提示。此过程中micro-service-a的其他接口不受影响。
[0033]
步骤三、当服务micro-service-a的接口service-interface-1被主动熔断之后,sdk会启动一个线程来定时尝试恢复接口service-interface-1。尝试过程中如果执行接口service-interface-1逻辑的响应时间恢复,错误比例达到恢复标准,则会修改接口service-interface-1的熔断标识,其后接口service-interface-1的请求就会执行自己的逻辑,接口自动恢复正常。
[0034]
步骤四、当步骤三中的自动恢复尝试一直没有达到恢复标准,但接口service-interface-1已经恢复正常,运维人员也可以通过修改配置中心config-service中对应micro-service-a的熔断标识,以人工干预的方式快速的恢复服务。
[0035]
步骤五、以上步骤中所述的熔断标识、熔断自我恢复尝试时间间隔、服务熔断返回都可以通过配置中心动态的修改。从而达到服务既可以自动根据服务统计数据熔断和自我恢复,也可以通过动态的通过配置中心手动熔断和恢复服务。
[0036]
步骤六、以上步骤中的熔断和自我恢复的过程针对服务micro-service-a中的所
有接口都可以进行单独的配置熔断阀值,自动恢复尝试时间间隔,熔断标识等从而达到对服务micro-service-a中的各个接口独立控制自我熔断和恢复的效果。
[0037]
以上所述实施例仅表达了本发明的具体实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1