Netflix 创建了一个名为 Hystrix 的库,用于实现熔断机制模式。在微服务架构中,通常有多个服务调用层,如下例所示:
较低级别的服务中的服务失败可能会导致级联失败,直至用户为止。当对特定服务的调用超过 有一个开路停止级联故障,并允许不知所措或失败的服务时间恢复。回退可以是另一个受 Hystrix 保护的调用、静态数据或显式空值。回退可以链接起来,以便第一个回退进行其他业务调用,而这反过来又返回到静态数据。
要在项目中包含 Hystrix,请使用 group ID 为 以下示例展示了带有 Hystrix 熔断机制的最小 Eureka 服务器: @SpringBootApplication @EnableCircuitBreaker public class Application { public static void main(String[] args) { new SpringApplicationBuilder(Application.class).web(true).run(args); } } @Component public class StoreIntegration { @HystrixCommand(fallbackMethod = "defaultStores") public Object getStores(Map<String, Object> parameters) { //do stuff that might fail } public Object defaultStores(Map<String, Object> parameters) { return /* something useful */; } }
要配置
如果希望一些线程本地上下文传播到 @HystrixCommand(fallbackMethod = "stubMyService",
commandProperties = {
@HystrixProperty(name="execution.isolation.strategy", value="SEMAPHORE")
}
)
...
如果你使用的是
你还可以选择将
连接的断路器的状态也暴露在调用应用程序的 { "hystrix": { "openCircuitBreakers": [ "StoreIntegration::getStoresByLocationLink" ], "status": "CIRCUIT_OPEN" }, "status": "UP" }
要启用 Hystrix 流计量,请包含对 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> |