
166
|
第
6
章
6.2.3 用断路器来处理非瞬时故障
断路器的作用是为了防止组件持续执行而导致非瞬时故障。断路器会监视故障的数量,
并根据这个信息来确定请求是应该继续还是应该返回错误响应,从而避免继续调用下游
服务。如果断路器跳闸,即故障数量已经超过了预定义的值,那么将在一段时间内自动
回复错误响应。在经过预设的一段时间后,它将重置故障计数器并再次允许请求调用下
游服务。Netflix 的 Hystrix 是一个很著名的断路器模式的库。如果你正在使用服务网格,
如 Istio 或者 Envoy 代理,你也可以利用这些解决方案中的断路器功能。
6.2.4 优雅地降级
服务的降级应该是优雅的,即使它们出现了故障,也应该提供一个合理的、可接受的用
户体验。例如,如果无法从服务中获取数据了,那么应当显示一份缓存中的数据,当数
据源恢复后,再立即显示最新的数据。
6.2.5 使用隔离模式
隔离模式是指将系统的不同部分进行分组,这样,如果其中一个发生故障,其他部分将
继续运行而不会受到影响。像这样对服务进行分组有助于在故障发生时将其隔离,并继
续为请求提供服务。
6.2.6 实现健康及就绪检查
你应当为你部署的每个服务都实现健康检查和就绪情况检查。平台可以使用这些信息来
确定服务是否健康
、
是否在正常运行,以及何时可以开始接受请求。在 Kubernetes 中,
健康状况检查被称为探针。活动性探针用于确定何时应该重启容器,而就绪性探针用于
确定 pod 是否应开始接收流量。
初始延迟定义的是容器启动后需要等待几秒再激活活动性探针和就绪性探针,而时间周 ...