📜  hystrix 配置 spring boot - Java (1)

📅  最后修改于: 2023-12-03 15:15:46.089000             🧑  作者: Mango

Hystrix配置Spring Boot

Hystrix是Netflix开源的容错框架,旨在通过添加延迟容错和容错逻辑,提高分布式系统的弹性。在Spring Boot中,我们可以很方便地集成Hystrix,并使用Hystrix Dashboard监控Hystrix的运行状况。

1. 添加依赖

首先,在Spring Boot应用中,我们需要添加Hystrix的依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
2. 在Spring Boot应用中启用Hystrix

要在Spring Boot应用中启用Hystrix,我们可以使用@EnableCircuitBreaker注解,这个注解告诉Spring Boot在哪个类中启用Hystrix。

@SpringBootApplication
@EnableCircuitBreaker
public class MyApplication {
    // ...
}
3. 创建Hystrix命令

在使用Hystrix之前,我们需要为每个需要保护的服务或方法创建一个Hystrix命令。Hystrix命令是一个类,继承自HystrixCommandHystrixObservableCommand

public class MyHystrixCommand extends HystrixCommand<String> {

    private final String name;

    public MyHystrixCommand(String name) {
        super(HystrixCommandGroupKey.Factory.asKey("MyGroup"));
        this.name = name;
    }

    @Override
    protected String run() throws Exception {
        // 执行需要保护的代码
        return "Hello " + name;
    }

    @Override
    protected String getFallback() {
        // 执行容错逻辑
        return "Fallback";
    }
}

在这个例子中,MyHystrixCommand是一个简单的Hystrix命令,它接受一个名字,并返回一个问候语。

其中,HystrixCommandGroupKey用于将Hystrix命令分组。这里我们用MyGroup作为分组的名称。

run()方法是需要保护的方法体,getFallback()方法是容错逻辑。

4. 使用Hystrix命令

在Spring Boot应用中使用Hystrix命令很简单。我们可以直接使用execute()方法执行命令:

MyHystrixCommand command = new MyHystrixCommand("World");
String result = command.execute();

在这个例子中,我们创建了一个MyHystrixCommand实例,并通过execute()方法执行了它。

5. 监控Hystrix

为了方便监控Hystrix的运行状况,我们可以使用Hystrix Dashboard。Hystrix Dashboard是一个可视化的监控界面,可以展示Hystrix的运行指标和数据。

要在Spring Boot应用中使用Hystrix Dashboard,我们需要添加以下依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>

然后,在启动类中添加@EnableHystrixDashboard注解:

@SpringBootApplication
@EnableCircuitBreaker
@EnableHystrixDashboard
public class MyApplication {
    // ...
}

最后,在浏览器中访问http://localhost:port/hystrix,我们就可以看到Hystrix Dashboard的界面了。

6. 配置Hystrix

在默认情况下,Hystrix有一些默认的配置,但是我们也可以根据需要进行配置。可以使用@HystrixProperty注解来配置Hystrix。

@HystrixCommand(fallbackMethod = "fallback", 
                commandProperties = {
                    @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "500"),
                    @HystrixProperty(name = "metrics.rollingStats.timeInMilliseconds", value = "10000") 
                },
                threadPoolProperties = {
                    @HystrixProperty(name = "coreSize", value = "5"),
                    @HystrixProperty(name = "maxQueueSize", value = "10") 
                })
public String myMethod() {
    // ...
}

在这个例子中,我们使用了@HystrixCommand注解来标记需要保护的方法,并使用commandPropertiesthreadPoolProperties属性来配置Hystrix。

其中,execution.isolation.thread.timeoutInMilliseconds属性用于设置Hystrix命令的执行超时时间,metrics.rollingStats.timeInMilliseconds属性用于设置Hystrix监控数据的滚动时间窗口。

threadPoolProperties属性用于配置Hystrix线程池的属性,包括核心线程数和队列大小等。

总结

在本文中,我们介绍了Hystrix在Spring Boot中的使用。我们使用了@EnableCircuitBreaker注解开启了Hystrix,并创建了一个Hystrix命令来保护需要保护的服务或方法。最后,我们使用Hystrix Dashboard监控了Hystrix的运行状况。