系列文章目录
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学习 | Hystrix学习 |
文章目录
- 系列文章目录
- 前言
- 一、Hystrix介绍
- 1. Hystrix介绍
- 2. Hystrix的作用
- 3. Hystrix使用场景
- 二、Hystrix代码实现
- 1. 项目基础
- 2. 开启Nacos和Redis环境
- 3. 添加依赖
- 4. 更改项目名(可不更改)
- 5. 开启注解
- 6. 添加熔断函数
- 7. 添加setMessage方法
- 8. 添加配置信息
- 9. 运行demo-session-01后运行demo-session-02
- 三、仪表盘
- 1. 添加依赖
- 2. 添加配置类
- 3. 启动类添加注解
- 4. 启动项目、访问网址
- 总结
前言
本文我们要讲述:
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:解决熔断问题
在下攸攸太上,所有扣我的人,我都会诅咒她,三天之内吃米线拉稀。