Hystrix(容错处理机制)的使用

版权声明:欢迎技术爱好者前来讨论,转载请标明出处.谢谢 https://blog.csdn.net/qq_42875051 https://blog.csdn.net/qq_42875051/article/details/88737206

Hystrix提供了熔断、隔离、Fallback、cache、监控等功能。

FallBack(回退):

Hystrix在使用过程中最简单的一种实现方式就是通过fallback机制进行备份访问。

在接口类里面配置fallback属性:

对应的类为此接口的实现类

package com.example.client.client;



import entity.User;

import org.springframework.stereotype.Component;



@Component   //为了使spring能够识别此类

public class UserFeignClientFallback implements UserFeignClient {



    @Override

    public String hello() {

        return "这个就是备份的hello!";

    }



    @Override

    public boolean checkuser(String userName, String userPwd) {

        return false;

    }



    @Override

    public Object checkuser(User user) {

        return "这个是备份的checkuser!";

    }

}

配置文件里面需要配置容错库的使用:

feign:

  hystrix:

    enabled: true

这样的话,当服务端崩掉或者不能访问的时候就会自动的映射到这个接口的实现类上面,调取实现类里面的方法。

监控:(HystrixDashboard   Turbine

1、首先需要一个独立的hystrix服务端口进行可视化监控。

创建一个springboot项目,创建的过程中需要集成:

<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</artifactId>   关键组件

</dependency>

<dependency>

    <groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>  有仪表盘的意思,可视化工具

</dependency>

启动类里面添加注解:@EnableHystrixDashboard

package com.example.hystrix;



import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;



@SpringBootApplication

@EnableHystrixDashboard

public class HystrixApplication {



    public static void main(String[] args) {

        SpringApplication.run(HystrixApplication.class, args);

    }



}

配置文件中添加:定义端口号。

server:

  port: 5014



spring:

  application:

    name: hystrixboard

创建的这个可视化窗口是用来处理数据的一个工具。具体的数据是由具体页面提供的,例如实现了hystrix的类,或者进行监控端口活动的turbine类。提供的是一个json数据。

2、通过实现添加一个注解:@EnableCircuitBreaker实现对该端口的数据访问监控。

package com.example.client;



import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;

import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

import org.springframework.cloud.netflix.feign.EnableFeignClients;



@SpringBootApplication

@EnableEurekaClient

@EnableFeignClients

@EnableCircuitBreaker

public class ClientApplication2 {



    public static void main(String[] args) {

        SpringApplication.run(ClientApplication2.class, args);

    }



}

通过client的端口号+/hystrix.stream 进行监控该端口的信息访问。

3、通过Turbine 方法实现监控。

首先创建一个turbine项目,添加插件turbine 、hystrix、eureka discovery、actuator.

<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</artifactId>

</dependency>

<dependency>

    <groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>

</dependency>

<dependency>

    <groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-starter-netflix-turbine</artifactId>

</dependency>

启动类添加注解:@EnableTurbine

package com.example.turbine;



import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.netflix.turbine.EnableTurbine;



@SpringBootApplication

@EnableTurbine

public class TurbineApplication {



    public static void main(String[] args) {

        SpringApplication.run(TurbineApplication.class, args);

    }



}

配置文件添加:

server:

  port: 5050



spring:

  application:

    name: turbinserver



eureka:

  client:

    service-url:

      defaultZone: http://localhost:5001/eureka

  instance:

    prefer-ip-address: true



turbine:

  cluster-name-expression: "'default'"

  combine-host-port: true

  app-config: user,user2   这个是检测端口的注册名称

然后通过turbine端口的/turbine.stream地址进行数据的访问,获得json数据。

最后:在可视化窗口的hystrix类的端口访问中,填入数据访问的地址。就可以实现单一/多个微服的监测功能。

猜你喜欢

转载自blog.csdn.net/qq_42875051/article/details/88737206