全部产品

故障隔离

某个服务故障或者异常时,如果该服务触发熔断,会造成整个服务的不可用。而故障隔离,能够定位到异常的服务实例,实现实例级别、精细化的隔离和摘流,使故障影响的范围更小更可控。

故障隔离原理示意图故障隔离原理3.png隔离规则解释:3 秒内至少有 20 个请求调用,并且错误机器的异常比例平均阈值为 20%,会剔除掉异常比例 ≥ 40%(异常比例阈值 * 异常比例倍数)的机器,即会剔除 serviceApp3 这一台机器。

前置条件

请确保 SOFABoot 版本在 3.3.3 及以上。有关 SOFABoot 的版本信息,详见 SOFABoot 版本说明

故障隔离操作

SOFAStack 平台 > 中间件 > 微服务平台 > 服务网格 页面,单击 服务治理 标签,进入相应页面选择 故障隔离 标签,可以对故障隔离规则进行查询、添加和编辑。

查询故障隔离规则

可以根据下述内容,对故障隔离规则进行查询:

  • 应用名

  • 故障隔离规则名称

添加注入规则

单击 添加隔离规则,可自定义隔离规则。故障隔离 (1).png

  • 规则名称:自定义的隔离规则名。支持中、英文、数字及下划线。

  • 应用:待隔离的应用。

  • 隔离规则:可单击页面右侧(加号.png),来添加多条隔离规则。隔离规则主要内容包括:

    • 运行模式:分为 拦截模式观察者模式。2 者的主要区别在于触发熔断或者降级时的处理不同:

      • 拦截模式:直接使服务快速失败。

      • 观察者模式:只记录日志。

    • 时间窗口大小:默认为 10000,单位为毫秒。

    • 时间窗口内最少调用次数:默认为 20 次。

    • 异常比例阈值:异常机器的平均异常比例。

    • 异常比例倍数:决定了要剔除何种异常率的机器。

    • 最大隔离数量:有多台机器满足隔离条件时,允许隔离的机器数量。

    • 流量精确匹配:支持多条匹配规则的 操作。多个规则按照顺序执行,直到被某一个规则被拦截或全部通过。规则主要包括下述内容:

      • 字段:包括系统字段和请求头。

      • 字段名:包括流量类型、调用方应用名、调用方 IP、服务方应用名。

      • 选择逻辑:包括等于、不等于、属于、不属于、正则。

      • 字段值:例如调用方应用名、调用方 IP、服务方应用名、服务方服务名、服务方方法名。

规则解析

时间窗口会和其它的条件联合起来让规则生效。假定有下述条件:

  • 时间窗口是 10

  • 窗口最少调用次数是 20

  • 异常比例阈值是 20

  • 异常比例倍数是 2

  • 最大隔离数量是 1

如果 10s 内有 20 个请求进来,并且异常机器的平均异常率为 20%,则会把异常比例 ≥ 40%(异常比例倍数 * 异常比例阈值)的机器给隔离掉,但只隔离一台(最大隔离数量是 1)。

异常比例阈值是异常机器的平均异常比例。异常比例倍数决定了要剔除何种异常率的机器。假定有下述三台服务端:

  • 一台正常

  • 两台异常:异常率分别是 20%、40%。

则异常比例阈值为(20% + 40%)/2 = 30%。如果异常比例倍数为 1,则会剔除异常率大于等于 30% 的这一台机器。

编辑故障隔离规则

故障隔离规则示例故障隔离-2.png

单击单个应用,可对其隔离规则进行如下编辑:

  • 添加

  • 编辑

  • 删除

  • 开启关闭 该条规则