• api-gateway实践(13)新服务网关


    参考链接:SpringCloud的Hystrix(五) Hystrix机制

    新需求列表

    1、在线测试

            根据定义,生成输入界面,

            点击测试,

            验证参数,发起调用,返回执行结果

    2、熔断保护



    两个实现类:

      NoOpCircuitBreakerImpl,什么也不做的断路器实现

      HystrixCircuitBreakerImpl,实现类:

    HystrixCircuitBreakerImpl

    1. HystrixCommandProperties properties
    2. HystrixCommandMetrics metrics
    3. AtomicBoolean circuitOpen
    4. 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、调用计量

  • 相关阅读:
    java-泛型及上界下界详解
    【CSDN】Spring+Spring MVC+Mybatis实战项目之云笔记项目
    mybatis
    spring笔记-spring mvc表单
    spring笔记-第一个spring mvc 项目
    巡风源码阅读与分析---AddPlugin()方法
    巡风源码阅读与分析---view.py
    BUGKUctf-web-writeup
    陕西省网络空间安全技术大赛部分题目writeup
    “百度杯”CTF比赛(二月场)-web-writeup
  • 原文地址:https://www.cnblogs.com/lexiaofei/p/7687811.html
Copyright © 2020-2023  润新知