CN112269674A - 服务接口的异常熔断和自我恢复的方法 - Google Patents

服务接口的异常熔断和自我恢复的方法 Download PDF

Info

Publication number
CN112269674A
CN112269674A CN202011301238.XA CN202011301238A CN112269674A CN 112269674 A CN112269674 A CN 112269674A CN 202011301238 A CN202011301238 A CN 202011301238A CN 112269674 A CN112269674 A CN 112269674A
Authority
CN
China
Prior art keywords
service
fusing
self
recovery
identifier
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011301238.XA
Other languages
English (en)
Inventor
张鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan Changhong Electric Co Ltd
Original Assignee
Sichuan Changhong Electric Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sichuan Changhong Electric Co Ltd filed Critical Sichuan Changhong Electric Co Ltd
Priority to CN202011301238.XA priority Critical patent/CN112269674A/zh
Publication of CN112269674A publication Critical patent/CN112269674A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种服务接口的异常熔断和自我恢复的方法,包括:引入SDK以及加入配置中心相关依赖配置;当服务请求到达的时候,服务先判断熔断标识是否开启,当服务熔断标识为开启状态则本次请求就进入熔断流程,响应熔断结果;当服务熔断标识未开启的时候,服务异步记录和统计请求相关统计数据;当统计数据达到熔断触发阈值,或者通过配置中心动态修改了熔断阈值时,服务则会修改所述熔断标识;当服务熔断标识开启的时候会触发熔断自我恢复的异步任务,自我恢复的异步任务根据从配置中心拿到的自我恢复间隔时间尝试恢复服务。本发明采用java动态代理和反射技术结合配置中心,解决服务熔断和服务自我恢复的问题。

Description

服务接口的异常熔断和自我恢复的方法
技术领域
本发明涉及分布式多应用服务环境下的服务接口技术领域,特别是一种服务接口的异常熔断和自我恢复的方法。
背景技术
目前关于服务熔断和服务自我恢复的方案主要包括通过外部nginx或者网关层面在服务异常之后手动切换后端服务节点,或者在服务内硬编码服务过载异常的流程。这些方案主要缺陷在于需要服务异常之后手动操作,或是硬编码解决已知异常,并且不能动态调整服务熔断参数。通过nginx或者网关的方式需要服务异常之后有邮件通知或者运维监控发现服务的异常,然后人工的却切换服务,过程冗长,且会导致服务中断,且不具备自我检查和恢复的功能;另外一种方案是在代码中硬编码发生具体异常比如统计请求超时多少次之后熔断,然后设定具体等待时间之后再检查,如果恢复则取消熔断,这种方案能够感知到服务的异常并且有有效的自我恢复措施,但是硬编码工作量巨大,对业务侵入太强,且对现有业务改造难度极大。
发明内容
为解决现有技术中存在的问题,本发明的目的是提供一种服务接口的异常熔断和自我恢复的方法,本发明采用java动态代理和反射技术结合配置中心,解决服务熔断和服务自我恢复的问题。
为实现上述目的,本发明采用的技术方案是:一种服务接口的异常熔断和自我恢复的方法,包括以下步骤:
步骤1、引入SDK以及加入配置中心相关依赖配置,其中所述SDK中通过java的动态代理和反射技术将服务请求响应的统计功能、服务熔断判断功能以及服务熔断自我恢复功能埋点到服务的每个接口请求;且熔断标识以及熔断自我恢复尝试时间间隔均从对应的配置中心动态获取,以及可以动态的通过配置中心进行修改;
步骤2、当服务请求到达的时候,服务先判断熔断标识是否开启,当服务熔断标识为开启状态则本次请求就进入熔断流程,响应熔断结果;当服务熔断标识未开启的时候,服务异步记录和统计请求相关统计数据;
步骤3、当统计数据达到熔断触发阈值,或者通过配置中心动态修改了熔断阈值时,服务则会修改所述熔断标识,且当下次请求到达时再次进入步骤2;
步骤4、当服务熔断标识开启的时候会触发熔断自我恢复的异步任务,自我恢复的异步任务根据从配置中心拿到的自我恢复间隔时间尝试恢复服务。
作为本发明的进一步改进,所述步骤2中,服务异步记录和统计请求相关统计数据包括响应时间、qps和服务异常比例。
作为本发明的进一步改进,所述步骤4中,自我恢复的异步任务会根据从配置中心拿到的自我恢复间隔时间尝试恢复服务具体包括:
尝试恢复熔断标识让请求进入服务请求具体接口如果响应正常,则继续让请求进入服务请求具体接口,当到达阀值的时候则将熔断标识标记为断开并关闭自我修复异步任务,如果尝试阶段放入的请求依旧不正常则不修改熔断标识,等待下一次熔断恢复尝试。
本发明的有益效果是:
通过引入实现的动态代理和反射,对每个接口嵌入熔断和自我恢复代码,熔断和恢复代码里根据接口请求响应情况,执行对应的熔断和自我恢复逻辑,同时通过配置中心可达到动态的修改熔断和恢复关键参数,从而实现应用服务动态自我熔断保护和自我恢复的效果。
附图说明
图1为本发明实施例1中复杂服务间调用以及配置中心的关系图;
图2为本发明实施例1中服务异常熔断场景下的服务调用状态图;
图3为本发明实施例1中单个服务内部服务熔断以及自我恢复过程图。
具体实施方式
下面结合附图对本发明的实施例进行详细说明。
实施例1
如图1-图3所示,本实施例主要针对后端java服务在运行过程中由于请求量过大或其他原因导致服务响应超时或者无响应的情况,导致雪崩效应影响其他关联服务,并且在服务恢复后无法自动感知恢复对外服务。
针对该问题,通过java动态代理和反射技术针对所有对外暴露接口嵌入统计代码以及异常控制开关及处理方案代码,并通过配置中心可动态调整异常控制开关以及代码处理流程,嵌入的代码可以统计本地服务请求响应情况,根据从配置中心获取的配置项,达到阀值则触发熔断流程,熔断触发后根据从配置中心获取的恢复尝试时间,尝试恢复服务,服务响应正常,则关闭熔断达到自动回复服务的效果。
步骤一、接入服务熔断恢复方案的服务需要引入SDK以及加入配置中心相关依赖配置,其中SDK中通过java的动态代理和反射技术会将服务请求响应的统计功能,服务熔断判断功能以及服务熔断自我恢复功能埋点到服务的每个接口请求。
熔断标识以及熔断自我恢复尝试时间间隔都从对应的配置中心动态获取,以及可以动态的通过配置中心修改后同步到运行中的服务。
步骤二、当服务请求到达的时候,如图3中S1所示,服务会先判断熔断标识是否开启,当服务熔断标识为开启状态则本次请求就进入熔断流程,直接响应熔断结果,如图2所示,当上游接口请求多个下游接口的时候不会因为下游中如图2所示的其中一个服务异常导致上游服务的异常。
步骤三、当服务请求到达的时候,如图3中S1所示,服务会先判断熔断标识是否开启,当服务熔断标识未开启的时候,如图3中S2所示,服务会异步记录和统计请求相关统计数据,包括但不限于请求响应时间,qps,服务异常比例等。
步骤四、当如图3中S2所示统计信息达到熔断触发阀值,或者通过配置中心动态修改了熔断阀值的时候,服务会修改熔断标识如图3中S3所示。再下次请求到达的时候则会进入步骤二的流程。
步骤五、当熔断标识开启的时候会触发熔断自我恢复的异步任务,如图3中S4所示,自我恢复的异步任务会根据从配置中心拿到的自我恢复间隔时间尝试恢复服务,具体为尝试恢复熔断标识让请求进入服务请求具体接口如果响应正常,则继续让请求进入服务请求具体接口,当到达阀值的时候则将熔断标识标记为断开并关闭自我修复异步任务,如果尝试阶段放入的请求依旧不正常则不修改熔断标识,等待下一次熔断恢复尝试。
步骤六、以上步骤中所述的熔断标识、熔断自我恢复尝试时间间隔、服务熔断返回都可以通过配置中心动态的修改。从而达到服务既可以自动根据服务统计数据熔断和自我恢复,也可以通过动态的通过配置中心手动熔断和恢复服务。
本实施例通过java动态代理和反射技术针对所有对外暴露接口嵌入统计代码以及异控制开关及处理方案代码,并通过配置中心可动态调整异常控制开关以及代码处理流程,从而达到对服务异常动态感知应用接口请求响应情况,动态熔断服务,动态恢复服务。因为是通过动态代理和反射技术统一处理不需要硬编码到代码中,并且配合配置中心,异常熔断过程中的关键参数,以及一些熔断方案可以通过配置中心动态的调整,从而达到无侵入式的实现动态熔断和自我恢复。
实施例2
一种服务接口的异常熔断和自我恢复的方法,包括以下步骤:
步骤一、需要实现动态熔断功能的微服务micro-service-a接入本专利所述的服务熔断恢复方案的服务需要引入本专利所述SDK以及加入配置中心相关依赖配置。并在配置中心config-service中配置micro-servce-a的熔断配置。
步骤二、当微服务micro-service-a的接口service-interface-1因为请求量过大,请求积压,导致接口响应时间超长超过config-service中配置的服务超时时间,并且单位时间内服务异常比例达到配置中心config-server中配置的熔断阀值的时候,SDK中的熔断逻辑就会触发,后续到达的请求不会再执行service-interface-1内部的逻辑,而是尝试动态执行配置文件拉取的备选方案代码,通过java的反射技术执行备选策略,从而最大限度的保障服务的可用性,如果service-interface-1没有配置接口熔断备选方案代码,则在入口处被拒绝,返回统一的错误提示。此过程中micro-service-a的其他接口不受影响。
步骤三、当服务micro-service-a的接口service-interface-1被主动熔断之后,SDK会启动一个线程来定时尝试恢复接口service-interface-1。尝试过程中如果执行接口service-interface-1逻辑的响应时间恢复,错误比例达到恢复标准,则会修改接口service-interface-1的熔断标识,其后接口service-interface-1的请求就会执行自己的逻辑,接口自动恢复正常。
步骤四、当步骤三中的自动恢复尝试一直没有达到恢复标准,但接口service-interface-1已经恢复正常,运维人员也可以通过修改配置中心config-service中对应micro-service-a的熔断标识,以人工干预的方式快速的恢复服务。
步骤五、以上步骤中所述的熔断标识、熔断自我恢复尝试时间间隔、服务熔断返回都可以通过配置中心动态的修改。从而达到服务既可以自动根据服务统计数据熔断和自我恢复,也可以通过动态的通过配置中心手动熔断和恢复服务。
步骤六、以上步骤中的熔断和自我恢复的过程针对服务micro-service-a中的所有接口都可以进行单独的配置熔断阀值,自动恢复尝试时间间隔,熔断标识等从而达到对服务micro-service-a中的各个接口独立控制自我熔断和恢复的效果。
以上所述实施例仅表达了本发明的具体实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。

Claims (3)

1.一种服务接口的异常熔断和自我恢复的方法,其特征在于,包括以下步骤:
步骤1、引入SDK以及加入配置中心相关依赖配置,其中所述SDK中通过java的动态代理和反射技术将服务请求响应的统计功能、服务熔断判断功能以及服务熔断自我恢复功能埋点到服务的每个接口请求;且熔断标识以及熔断自我恢复尝试时间间隔均从对应的配置中心动态获取,以及可以动态的通过配置中心进行修改;
步骤2、当服务请求到达的时候,服务先判断熔断标识是否开启,当服务熔断标识为开启状态则本次请求就进入熔断流程,响应熔断结果;当服务熔断标识未开启的时候,服务异步记录和统计请求相关统计数据;
步骤3、当统计数据达到熔断触发阈值,或者通过配置中心动态修改了熔断阈值时,服务则会修改所述熔断标识,且当下次请求到达时再次进入步骤2;
步骤4、当服务熔断标识开启的时候会触发熔断自我恢复的异步任务,自我恢复的异步任务根据从配置中心拿到的自我恢复间隔时间尝试恢复服务。
2.根据权利要求1所述的服务接口的异常熔断和自我恢复的方法,其特征在于,所述步骤2中,服务异步记录和统计请求相关统计数据包括响应时间、qps和服务异常比例。
3.根据权利要求1所述的服务接口的异常熔断和自我恢复的方法,其特征在于,所述步骤4中,自我恢复的异步任务会根据从配置中心拿到的自我恢复间隔时间尝试恢复服务具体包括:
尝试恢复熔断标识让请求进入服务请求具体接口如果响应正常,则继续让请求进入服务请求具体接口,当到达阀值的时候则将熔断标识标记为断开并关闭自我修复异步任务,如果尝试阶段放入的请求依旧不正常则不修改熔断标识,等待下一次熔断恢复尝试。
CN202011301238.XA 2020-11-19 2020-11-19 服务接口的异常熔断和自我恢复的方法 Pending CN112269674A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011301238.XA CN112269674A (zh) 2020-11-19 2020-11-19 服务接口的异常熔断和自我恢复的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011301238.XA CN112269674A (zh) 2020-11-19 2020-11-19 服务接口的异常熔断和自我恢复的方法

Publications (1)

Publication Number Publication Date
CN112269674A true CN112269674A (zh) 2021-01-26

Family

ID=74340339

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011301238.XA Pending CN112269674A (zh) 2020-11-19 2020-11-19 服务接口的异常熔断和自我恢复的方法

Country Status (1)

Country Link
CN (1) CN112269674A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112783730A (zh) * 2021-01-29 2021-05-11 好活(昆山)网络科技有限公司 一种接口的监测方法、装置、介质及电子设备
CN113472679A (zh) * 2021-09-02 2021-10-01 杭州星犀科技有限公司 接口限流方法和系统
CN114357048A (zh) * 2022-01-05 2022-04-15 携程旅游网络技术(上海)有限公司 接口熔断方法及系统、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9136012B1 (en) * 2014-05-05 2015-09-15 Apple Inc. Reliable readout of fuse data in an integrated circuit
CN106776099A (zh) * 2017-01-11 2017-05-31 北京皮尔布莱尼软件有限公司 一种服务熔断隔离系统和方法
CN109828856A (zh) * 2018-12-26 2019-05-31 天翼电子商务有限公司 基于Dubbo的安全性自动熔断方法及系统、存储介质及终端
CN111475382A (zh) * 2020-04-09 2020-07-31 杭州趣维科技有限公司 基于sentinel的服务熔断、降级和限流系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9136012B1 (en) * 2014-05-05 2015-09-15 Apple Inc. Reliable readout of fuse data in an integrated circuit
CN106776099A (zh) * 2017-01-11 2017-05-31 北京皮尔布莱尼软件有限公司 一种服务熔断隔离系统和方法
CN109828856A (zh) * 2018-12-26 2019-05-31 天翼电子商务有限公司 基于Dubbo的安全性自动熔断方法及系统、存储介质及终端
CN111475382A (zh) * 2020-04-09 2020-07-31 杭州趣维科技有限公司 基于sentinel的服务熔断、降级和限流系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
赵昱: "基于ServiceComb的多语言微服务平台", 《计算机系统应用》 *
陈学明: "《Spring+Spring MVC+MyBatis整合开发实战》", 30 June 2020 *
陈林等: "基于服务网格技术的银行分布式服务总线方案探索", 《中国金融电脑》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112783730A (zh) * 2021-01-29 2021-05-11 好活(昆山)网络科技有限公司 一种接口的监测方法、装置、介质及电子设备
CN112783730B (zh) * 2021-01-29 2022-07-22 好活(昆山)网络科技有限公司 一种接口的监测方法、装置、介质及电子设备
CN113472679A (zh) * 2021-09-02 2021-10-01 杭州星犀科技有限公司 接口限流方法和系统
CN114357048A (zh) * 2022-01-05 2022-04-15 携程旅游网络技术(上海)有限公司 接口熔断方法及系统、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN112269674A (zh) 服务接口的异常熔断和自我恢复的方法
CN109240765B (zh) 服务资源的熔断方法、装置、设备及计算机可读存储介质
CN111078453B (zh) 微服务自动熔断和恢复方法、装置、计算机设备及存储介质
US9626236B2 (en) Method, apparatus and computer program for administering messages which a consuming application fails to process
US20210176117A1 (en) Control Plane Device Switching Method and Apparatus, and Forwarding-Control Separation System
CN106776099A (zh) 一种服务熔断隔离系统和方法
CN113535446B (zh) 用于线路接入时业务数据保护的进程双向守护方法及系统
CN112131036A (zh) 一种过载保护方法、装置、设备及计算机可读存储介质
CN110795264A (zh) 监控管理方法及系统、智能管理终端
CN112988546A (zh) 一种支付系统防止服务雪崩的熔断方案及系统
CN113037740B (zh) 一种goose报文发送方重启帧判别方法
CN111949421B (zh) Sdk调用方法、装置、电子设备和计算机可读存储介质
CN100397829C (zh) 一种频发性离散事件性故障的告警方法
CN101145965A (zh) 一种自动登录电信网管的方法及装置
CN116450386A (zh) 看门狗检测方法、设备及存储介质
CN104836679A (zh) 通信异常处理方法及网元设备
CN116450390A (zh) 看门狗检测方法及电子设备
CN109743234B (zh) 基于容忍机制的环回检测方法及系统
KR100270918B1 (ko) 이동 통신 에치엘알 시스템에서의 프로세서 관리 방법
US20230027878A1 (en) Fault recovery system for functional circuits
CN110932391A (zh) 一种站内馈线开关跳闸识别方法及系统
CN105827486B (zh) 充值终端监控系统及其方法
CN100489786C (zh) 状态机维护方法及装置
CN109684133A (zh) 一种计算机死机状态自动重启方法
CN105703950B (zh) 一种控制平面异常导致设备脱管的容错方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20210126

RJ01 Rejection of invention patent application after publication