Hystrix简介
- 借鉴博客1:https://blog.csdn.net/qq_40603010/article/details/109165857
- 借鉴博客2:https://blog.csdn.net/qq_43672652/article/details/108453456
1. 什么是Hystrix?作用?
- Hystrix,是一种保护机制,是Netflix开源的一个延迟和容错库。
- 用于隔离访问远程服务、第三方库,防止出现级联失败。
- 官网:https://github.com/Netflix/Hystrix/
2. 服务雪崩
- 微服务中,服务间调用关系错综复杂,一个请求可能需要调用多个微服务接口才能实现,会形成非常复杂的调用链路。
- 服务器支持的线程和并发数有限,请求一直阻塞,会导致服务器资源耗尽,从而导致所有其它服务都不可用,形成雪崩效应。
3. Hystrix中几个重要概念
-
服务降级:
-
服务器忙碌或者网络拥堵时,为了提高用户体验,在用户等待的同时,会返回一个友好提示,fallback(备选方案)
-
-
服务熔断:
-
应对雪崩效应的一种微服务链路保护机制。
-
当扇出链路的某个微服务出错不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回错误的响应信息。
-
当检测到该节点微服务调用响应正常后,恢复调用链路。
- 服务限流:
4. Hystrix案例
- 创建服务提供者模块(cloud-provider-hystrix-layment8001)
- pom.xml文件添加依赖
<dependencies>
<!--eureka-client-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
<groupId>com.krisswen.cloud</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
- 编写配置文件
server:
port: 8001
spring:
application:
name: cloud-payment-service #服务名称
eureka:
client:
# 注册进 Eureka 的服务中心
register-with-eureka: true
# 检索 服务中心 的其它服务
fetch-registry: true
service-url:
# 设置与 Eureka Server 交互的地址
defaultZone: http