• 【流控】Hystrix/Sentinel


    转载:https://my.oschina.net/cicadasmile/blog/4328041

    1、Hystrix组件(维护模式)

    基础简介

           Hystrix当前处于维护模式,即不再更新,,最新推荐阿里Sentinel 

      某个微服务发生故障时,要快速切断服务,提示用户,后续请求,不调用该服务,直接返回,释放资源,这就是服务熔断。

    熔断器策略

           服务器高并发下,压力剧增的时候,根据当业务情况以及流量,对一些服务和页面有策略的降级(可以理解为关闭不必要的服务),以此缓解服务器资源的压力以保障核心任务的正常运行。熔断生效后,会在指定的时间后调用请求来测试依赖是否恢复,依赖的应用恢复后关闭熔断。

            

    基本流程:

           首先判断服务熔断器开关状态,服务如果未熔断则放行请求;如果服务处于熔断中则直接返回。

           每次调用都执行两个函数markSuccess(duration)和markFailure(duration) 来统计在一定的时间段内的调用是成功和失败次数。

            基于上述的成功和失败次数的计算策略,来判断是否应该打开熔断器,如果错误率高于一定的阈值,就会触发熔断机制。

           熔断器有一个生命周期,周期过后熔断器器进入半开状态,允许放行一个试探请求;否则,不允许放行。

    2、Sentinel组件

    基础简介

            基于微服务的模式,服务和服务之间的稳定性变得越来越重要。Sentinel以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

            

    Sentinel可以针对不同的调用关系,以不同的运行指标(如QPS、并发调用数、系统负载等)为基准,收集资源的路径,并将这些资源的调用路径以树状结构存储起来,用于根据调用路径对资源进行流量控制。

    流量整形策略

            直接拒绝模式是默认的流量控制方式,即请求超出任意规则的阈值后,新的请求就会被立即拒绝。

            启动预热模式:当流量激增的时候,控制流量通过的速率,让通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,给冷系统一个预热的时间,避免冷系统被压垮。

            匀速排队方式会严格控制请求通过的间隔时间,也即是让请求以均匀的速度通过,对应的是漏桶算法。

    熔断策略

            Sentinel本质上是基于熔断器模式,支持基于异常比率的熔断降级,在调用达到一定量级并且失败比率达到设定的阈值时自动进行熔断,此时所有对该资源的调用都会被阻塞,直到过了指定的时间窗口后才启发性地恢复。

  • 相关阅读:
    SpringSecurity配置
    SpringBoot整合Mybatis
    springboot整合JDBC
    SpringBoot的WEB流程
    List&TreeSet实现斗地主发牌及牌序
    SpringBoot第一个程序
    项目错误总结2021.4.21
    Spring整合Mybatis
    学习——构建民航业知识图谱并实现语义查询的
    新闻文本分类——词云可视化
  • 原文地址:https://www.cnblogs.com/clarino/p/13296578.html
Copyright © 2020-2023  润新知