当我们使用传统的CS体系结构时,由于故障和其他原因,服务器将被阻止,这可能导致客户端的请求失去响应,然后导致一组用户在一段时间后无法获得服务。在这种情况下,由于阶级联盟水平的消费,我们称其为“服务血液崩溃”,因此内部可能会阻止下游。
断路器的存在等同于给我们一层保护。当调用稳定性不好时,或者可能无法调用故障的服务和资源可以监视这些错误,并在达到一定的阈值后使请求失败。预留过多的资源消耗。具有自动识别服务状态和恢复的功能。当上游服务恢复正常时,断路器可以自动判断并恢复正常请求。
让我们看一下没有断路器的请求过程:用户依靠Servicea提供服务,而Servicea依靠ServiceB提供的服务。假设ServiceB目前有故障。在10分钟内,每个请求将延迟10秒。
然后,如果我们在请求Servicea服务时有N用户,则在几秒钟内,Servicea的资源将由于服务b发起的请求而消耗掉,该请求拒绝用户后拒绝任何请求。对于用户,这等于Servicea和Servicea和ServiceB at at at同一时间,导致整个服务链接的崩溃。
当我们在Servicea上安装断路器时会发生什么?
断路器的状态图如下:
可以看出,断路器的核心点如下:
有了这些知识,我们可以尝试创建一个断路器:
构建断路器的状态:
补充其余功能:
使用断路器时,您只需要在断路器实例中的呼叫方法中调用请求。
红帽在早期就创建了一个名为Opossum的成熟节点。链接在这里:对于分布式系统,使用该库可以极大地提高您服务的可容忍能力,并从根本上解决服务血液崩溃的问题。
作者:ES2049 /寻找惊奇
