系统架构的可用性、容错性及性能优化策略
1. 自动重试与故障避免
1.1 Envoy 自动重试
Envoy 作为边车代理,可代表用户执行自动重试,无需对源代码进行更改。例如,可在 Envoy 的路由中添加如下重试策略配置:
retry_policy:
retry_on: "5xx"
num_retries: 3
per_try_timeout: 2s
此配置会使 Envoy 在调用返回如 503 HTTP 代码或映射到 5XX 代码的 gRPC 错误时进行重试,共重试 3 次,每次重试若在 2 秒内未完成则视为失败。
1.2 避免级联故障
若无重试机制,错误会在系统中传播,导致级联故障。以下是几种防止此类情况发生的方法:
- 断路器(Circuit Breaker) :该模式能让我们快速察觉服务无法处理请求,从而短路对其的调用。在 Envoy 中,可在配置中添加如下内容:
circuit_breakers:
thresholds:
- priority: DEFAULT
max_connections: 1000
max_requests: 1000
max_pending_requests: 1000
在调用方实现断路器时,当进行了几次调用且漏桶溢出,可在指定时间内停止发起新调用。
-