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

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类的端口访问中,填入数据访问的地址。就可以实现单一/多个微服的监测功能。

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值