Fault Tolerance

概述

go-chassis提供自动重试的容错能力,用户可配置retry及backOff策略自动启用重试功能。

配置

重试功能的相关配置与客户端负载均衡策略都在chassis.yaml的cse.loadbalance.配置下。当retryEnabled配置为true时,可通过配置retryOnSame和retryOnNext定制重试次数。另外可通过backOff定制重试策略,默认支持三种backOff策略。

  • zero: 固定重试时间为0的重试策略,即失败后立即重试不等待。
  • constant: 固定时间为backoff.minMs的重试策略,即失败后等待backoff.minMs再重试。
  • jittered: 按指数增加重试时间的重试策略,初始重试时间为backoff.minMs,最大重试时间为backoff.MaxMs。

retryEnabled

(optional, bool) 是否开启重试功能, 默认值为false

retryOnSame

(optional, int) 请求失败后向同一个实例重试的次数,默认为0

retryOnNext

(optional, int) 请求失败后向其他实例重试的次数,默认为0

backoff.kind

(optional, string) 重试策略: [jittered或constant或zero] 默认为zero

backoff.MinMs

(optional, bool) 重试最小时间间隔 单位ms , 默认值为false

backoff.MaxMs

(optional, int) 重试最大时间间隔 单位ms, 默认值为0

示例

配置chassis.yaml负载均衡部分中的重试参数。

cse:
  loadbalance:
    retryEnabled: true
    retryOnNext: 2
    retryOnSame: 3
    backoff:
      kind: jittered
      MinMs: 200
      MaxMs: 400