发表于: 2020-09-20 20:17:14

1 1306


今天完成的事:

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熔断器的简单配置,和监控。


返回列表 返回列表
评论

    分享到