api-gateway实践(13)新服务网关 - 断路保护/熔断机制
参考链接:SpringCloud的Hystrix(五) Hystrix机制
1、在线测试

根据定义,生成输入界面,
点击测试,
验证参数,发起调用,返回执行结果
2、熔断保护



两个实现类:
NoOpCircuitBreakerImpl,什么也不做的断路器实现
HystrixCircuitBreakerImpl,实现类:
HystrixCircuitBreakerImpl
- HystrixCommandProperties properties
- HystrixCommandMetrics metrics
- AtomicBoolean circuitOpen
- AtomicLong circuitOpenedOrLastTestedTime:断路器打开或是上一次测试时间戳
HystrixCircuitBreakerImpl的方法
isOpen 判断断路器的打开/关闭状态
如果打开,直接返回true,表示断路器处于打开状态。否则,从度量指标metrics中获取healthcounts统计对象进一步判断(该对象记录了一个滚动时间窗内的请求信息快照,默认时间窗为10秒)
如果请求总数qps在预设的阈值范围内就返回false,表示断路器处于未打开状态,默认值20
如果错误百分比在阈值范围内就返回false,表示断路器处于未打开状态,默认值50
如果上述两个条件都不满足,就将断路器设置为打开状态(熔断/短路)。同时,如果从关闭状态切换到打开状态的话,就将时间记录到circuitOpenedOrLastTestedTime中。
allowRequest 判断请求是否被允许
判断是否强行打开,是则 return false
判断是否强行关闭,是则 isOpen & return true
!isOpen()||allowSingleTest()::断开时的时间戳+配置中的circuitBreakerSleepWindowInMillseconds 是否 小于当前时间,如果是的话,就将当前时间更新到记录断路器打开的时间circuitBreakerOpenedOrLastTestedTime中,并允许该请求。
即设置了断路器打开后的休眠时间(默认为5秒),休眠时间达到之后,将再次允许请求尝试访问,此时断路器处于“”半开“”,
若此时请求继续失败,则断路器又进入打开状态,并等待下一个休眠窗口过去之后再尝试。
若请求成功, 则将断路器重新置于关闭状态。
所以,allowSingleTest()和isOpen()配合,实现了断路器的打开和关闭状态的切换。
markSuccess 用来关闭断路器 在“半开”状态时使用。若调用命令成功,通过调用它将打开的断路器关闭,并重置度量指标对象。
命令执行的四个结果:成功、失败、超时、拒绝,用来更新计时器
3、性能测试
4、调用计量
api-gateway实践(13)新服务网关 - 断路保护/熔断机制的更多相关文章
- 网关中加入熔断机制(Hystrix)
网关中加入熔断机制 在网关中加入熔断机制 添加依赖项 spring-cloud-gateway项目POM文件加入spring-cloud-starter-netflix-hystrix <dep ...
- api-gateway实践(02)新服务网关 - 运行环境
一.服务网关的运行环境 1.服务配置中心 1.1.服务配置中心前台 前台 http://10.110.17.20/#/login:无源码,德奎部署在10.110.17.20的DockerStatck环 ...
- api-gateway实践(10)新服务网关 - OpenID Connect
网关指南: https://help.aliyun.com/document_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl 网关控制台: https ...
- api-gateway实践(06)新服务网关 - 请求监控
一.实时监控 用户点击服务实例,系统显示服务实例-version下的api列表, 用户点击某个api的如下两个图标 1.API请求次数监控 横轴:时间,粒度为分钟 纵轴:请求访问次数 展示:失败数(红 ...
- api-gateway实践(04)新服务网关 - 新手入门
一.网关引擎环境 1.下载代码 2.搭建环境 3.打包部署 二.配置中心环境 1.下载代码 2.搭建环境 3.打包部署 三.创建业务实例 1.以租户身份登录配置中心,注册 group.version. ...
- api-gateway实践(03)新服务网关 - 网关请求拦截检查
参考链接:http://www.cnblogs.com/jivi/archive/2013/03/10/2952829.html 一.为什么要拦截检查请求? 防止重放攻击.篡改重放,进行使用规格检查 ...
- api-gateway实践(08)新服务网关 - 云端发布和日志查看
一.发布应用 1.新建应用空间 1.1.新建应用空间 1.2.新建应用 1.3.上传程序包 2.创建应用引擎服务 3.发布应用 3.1.为应用容器绑定Web运行环境(应用引擎服务) 3.2.发布应用( ...
- api-gateway实践(07)新服务网关 - 手动发布
应用地址:http://10.110.20.191:8080/api-gateway-engine/ 一.准备工作 1.xshell登陆云主机 1.1.配置链接 1.2.链接成功 1.3.关闭防火墙 ...
- [转载] 构建微服务:使用API Gateway
原文: http://mp.weixin.qq.com/s?__biz=MzA5OTAyNzQ2OA==&mid=206889381&idx=1&sn=478ccb35294c ...
随机推荐
- 平衡树(Splay)模板
支持区间操作. 单点操作和区间操作分开使用,需要一起使用需要部分修改. 对应题目FJUTOJ2490 #include<cstdio> #include<cstring> #i ...
- Python爬虫获取异步加载站点pexels并下载图片(Python爬虫实战3)
1. 异步加载爬虫 对于静态页面爬虫很容易获取到站点的数据内容,然而静态页面需要全量加载站点的所有数据,对于网站的访问和带宽是巨大的挑战,对于高并发和大访问访问量的站点来说,需要使用AJAX相关的技术 ...
- js实现html转pdf+html2canvas.js截图不全的问题
最近做项目中遇到要把整个页面保存为PDF文件,网上找了一下实现的方法都是 html2canvas.js+jsPdf.js 来实现.实现的过程是 先用html2canvas.js把html页面转成图片, ...
- git 使用方式
一.常用操作命令 1.初始化操作 git config --global user.name '<name>' # 设置提交者名称 git config --global user.ema ...
- dataTable插件的使用
var table; table = $("#example").dataTable({ "sDom": "<'top'f<'clear' ...
- spring boot多环境配置 直接上代码
spring: profiles: active: test jackson: date-format: yyyy-MM-dd HH:mm:ss datasource: dri ...
- npm包使用语义化版本号
npm 采用语义版本管理软件包.所谓语义版本,就是指版本号为a.b.c的形式,其中a是大版本号,b是小版本号,c是补丁号. 一个软件发布的时候,默认就是1.0.0版.如果以后发布补丁,就增加最后一位数 ...
- input输入框限制输入正整数、小数、字母、文字
有的时候需要限制input的输入格式: 例如,输入大于0的正整数 <input onkeyup="if(this.value.length==1){this.value=this.va ...
- 仿京东树形菜单插件hovertree
hovertree是一个仿京东的树形菜单jquery插件,暂时有银色和绿色两种. 官方网址:http://keleyi.com/jq/hovertree/欢迎下载使用 查看绿色效果:http://ke ...
- [学习笔记] 模拟退火 (Simulated Annealing)
真没想到这东西真的在考场上用到了...顺便水篇blog以示诈尸好了(逃 模拟退火算法 模拟退火是一种随机化算法, 用于求函数的极值qwq 比如给出一个问题, 我们要求最优解的值, 但是可能的方案数量极 ...