发表于: 2020-09-20 20:17:14
1 1308
今天完成的事:
Hystrix 熔断器demo,监控。
Turbine聚合监控。
eureka-feign-client加熔断器
feign起步依赖自带HyStrix,不用单独引入。
.yml配置文件:
feign:
hystrix:
enabled: true
启动类加注解:
在@FeignClient注解的fallback配置加上快速失败的处理类
@FeignClient(value = "eureka-client",configuration = FeignConfig.class,fallback = HiHystrix.class)
public interface EurekaClientFeign {
@GetMapping(value = "/hi")
String sayHiFromClientEureka(@RequestParam(value = "name") String name);
}
处理类是作为Feign熔断器的逻辑处理类,必须实现被@FeignClient修饰的接口,最后要以Spring bean 的形式注入Ioc容器中。
@Component
public class HiHystrix implements EurekaClientFeign {
@Override
public String sayHiFromClientEureka(String name) {
return "h1,"+name+",sorry,error";
}
}
启动测试:
关闭掉8762端口的模块
可以看到Hystrix生效了
配置Hystrix Dashboard监控熔断器状态
首先要引入起步依赖,虽然这里feign有自带的Hystrix依赖,但不是Hystrix-dashboard的起步依赖。
<!-- 监控熔断器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
.yml配置文件
feign:
hystrix:
enabled: true
hystrix:
dashboard:
proxy-stream-allow-list: "localhost"
启动类加上注解
在配置类中注册一个Servlet
@Bean
public ServletRegistrationBean hystrixMetricsStreamServlet() {
ServletRegistrationBean regist = new ServletRegistrationBean();
regist.setServlet(new HystrixMetricsStreamServlet());
regist.setName("hystrixMetricsStreamServlet");
regist.setLoadOnStartup(1);
regist.addUrlMappings("/hystrix.stream");
return regist;
}
浏览器中输入http://localhost:8765/hystrix.stream
得到熔断器的数据指标。
再输入http://localhost:8765/hystrix 可以看到如下界面。
在界面依次填入http://localhost:8765/hystrix.stream 、2000、 Title随便填。点击Monitor可以进入如下页面
Turbine聚合监控:
在使用Hystrix DashBoard 组件监控服务的熔断器情况时,每个服务都有一个Hystrix Dashboard主页,当服务数量很多时,监控非常的不方便。为了同时监控多个服务的熔断器的状态,所以要有道Turbine聚合多个Hystrix Dashboard,将多个Hystrix Dashboard组件的数据放在一个页面上进行展示,进行集中监控。
新建eureka-monitor-client模块
添加依赖
<!--集中监控Hystrix dashboard-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-turbine</artifactId>
</dependency>
配置好.yml
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
server:
port: 8769
spring:
application:
name: service-turbine
turbine:
aggregator:
cluster-config: default
appConfig: eureka-ribbon-client,eureka-feign-client
cluster-name-expression: new String("default")
combine-host-port: true
instanceUrlSuffix: /hystrix.stream
添加注解
启动eureka-server、eureka-client、eureka-ribbon-client、eureka-feign-client、eureka-monitor-client。
先输入localhost:8764/hystrix 进入以下界面
在输入http://localhost:8769/turbine.stream可以看到下面的页面聚合了eureka-ribbon-client、eureka-feign-client 的Hystrix Dashboard数据
明天的计划:
路由网关zuul,demo。
配置中心 demo。
遇到的问题:
收获:
Hystrix熔断器的简单配置,和监控。
评论