SpringCloud hystrix断路器与局部降级全面介绍

yizhihongxing

SpringCloud Hystrix断路器与局部降级全面介绍

什么是Hystrix断路器

  • Hystrix是Netflix发布的一款容错框架,用于处理分布式系统的延迟和容错问题。Hystrix在整合了SpringCloud项目之后,是同步、异步请求的断路器。
  • 断路器是对延迟和故障的容错,当请求后端服务出现链路故障、返回超时等,断路器会直接断开请求链路,避免系统被拖垮,同时还可以提供基于失败率的自动降级功能。

Hystrix使用步骤

  1. maven配置:

xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

  1. 启动类加上注解@EnableCircuitBreaker

Hystrix核心组件

  1. 服务监控和容错的实现

  2. 注解@HystrixCommand:该注解对该方法创建了熔断器的功能,并指定了fallbackMethod熔断方法,当该方法发生异常时,会执行fallbackMethod指定的方法。

```java
@GetMapping("/hello")
@HystrixCommand(fallbackMethod = "fallback") //指定熔断方法
public String sayHello(@RequestParam String name){
restTemplate.getForObject("http://service-provider/hello?name=" + name,String.class);
}

//服务熔断后执行的方法
public String fallback(String name){
return "fallback: " + name;
}
```

  1. 监控仪表盘Hystrix Dashboard

  2. maven配置

xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>

  • 启动类上添加注解@EnableHystrixDashboard

Hystrix局部降级

如果只想让某些服务降级,可以通过配置文件设置Hystrix的默认降级处理逻辑,实现局部降级。

hystrix:
  command:
    #服务降级
    default:
      fallback.enabled: true
      fallback.method.name: error

如上面的配置,表示默认开启服务降级,fallback处理降级的情况。fallback处理方法名字为error,对应的方法需要在业务层面实现。

示例一

在微服务架构中A服务需要依赖B服务的接口,B服务是一个不稳定服务,经常出现请求超时错误,容易导致服务雪崩。使用Hystrix实现服务降级,避免因B服务错误导致A服务不可用。

  1. 在A服务调用B服务接口的方法上添加@HystrixCommand注解,并指定fallbackMethod处理降级情况。

```java
@GetMapping("/test")
@HystrixCommand(fallbackMethod = "fallback")
public String test(){
ResponseEntity result = restTemplate.getForEntity("http://service-b/hello", String.class);
return result.getBody();
}

//服务降级后处理的方法
public String fallback(){
return "Hello World from Service A -Fallback";
}
```

  1. 访问http://localhost:8080/test,此时因B服务未启动或接口超时,会执行降级方法,返回“Hello World from Service A -Fallback”。

  2. 控制台输出系统异常信息,正常情况下不应该出现服务A接口调用失败的信息。

示例二

当某个服务的某个方法不可用时,仅对该方法进行降级处理。

  1. 设置Hystrix默认降级处理策略,添加如下配置:

yaml
hystrix:
command:
default:
fallback.enabled: false

  1. 在需要降级处理的方法上添加@HystrixCommand注解,并设置对异常退回的处理方式,如下:

```java
@HystrixCommand(fallbackMethod="getFallback")
public User getUserById(String id) {
return restTemplate.getForObject("http://USER-SERVICE/user/{id}",User.class,id);
}

private User getFallback(String id) {
User user = new User();
user.setId(-1L);
user.setName("Default User");
return user;
}
```

如上面的代码,当getUserById方法调用异常,将会执行getFallback方法实现局部降级。

以上就是关于SpringCloud Hystrix断路器与局部降级的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringCloud hystrix断路器与局部降级全面介绍 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • 使用Django简单编写一个XSS平台的方法步骤

    下面是使用 Django 简单编写一个 XSS 平台的方法步骤: 1. Django 项目的基本设置 首先,需要创建一个 Django 项目。在终端输入以下命令: django-admin startproject XssPlatform 这将会创建一个名为 XssPlatform 的 Django 项目。接下来,切换到该项目的根目录下并执行以下命令创建一些…

    人工智能概论 2023年5月25日
    00
  • Java操作MongoDB插入数据进行模糊查询与in查询功能

    Java操作MongoDB插入数据进行模糊查询与in查询功能 MongoDB是一种文档数据库,它支持面向文档的数据建模方式,这使得它非常适合于处理非结构化和半结构化数据。MongoDB使用BSON(Binary JSON)格式存储数据,它也支持查询数据和创建索引等操作。 在Java中使用MongoDB非常容易,我们只需要使用Java驱动程序即可。这里将介绍如…

    人工智能概论 2023年5月25日
    00
  • python使用Flask框架获取用户IP地址的方法

    当我们使用Python编写Web应用程序时,常常需要获取用户的IP地址。使用Flask框架获取用户的IP地址可以通过以下步骤实现: 导入request库。我们可以通过request库的remote_addr属性获取用户的IP地址。remote_addr是request对象的一个属性,它包含了请求方的IP地址。 使用request.remote_addr获取I…

    人工智能概论 2023年5月25日
    00
  • django xadmin 管理器常用显示设置方式

    下面是关于“django xadmin 管理器常用显示设置方式”的完整攻略。 1. 常用显示设置方式 在django xadmin管理器中,我们可以通过定义ModelAdmin类的属性来进行各种自定义的显示设置。比较常用的属性如下: 1.1 list_editable list_editable属性可以使得在列表页中可以直接编辑某些字段,主要用于录入数据较多…

    人工智能概览 2023年5月25日
    00
  • OpenCV中Grabcut算法的具体使用

    OpenCV中Grabcut算法是一种基于图像分割的算法,通常用于将图像中的前景和背景分离。本篇文章将分为以下几个部分,分别介绍使用OpenCV中Grabcut算法实现图像分割的流程以及对应的代码实现。 1. 环境搭建 在使用Grabcut算法之前,我们需要搭建OpenCV的开发环境。具体可以参考以下文档: 环境搭建文档链接 2. Grabcut算法流程 实…

    人工智能概论 2023年5月24日
    00
  • nginx目录路径重定向的方法

    下面我将为您详细讲解“nginx目录路径重定向的方法”的完整攻略。 1. 配置nginx 首先需要在nginx的配置文件中添加一个location来实现路径重定向,可以使用vim等编辑器打开nginx配置文件,一般默认路径为/etc/nginx/nginx.conf,在http或server模块中添加以下代码: location /old_path/ { r…

    人工智能概览 2023年5月25日
    00
  • 部署django项目安装uwsgi出错的解决方法总结

    下面是详细讲解“部署django项目安装uwsgi出错的解决方法总结”的完整攻略。 部署django项目安装uwsgi出错的解决方法总结 1. 安装uwsgi时出现的错误 在对Django项目进行部署时,常常需要使用到uwsgi,但是在安装时可能会出现以下错误: Command "/usr/local/bin/python3.6 -u -c &qu…

    人工智能概览 2023年5月25日
    00
  • 详解SpringBoot通用配置文件(不定时更新)

    详解Spring Boot通用配置文件 1. 前言 在开发基于Spring Boot框架的应用时,通用配置文件是必不可少的。通过通用配置文件,我们可以方便的管理应用所需的基础配置信息,例如数据库连接配置、日志配置、缓存配置等。Spring Boot提供了强大的配置文件管理功能,支持多种配置文件格式,例如Properties和YAML。本文将详细讲解Sprin…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部