系列文章目录
文章目录
前言
本文我们要讲述:
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:解决熔断问题
在下攸攸太上,所有扣我的人,我都会诅咒她,三天之内吃米线拉稀。