CN115065588A - 一种基于后端错误码的api熔断降级实现方法及系统 - Google Patents

一种基于后端错误码的api熔断降级实现方法及系统 Download PDF

Info

Publication number
CN115065588A
CN115065588A CN202210605554.9A CN202210605554A CN115065588A CN 115065588 A CN115065588 A CN 115065588A CN 202210605554 A CN202210605554 A CN 202210605554A CN 115065588 A CN115065588 A CN 115065588A
Authority
CN
China
Prior art keywords
fusing
api
module
strategy
gateway
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.)
Granted
Application number
CN202210605554.9A
Other languages
English (en)
Other versions
CN115065588B (zh
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.)
Inspur Cloud Information Technology Co Ltd
Original Assignee
Inspur Cloud Information Technology 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 Inspur Cloud Information Technology Co Ltd filed Critical Inspur Cloud Information Technology Co Ltd
Priority to CN202210605554.9A priority Critical patent/CN115065588B/zh
Publication of CN115065588A publication Critical patent/CN115065588A/zh
Application granted granted Critical
Publication of CN115065588B publication Critical patent/CN115065588B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/66Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0659Management of faults, events, alarms or notifications using network fault recovery by isolating or reconfiguring faulty entities
    • H04L41/0661Management of faults, events, alarms or notifications using network fault recovery by isolating or reconfiguring faulty entities by reconfiguring faulty entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0893Assignment of logical groups to network elements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本发明公开了一种基于后端错误码的API熔断降级实现方法及系统,属于软件开发领域;所述的具体步骤如下:S1创建熔断策略;S2熔断策略绑定已发布的API;S3API调用触发熔断机制;本发明涉及API网关在后端接口出现故障时触发熔断来保护系统的内置机制,提供了一种基于后端错误码的API熔断降级实现方法,当后端接口出现故障时触发熔断来保护系统的内置机制,降低了人工运维的成本,提升系统稳定性。

Description

一种基于后端错误码的API熔断降级实现方法及系统
技术领域
本发明公开一种基于后端错误码的API熔断降级实现方法及系统,涉及软件开发技术领域。
背景技术
随着云计算、人工智能和大数据行业的快速发展,越来越多的应用程序接口通过API网关技术开放给互联网开发者调用,开放后端能力,将自身优势转化为经济价值。
通常情况下,例如瞬时访问量飙升,服务宕机等原因,难免会遇到后端接口不可用的情况。这时,服务提供者就需要切断和服务调用者的连接,不然就会造成资源的浪费。同时考虑服务切断期间接口有数据响应并不断重试上游服务是否已恢复正常,如果后端接口恢复正常还要及时恢复接口的正常调用。针对这些需求,本发明旨在介绍一种API网关根据后端错误码实现API自动熔断降级的实现方法。
故现发明一种基于后端错误码的API熔断降级实现方法及系统,以解决上述问题。
发明内容
本发明针对现有技术的问题,提供一种基于后端错误码的API熔断降级实现方法及系统,所采用的技术方案为:一种基于后端错误码的API熔断降级实现方法,所述方法的具体步骤如下:
S1创建熔断策略;
S2熔断策略绑定已发布的API;
S3API调用触发熔断机制。
所述的S1具体步骤如下:
S101定义API网关触发熔断条件和返回结果,在前端控制台配置参数;
S102在指定窗口时长内,将出错次数超出阈值的后端实际响应码的错误码定义为触发熔断条件;
S103API在开启熔断期间返回Mock返回结果。
所述的S2具体步骤如下:
绑定操作主要为Kong网关生成一段熔断插件的声明性配置并写入Kong内存中,从而启用熔断插件。
所述的S3具体步骤如下:
S301用户请求网关API;
S302指定窗口时长内错误请求超出阈值触发熔断:
S303请求从上游返回后,判断是否触发熔断策略;
所述的S301具体步骤如下:
S3011请求到达网关,首先判断当前API断路器状态;
S3012如果当前状态为closed,正常对上游发起请求;
所述的S302具体步骤如下:
S3021如果当前状态为open,Mock响应数据直接返回给客户端;
S3022如果当前状态为closed,正常对上游发起请求;
所述的S303具体步骤如下:
S3031如果响应触发熔断,断路器状态修改为open,Mock响应数据返回给客户端;
S3032如果正常响应,修改状态为closed,并重置调用统计的数据。
一种基于后端错误码的API熔断降级实现系统,其特征是所述的系统具体包括熔断策略创建模块、熔断策略绑定模块和熔断策略执行模块:
策略创建模块:创建熔断策略;
策略绑定模块:熔断策略绑定已发布的API;
策略执行模块:API调用触发熔断机制。
所述熔断策略创建模块具体包括配置参数模块,定义熔断条件模块和API结果相应模块:
配置参数模块:定义API网关触发熔断条件和返回结果,在前端控制台配置参数;
条件定义模块:在指定窗口时长内,将出错次数超出阈值的后端实际响应码的错误码定义为触发熔断条件;
API返回模块:API在开启熔断期间返回Mock返回结果。
本发明的有益效果为:本发明基于Kong自定义插件、Kubernetes和Redis技术实现API网关熔断的功能,是API网关在后端接口出现故障时保护系统的内置机制。主要包括创建熔断策略,熔断策略绑定API以及API调用。控制台页面创建熔断策略,熔断策略绑定已发布的API,当调用者使用该API时,如果错误响应次数在指定时间窗口内超出阈值上限,API网关进入熔断开启状态。熔断开启期间,用户请求将直接由网关返回Mock信息。熔断开启超时后,API网关进入熔断半开启状态,允许少量并发请求通过,当后端接口能够正常响应时关闭熔断。
本发明涉及API网关在后端接口出现故障时触发熔断来保护系统的内置机制,提供了一种基于后端错误码的API熔断降级实现方法,当后端接口出现故障时触发熔断来保护系统的内置机制,降低了人工运维的成本,提升系统稳定性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明整体流程概述图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员能够更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定;
实施例一:
一种基于后端错误码的API熔断降级实现方法,所述方法的具体步骤如下:
S1创建熔断策略;
S2熔断策略绑定已发布的API;
S3API调用触发熔断机制;
进一步的,所述的S1具体步骤如下:
S101定义API网关触发熔断条件和返回结果,在前端控制台配置参数;
S102在指定窗口时长内,将出错次数超出阈值的后端实际响应码的错误码定义为触发熔断条件;
S103API在开启熔断期间返回Mock返回结果;
熔断策略定义了API网关触发熔断的条件和结果返回,在前端控制台配置,包括窗口时长、阈值、熔断时长、错误码定义和Mock返回结果;该熔断策略在指定窗口时长内后端实际响应码在错误码定义中的错误次数超出阈值即可即可触发熔断;在开启熔断期间,API调用会立刻返回Mock返回结果;
以下是熔断策配置参数说明:
windowInSeconds:判断窗口时长,在该时长内统计错误请求次数,进行熔断判断;
threshold:错误码请求阈值,即错误请求次数上限;
openTimeoutSeconds:熔断策略开启的时长,超出该时间后,API网关进入半开启状态;
errorCondition:错误码定义,数组格式,例如:[400,401,404,500,503],当实际请求上游返回的错误码在该数组定义中时熔断处理逻辑计入统计;
downgradeBackend:熔断开启后的响应信息,熔断开启期间的API请求将在网关直接返回该Mock信息;内容为JSON格式,code参数值为响应码,headers对象为响应header中的参数,body参数值对应响应体内容,格式如下:
Figure BDA0003671160520000041
Figure BDA0003671160520000051
进一步的,所述的S2具体步骤如下:
绑定操作主要为Kong网关生成一段熔断插件的声明性配置并写入Kong内存中,从而启用熔断插件;
一个熔断策略可同时绑定多条API,一条API仅允许绑定一个熔断策略;
插件配置如下:
Figure BDA0003671160520000052
Figure BDA0003671160520000061
API网关断路器包括三个状态,开启、半开启和关闭,断路器默认是关闭状态,当触发熔断后状态变更为开启,在等待到指定的时间,再放行一个请求检测服务是否正常,这期间熔断器会变为半开启状态,熔断探测服务可用则继续变更为关闭,关闭熔断器;
该插件基于滑动窗口算法实现,窗口大小即为上述触发熔断的窗口时长;窗口是连续的,每个窗口时段内都会初始分配一个错误请求次数的阈值,该阈值超出一个窗口时长会自动重置;绑定熔断插件后API第一次请求到达网关时会初始化一个熔断关闭状态值到Redis中,熔断插件逻辑会对每次上游响应进行筛选,一旦响应码命中错误码定义的数值,阈值则进行递减操作,当该阈值在该窗口内被减为0时,进入熔断开启状态,熔断逻辑会更新Redis中该API的状态值为开启,并记录开启的时间戳;熔断期间,客户端请求到达网关后不再请求上游,将直接返回Mock信息;
用户再次请求时,如果熔断开启的时间戳加上熔断时长早于当前请求时间时,该API进入熔断半开启状态,该状态允许少量并发请求到达上游,如果请求成功则关闭熔断,这里成功响应的判断条件是响应状态码小于400的请求,反之则判为失败响应,从而再次开启熔断策略;
半开启状态允许少量并发请求的限流规则如下:
熔断策略时间窗口和错误码阈值分别处以10,商向上取整;
ceil(conf.windowInSeconds/10)秒内只允许ceil(thresholds/10)次并发请求;
进一步的,所述的S3具体步骤如下:
S301用户请求网关API;
S302指定窗口时长内错误请求超出阈值触发熔断:
S303请求从上游返回后,判断是否触发熔断策略;
进一步的,所述的S301具体步骤如下:
S3011请求到达网关,首先判断当前API断路器状态;
S3012如果当前状态为closed,正常对上游发起请求;
进一步的,所述的S302具体步骤如下:
S3021如果当前状态为open,Mock响应数据直接返回给客户端;
S3022如果当前状态为closed,正常对上游发起请求;
再一步的,所述的S303具体步骤如下:
S3031如果响应触发熔断,断路器状态修改为open,Mock响应数据返回给客户端;
S3032如果正常响应,修改状态为closed,并重置调用统计的数据;
实施例二:
一种基于后端错误码的API熔断降级实现系统,其特征是所述的系统具体包括熔断策略创建模块、熔断策略绑定模块和熔断策略执行模块:
策略创建模块:创建熔断策略;
策略绑定模块:熔断策略绑定已发布的API;
策略执行模块:API调用触发熔断机制;
所述熔断策略创建模块具体包括配置参数模块,定义熔断条件模块和API结果相应模块:
配置参数模块:定义API网关触发熔断条件和返回结果,在前端控制台配置参数;
定义熔断条件模块:在指定窗口时长内,将出错次数超出阈值的后端实际响应码的错误码定义为触发熔断条件;
API返回模块:API在开启熔断期间返回Mock返回结果;
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (9)

1.一种基于后端错误码的API熔断降级实现方法,其特征是所述方法的具体步骤如下:
S1创建熔断策略;
S2熔断策略绑定已发布的API;
S3API调用触发熔断机制。
2.根据权利要求1所述的方法,其特征是所述的S1具体步骤如下:
S101定义API网关触发熔断条件和返回结果,在前端控制台配置参数;
S102在指定窗口时长内,将出错次数超出阈值的后端实际响应码的错误码定义为触发熔断条件;
S103API在开启熔断期间返回Mock返回结果。
3.根据权利要求2所述的方法,其特征是所述的S1具体步骤如下:
绑定操作主要为Kong网关生成一段熔断插件的声明性配置并写入Kong内存中,从而启用熔断插件。
4.根据权利要求3所述的方法,其特征是所述的S3具体步骤如下:
S301用户请求网关API;
S302指定窗口时长内错误请求超出阈值触发熔断:
S303请求从上游返回后,判断是否触发熔断策略。
5.根据权利要求4所述的方法,其特征是所述的S301具体步骤如下:
S3011请求到达网关,首先判断当前API断路器状态;
S3012如果当前状态为closed,正常对上游发起请求。
6.根据权利要求5所述的方法,其特征是所述的S302具体步骤如下:
S3021如果当前状态为open,Mock响应数据直接返回给客户端;
S3022如果当前状态为closed,正常对上游发起请求。
7.根据权利要求6所述的方法,其特征是所述的S303具体步骤如下:
S3031如果响应触发熔断,断路器状态修改为open,Mock响应数据返回给客户端;
S3032如果正常响应,修改状态为closed,并重置调用统计的数据。
8.一种基于后端错误码的API熔断降级实现系统,其特征是所述的系统具体包括熔断策略创建模块、熔断策略绑定模块和熔断策略执行模块:
策略创建模块:创建熔断策略;
策略绑定模块:熔断策略绑定已发布的API;
策略执行模块:API调用触发熔断机制。
9.根据权利要求8所述的系统,其特征是所述熔断策略创建模块具体包括配置参数模块,定义熔断条件模块和API结果相应模块:
配置参数模块:定义API网关触发熔断条件和返回结果,在前端控制台配置参数;
定义熔断条件模块:在指定窗口时长内,将出错次数超出阈值的后端实际响应码的错误码定义为触发熔断条件;
API返回模块:API在开启熔断期间返回Mock返回结果。
CN202210605554.9A 2022-05-31 2022-05-31 一种基于后端错误码的api熔断降级实现方法及系统 Active CN115065588B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210605554.9A CN115065588B (zh) 2022-05-31 2022-05-31 一种基于后端错误码的api熔断降级实现方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210605554.9A CN115065588B (zh) 2022-05-31 2022-05-31 一种基于后端错误码的api熔断降级实现方法及系统

Publications (2)

Publication Number Publication Date
CN115065588A true CN115065588A (zh) 2022-09-16
CN115065588B CN115065588B (zh) 2024-04-05

Family

ID=83199333

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210605554.9A Active CN115065588B (zh) 2022-05-31 2022-05-31 一种基于后端错误码的api熔断降级实现方法及系统

Country Status (1)

Country Link
CN (1) CN115065588B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0836295A2 (en) * 1996-09-23 1998-04-15 International Business Machines Corporation Control of a telephone switching system over a digital information network
JP2019009775A (ja) * 2017-06-21 2019-01-17 富士通株式会社 無線ネットワークの状態監視装置及び方法、並びにネットワークシステム
CN109814909A (zh) * 2019-01-18 2019-05-28 南京绿新能源研究院有限公司 基于Spring cloud微服务架构云化SCADA系统的方法
CN110413543A (zh) * 2019-06-17 2019-11-05 中国科学院信息工程研究所 一种基于熔断和二级缓存的api网关保障服务高可用方法及系统
CN111181727A (zh) * 2019-12-16 2020-05-19 北京航天智造科技发展有限公司 一种基于微服务的开放api全生命周期管理方法
CN111752795A (zh) * 2020-06-18 2020-10-09 多加网络科技(北京)有限公司 一种全流程监控报警平台及其方法
CN111756594A (zh) * 2019-03-29 2020-10-09 上海哔哩哔哩科技有限公司 压力测试的控制方法、计算机设备和计算机可读存储介质
CN112217684A (zh) * 2020-12-03 2021-01-12 长沙树根互联技术有限公司 Api网关监控方法、装置及系统
CN112383429A (zh) * 2020-11-12 2021-02-19 四川长虹电器股份有限公司 一种多模态服务的自适应转接网关配置系统
US20210352478A1 (en) * 2020-04-10 2021-11-11 Somos, Inc. Telecommunications call validation platform
CN113641410A (zh) * 2021-06-07 2021-11-12 广发银行股份有限公司 一种基于Netty的高性能网关系统的处理方法及系统

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0836295A2 (en) * 1996-09-23 1998-04-15 International Business Machines Corporation Control of a telephone switching system over a digital information network
JP2019009775A (ja) * 2017-06-21 2019-01-17 富士通株式会社 無線ネットワークの状態監視装置及び方法、並びにネットワークシステム
CN109814909A (zh) * 2019-01-18 2019-05-28 南京绿新能源研究院有限公司 基于Spring cloud微服务架构云化SCADA系统的方法
CN111756594A (zh) * 2019-03-29 2020-10-09 上海哔哩哔哩科技有限公司 压力测试的控制方法、计算机设备和计算机可读存储介质
CN110413543A (zh) * 2019-06-17 2019-11-05 中国科学院信息工程研究所 一种基于熔断和二级缓存的api网关保障服务高可用方法及系统
CN111181727A (zh) * 2019-12-16 2020-05-19 北京航天智造科技发展有限公司 一种基于微服务的开放api全生命周期管理方法
US20210352478A1 (en) * 2020-04-10 2021-11-11 Somos, Inc. Telecommunications call validation platform
CN111752795A (zh) * 2020-06-18 2020-10-09 多加网络科技(北京)有限公司 一种全流程监控报警平台及其方法
CN112383429A (zh) * 2020-11-12 2021-02-19 四川长虹电器股份有限公司 一种多模态服务的自适应转接网关配置系统
CN112217684A (zh) * 2020-12-03 2021-01-12 长沙树根互联技术有限公司 Api网关监控方法、装置及系统
CN113641410A (zh) * 2021-06-07 2021-11-12 广发银行股份有限公司 一种基于Netty的高性能网关系统的处理方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HENG CHEN;LIN ZHANG;JIANZHONG MO;KENNETH E.MARTIN;: "Synchrophasor-based real-time state estimation and situational awareness system for power system operation", JOURNAL OF MODERN POWER SYSTEMS AND CLEAN ENERGY, no. 03 *
温馨;樊婧雯;王富强;: "基于OpenResty平台的API网关系统的设计与实现", 信息化研究, no. 03 *

Also Published As

Publication number Publication date
CN115065588B (zh) 2024-04-05

Similar Documents

Publication Publication Date Title
CN111614570B (zh) 一种用于服务网格的流量控制系统及方法
CN110764906B (zh) 内存回收处理方法、装置、电子设备以及存储介质
CN102981906A (zh) 一种应用程序后台进程管理方法及装置
WO2023036188A1 (zh) 访问限流方法、装置、设备、存储介质及计算机程序产品
CN111290696A (zh) 一种应用程序组件的流控方法及装置
US11301296B2 (en) Memory management based on classification of a software process
CN104461742A (zh) 计算设备优化方法及装置
CN106844026A (zh) 一种清理终端设备进程的方法及系统
CN112131036A (zh) 一种过载保护方法、装置、设备及计算机可读存储介质
CN113472879B (zh) 一种服务请求的方法、装置、计算机设备及存储介质
CN115065588A (zh) 一种基于后端错误码的api熔断降级实现方法及系统
CN103078748B (zh) 计费系统中的双机切换方法及相关设备、系统
CN113609490A (zh) 一种适用多元场景的数据api组合型安全控制机制
CN113867915A (zh) 任务调度方法、电子设备及存储介质
US8416930B2 (en) Apparatus and method for controlling an amount of concurrent calls
CN109522113B (zh) 一种内存管理方法及装置
CN115113887A (zh) 一种多安全软件兼容配置方法、装置、设备及存储介质
CN115658126A (zh) 一种基于SpringMVC管理对外http接口的方法
CN112637964B (zh) 网络双连接管理方法、装置、设备及存储介质
CN109284188B (zh) 一种缓冲数组维护方法、装置、终端及可读介质
CN101964922B (zh) 异常情况捕捉方法及装置
CN110442404A (zh) 一种对象释放方法、装置、设备和存储介质
CN113114639B (zh) 配置服务注册中心的方法、装置、电子设备及存储介质
CN110286890A (zh) 异构语言应用的调用方法、系统、介质及装置
CN110058903B (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
GR01 Patent grant
GR01 Patent grant