Hystrix学习

发布于:2024-10-09 ⋅ 阅读:(10) ⋅ 点赞:(0)

系列文章目录

JavaSE
基础知识、数据类型学习 万年历项目 代码逻辑训练习题
代码逻辑训练习题 方法、数组学习 图书管理系统项目
面向对象编程:封装、继承、多态学习 封装继承多态习题 常用类、包装类、异常处理机制学习
集合学习 IO流、多线程学习 仓库管理系统JavaSE项目
员工管理系统、多表查询、反射实现DBHelper学习 DML、DDL、数据库对象学习
JavaWeb
网络编程、各种标签、CSS学习 ECMAScript、BOM学习 DOM、jQuery学习
Servlet、JSP、Cookie、Ajax学习 融资管理系统JavaWeb项目
框架
MyBatis框架学习 逆向工程、Spring框架IOC、AOP学习 SpringMVC框架学习
SpringBoot框架学习 招聘网站框架项目 Vue介绍、窗体内操作、窗体间操作学习
Vue路由配置、网络请求访问框架项目、element组件介绍学习 标准管理系统Vue项目
微服务
Linux安装、Nginx反向代理、负载均衡学习 Docker学习 Jenkins学习
Nexus学习 Spring Security学习 RabbitMQ学习
Redis学习 MongoDB学习 MongoDB学习
Nacos学习 Spring Session学习 Spring Gateway学习
JSR 303学习 OpenFeign学习 Dubbo学习
Hystrix学习


前言

本文我们要讲述:
Hystrix
通过网盘分享的文件:SpringSession——OpenFeign.zip
链接: https://pan.baidu.com/s/1uKEYyQ80RGMnDsoa5j9v5Q?pwd=tmm5 提取码: tmm5
在下攸攸太上。


一、Hystrix介绍

Hystrix是一个用于处理分布式系统的延迟和容错的开源库。其主要作用是通过控制服务之间的通讯,从而对延迟和故障提供了强大的支持。

1. Hystrix介绍

Hystrix是一个用于处理分布式系统的延迟和容错的开源库,它的核心目标是防止分布式系统中的雪崩效应。当某个服务发生故障时,故障可能会向下游服务传播,最终导致整个系统的崩溃。Hystrix通过引入熔断器的概念,允许您对延迟和故障进行控制,从而提高系统的弹性和可靠性。

2. Hystrix的作用

熔断:当某个服务出现故障时,Hystrix可以熔断对该服务的请求,防止故障向下游传播,从而减少系统的崩溃风险。
查看微服务请求状态:Hystrix可以提供对微服务请求状态的监控和统计,帮助您了解服务的健康状况和性能表现。

3. Hystrix使用场景

Hystrix主要适用于微服务架构下的场景,特别是在面对高并发和复杂的微服务通信时更为重要。
在高并发和负载下,Hystrix可以帮助应对突发的请求压力,防止因为高负载导致系统崩溃。
根据业务需求,如果对熔断的需求相对简单,可以选择使用Hystrix。但如果需求更为复杂,可以考虑使用Sentinel,Sentinel功能更加丰富,包括限流、熔断等功能。

二、Hystrix代码实现

1. 项目基础

本项目基于OpenFeign的两个项目实现,可以在下面的网盘链接取到
SpringSession——OpenFeign.zip
可以看我之前的OpenFeign学习文章,里面会有介绍

以下更改均在demo-session-01内更改,demo-session-02无需任何改动,如需改动,会特别标出

2. 开启Nacos和Redis环境

docker start nacos
docker start redis-6379

在这里插入图片描述

3. 添加依赖

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

4. 更改项目名(可不更改)

application.properties配置文件内配置了项目名,更改为:

spring.application.name=hystrixdemo

5. 开启注解

在SpringBootMain启动类中

@EnableHystrix

在这里插入图片描述

6. 添加熔断函数

更改UserController类下的info方法,添加infoHystrix方法

    @GetMapping
    @HystrixCommand(fallbackMethod = "infoHystrix") //一旦熔断了,就去执行infoHystrix方法。
    public Result info(){
        UserDto userDto=userService.info();
        return Result.ok().put("data",userDto);
    }
    public Result infoHystrix() {
        return Result.error().setMessage("被熔断了");
    } 

在这里插入图片描述

7. 添加setMessage方法

在Result工具类中,添加setMessage方法

    public Result setMessage(String message){
        this.message = message;
        return this;
    }

8. 添加配置信息

在application.yml配置文件中添加如下配置信息

feign:
  hystrix:
    enabled: true

9. 运行demo-session-01后运行demo-session-02

在这里插入图片描述
关闭demo-session-02项目,刷新页面
在这里插入图片描述

三、仪表盘

1. 添加依赖

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

2. 添加配置类

package com.jjy.config;

import com.netflix.hystrix.contrib.metrics.eventstream.HystrixMetricsStreamServlet;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.servlet.http.HttpServlet;

@Configuration
public class HystrixConfig {

    @Bean
    public ServletRegistrationBean<HttpServlet> httpServletServletRegistrationBean() {
        ServletRegistrationBean<HttpServlet> result = new ServletRegistrationBean<>(new HystrixMetricsStreamServlet());
        result.addUrlMappings("/actuator/hystrix.stream");
        return result;
    }
}

3. 启动类添加注解

SpringBootMain启动类内添加如下注解

@EnableHystrixDashboard

在这里插入图片描述

4. 启动项目、访问网址

先访问项目地址http://127.0.0.1:100/user
在这里插入图片描述
访问http://localhost:100/hystrix,出现如下页面
在这里插入图片描述
长条框中输入http://localhost:100/actuator/hystrix.stream
Delay默认2000ms;
Title随意写。
在这里插入图片描述
点击Monitor Stream按钮后,不断刷新项目http://127.0.0.1:100/user
在这里插入图片描述
关闭demo-session-02项目后,不断刷新项目http://127.0.0.1:100/user
在这里插入图片描述
我们可以访问http://localhost:100/actuator/hystrix.stream,里面是这样的
在这里插入图片描述


总结

本文讲述了:
Hystrix:解决熔断问题
在下攸攸太上,所有扣我的人,我都会诅咒她,三天之内吃米线拉稀。