zoukankan      html  css  js  c++  java
  • 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、调用计量

  • 相关阅读:
    语句结构1练习
    语句结构(1)
    常用dos命令(4)
    常用dos命令(3)
    常用dos命令(2)
    常用dos命令(1)
    因式分解 · Factor Combinations
    电话号码的字母组合 · Letter Combinations of a Phone Number
    286 walls and gate最近的出口
    286被围绕的区域 · Surrounded Regions
  • 原文地址:https://www.cnblogs.com/lexiaofei/p/7687811.html
Copyright © 2011-2022 走看看