api-gateway实践(13)新服务网关 - 断路保护/熔断机制
2017-10-18 17:23
771 查看
参考链接: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实践(04)新服务网关 - 新手入门
- api-gateway实践(06)新服务网关 - 请求监控
- api-gateway实践(03)新服务网关 - 网关请求拦截检查
- api-gateway实践(07)新服务网关 - 手动发布
- api-gateway实践(01)服务网关 - 原型功能
- api-gateway实践(08)新服务网关 - 云端发布和日志查看
- api-gateway实践(02)新服务网关 - 运行环境
- api-gateway实践(10)新服务网关 - OpenID Connect
- api-gateway实践(05)新网关工作 - 缓存定义
- 来自京东、宅急送对微服务编排、API网关、持续集成的实践分享(下)
- Oracle API Gateway连接WebService服务,攻击保护
- api-gateway实践(09)支持rest服务注册
- 阿里云API网关(13)请求身份识别:客户端请求签名和服务网关请求签名
- 来自京东、唯品会对微服务编排、API网关、持续集成的实践分享(上)
- 来自京东、唯品会对微服务编排、API网关、持续集成的实践分享(上)
- 来自京东、宅急送对微服务编排、API网关、持续集成的实践分享(下)
- api-gateway实践(15)API网关的待改进点 20171207
- 二十一、API网关服务:Spring Cloud Zuul
- 谈谈微服务中的 API 网关(API Gateway)
- 10分钟上线 - API网关 + 函数计算实现图片处理服务