zoukankan      html  css  js  c++  java
  • 降级特技

    当服务出现问题,要保证服务起码可用,即使服务是有损的,这时候就需要使用降级策略,返回“不那么完善”的服务。另一层含义是,当系统资源紧张时,对非核心业务进行降级,保证核心业务的稳定

    5.1 降级预案

      梳理出哪些服务需要保护,哪些可降级。

      按照是否自动化分为:自动开关降级和人工开关降级

      按照功能分为:读服务降级和写服务降级

      按照处于系统层次分为:多级降级

    5.2 自动开关降级

      5.2.1 超时降级 

      访问非核心接口超时或响应慢,可以在超时后自动降级

      5.2.2 统计失败次数降级

      当访问某些接口经常异常,达到一定阈值后自动降级(熔断器)。然后通过异步线程去探测服务是否恢复,恢复则取消降级

      5.2.3 故障降级

      调用的服务挂掉了,可以直接降级。降级后的处理方案有:默认值,兜底数据,缓存

      5.2.4 限流降级

      被限流机制阻挡的请求,返回错误中或排队页面

    5.3 人工开关降级

      区别主要是由人工来干预,手动降级。比如新开发的功能有问题,手动切换到旧服务。

    5.4 读服务降级

      暂时切换读(降级到读缓存、降级到走静态化)、暂时屏蔽读(屏蔽读入口、屏蔽某个读服务)

    5.5 写服务降级

      主要为了保护数据库,将同步写转成异步写,或者写缓存,再异步写数据库

    5.6 多级降级

      降级离用户越近越对系统保护的好。因为越接近用户,流量越大,此时降级能拦住大部分流量。

      页面JS降级开关,主要控制页面功能的降级

      接入层降级开关,后端服务前的一道防线

      应用层降级开关,控制业务降级

    5.7 配置中心

      手动降级的实现方式,将开关配置放到配置中心,比如apollo,做到不重启即可动态配置开关。

    5.8 使用Hystrix实现降级

      

      当正常方法超时或异常时,如果启用了降级处理,调用getFallback进行降级

    5.9 使用Hystrix实现熔断

      

      通过allowRequest判断是否熔断了,如果没有走正常处理,否则调用getFallback进行降级。

      allowRequest方法,判断熔断开关是否打开(isOpen),如果关闭根据统计信息判断是否需要打开,否则走正常方法。如果打开,其快速恢复机制,允许一个时间窗口内,进行一次测试,看看是否已经恢复,如果恢复则将熔断开关关闭,否则都走降级方法。

      这个方法中调用了isOpen方法,其作用是根据采样次数,判断是否需要打开熔断开关,如果失败率超过阈值,那么打开熔断开关,并返回true。

      熔断器开关的状态:

      闭合:当熔断开关闭合时,不启动熔断机制,不降级

      打开:当熔断开关打开时,启用熔断机制,调用降级方法

      半打开:当熔断处于打开状态,在一个时间窗口内有一次重试机会,此时称为半打开。如果重试成功,则恢复闭合,重试失败则变成打开状态。

      5.9.3 采样统计

      Hystrix在内存中存储采样数据,支持三种采样

      1. 计数统计:统计一个时间窗口内的失败、超时、线程池拒绝、信号量拒绝数量,记录N组,统计使用前N-1组。比如一个窗口时间10秒,每秒记录一组。

      2. 最大并发数统计

      3. 延迟百分比统计

    人生就像蒲公英,看似自由,其实身不由己。
  • 相关阅读:
    VSTO程序基本知识
    NPOI根据Excel模板生成原生的Excel文件实例
    编程实现n阶奇数幻方
    深入介绍Word开发
    漫谈算法(五)问题复杂度分析(Problem Complexity and Adversarial Lower Bound)
    我的VSTO之路:序
    MFC如何让编辑框自动换行,垂直滚动条自动下移到底端
    WORD
    MFC中的列表控件CListCtrl
    实验 1:Mininet 源码安装和可视化拓扑工具
  • 原文地址:https://www.cnblogs.com/walker993/p/14697949.html
Copyright © 2011-2022 走看看