在分布式架构系统中,存在断路器的机制,断路器模式本身来源于著名软件工程师 Martin Fowler 的 《Circuit Breaker》 的文章。“断路器”本身是一种开关装置,用于在电路上保护线路过载,当线路中有电器发生短路时,“断路器”能够及时的切断故障电路,防止发生过载、发热、甚至起火等严重后果。
在分布式系统中,断路器模式的作用也是类似的,当某个服务单元(微服务)发生故障(类似用电器发生短路)之后,通过断路器的故障监控(类似熔断保险丝),直接切断原来的调用关系。
四种实现
Spring Cloud Circuit Breaker 为 Spring Cloud 分布式架构系统的标准,当前它支持的实现主要有 4 个,分别是 Netflix Hystrix、Resilience4J、Sentinel 和 Spring Retry。
Netflix Hystrix
Spring Cloud 的断路器最初是使用 Netflix 的 Hystrix,Hystrix 最初是由 Netflix 的 API team 研发的,用于提高 API 的弹性和性能,并在 2012 年开源,并获得业界好评。
Hystrix 促进了微服务“熔断降级”理念的推广,把隔离和熔断的理念传播到了广大的开发者当中。长期以来,只要一说到隔离和熔断降级,开发者都会首先想到 Hystrix。到了 2014 年,Netflix 全面进军 Spring Cloud,Netflix 的一系列微服务组件也随着 Spring Cloud Netflix 纷至沓来,进入到开发者的视野中;同时,Hystrix 做了一次重大的重构,将底层的统计结构用 rxjava 重构,全面拥抱了 rxjava。
现在 Netflix Hystrix 不再进行更新迭代,进入维护模式,当前稳定版本为 1.5.18。