Hystrix 是Netflix针对微服务分布式系统采用的熔断保护中间件,相当于电路中的保险丝。在微服务架构下,很多服务都相互依赖,如果不能对依赖的服务进行隔离,那么服务本身也可能发生故障,Hystrix通过HystrixCommand 对调用进行隔离,这样可以阻止故障的连锁反应,能够让接口调用快速失败并且迅速恢复正常,或者回退并优雅降级。
而断路器模型是为了防止程序出错导致网络阻塞,断路器的状况反应了一个程序的可用性和健壮性,它是一个重要指标。
Hystrix Dashboard是作为断路器状态的一个组件,提供了数据监控和友好的图形化界面。
相关pom依赖如下
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-netflix-hystrix-dashboard</artifactId>
</dependency>
在启动类上加入
在controller加入一个接口,用于调用服务端测试。
启动9001,9002,9003服务。输入http://localhost:9001/hystrix
客户端调用服务端接口调用
在输入框输入监控9002端口服务http://localhost:9002/hystrix.stream
点击Montor Stream。如果出现这种Unable to connect to Command Metric Stream情况。方法一可将spring boot 版本改为1.5以下,然后重启即可。
方法二是在启动类中加入一个servlet。
代码为。注意addUrlMappings设置的值。后期监控端口的url也要相应的改变。
@Bean
public ServletRegistrationBean getServlet() {
HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);
registrationBean.setLoadOnStartup(1);
registrationBean.addUrlMappings("/actuator/hystrix.stream");
registrationBean.setName("HystrixMetricsStreamServlet");
return registrationBean;
}
重启服务,重新调用一遍接口。