11.8 局部故障处理机制
-
retry:分布式环境中对远程资源和服务的调用可能会由于瞬态故障(短时间内可自行恢复的故障)而失败,一般情况下,重试机制可解决此类问题
- 常见的瞬态故障有网络连接速度慢、超时、资源过量使用或暂时不可用等
-
timeout:此外,也存在因意外事件而导致故障,并且可能需要较长的时间才能得以恢复;
-
此类故障的严重性范围涵盖从部分连接中断到服务完全失败;
- 连续重试和长时间的等待对该类场景都没有太大意义
- 应用程序应迅速接受该操作已失败并主动地应对该失败
-
可以将调用服务的操作配置为实施“超时”,若该服务在超时时长内未能响应,则以失败消息响应
-
-
circuit breaker:还有,若服务非常繁忙,则系统某一部分的故障可能会导致级联故障;
-
对此,简单的超时策略可能导致对同一操作的许多并发请求被阻止,直到超时时长耗尽为止;
-
这些被阻止的请求可能包含关键的系统资源,例如内存、线程和数据库连接等
- 这类资源的耗尽可能导致需要使用相同资源的系统其他可能不相关的部分出现故障
- 于是,此时最好立即使操作失败,并且仅在可能成功的情况下才尝试调用服务
-
局部处理机制当中常见的版本对envoy而言有retry、timeout、circuit breaker,各位在了解微服务治理框架的时候大多数框架都会强调自己拥有这样的系统故障处理能力