- 可伸缩架构(第2版):云环境下的高可用与风险管理
- (美)李·艾奇逊
- 472字
- 2021-04-01 11:02:50
级联式的服务故障
假设你有一个服务,它依赖于多个服务,并且有一些服务也依赖于它。图5-1展示了这个“Our Service”与它的多个依赖(Service A、Service B和Service C),以及依赖于它的多个服务(Consumer 1和Consumer 2)。该服务依赖于3个服务,并且被另外2个服务依赖。
![](https://epubservercos.yuewen.com/E95582/17829663206945006/epubprivate/OEBPS/Images/39343-00-082-1.jpg?sign=1738890981-Mb2eb0i47DIZosKNdx32S2ZBdLQKLXnl-0-aa4ab85199983c43b9710e2718bcf035)
图5-1:某服务以及它的依赖服务和消费者们
如果其中一个依赖服务出现了故障会怎样呢?图5-2展示了服务A出现故障时的情形。
除非你非常小心,否则服务A的故障会导致“Our Service”也出现故障,因为它依赖于服务A。
![](https://epubservercos.yuewen.com/E95582/17829663206945006/epubprivate/OEBPS/Images/39343-00-083-1.jpg?sign=1738890981-UZTuFnGtCIChHlDtW0DVOkXfCkEZaziS-0-1e1ef494fb9b6ff41e793f24998e4586)
图5-2:某服务和一个发生故障的依赖服务
如果“Our Service”发生故障,会导致Consumer 1和Consumer 2出现故障。这个错误是可以级联发生的,从而导致更多的服务故障,如图5-3所示。
![](https://epubservercos.yuewen.com/E95582/17829663206945006/epubprivate/OEBPS/Images/39343-00-083-2.jpg?sign=1738890981-ilHOXuQpod6U1ujxzNC4uYiEm7U7dKRe-0-942b0f6796d926de0190f8b5b9f95927)
图5-3:级联故障
如果没有经过仔细检查,系统中的一个服务可能会导致整个系统发生严重的问题。
如何防止级联故障的发生呢?有些时候你什么也做不了—某个依赖服务中的一个错误就会导致你的服务(以及其他依赖服务)出现故障,因为这是从依赖的角度所决定的。有些时候,如果依赖服务发生故障,你的服务就无法完成应有的工作。但也不是全部如此。事实上,当某个依赖服务出现故障时,你还是有很多措施能够挽救自己的服务的。