SpringCloud-Hystrix的理解与应用

前言

在微服务架构中,每个单元单独部署,服务之间远程调用,实现信息交互,那么问题来了!

当A服务调用B服务时响应太慢或者由于因为网络故障造成延迟或调用失败会怎样?

大量请求到达,请求堆积,导致电耗用者线程挂起,从而引发调用者也无法响应发生故障,以此类推,可能会导致整个微服务系统瘫痪

为了解决这种问题,微服务架构中引入一种叫做熔断器的服务保护机制

SpringCloud Hystrix实现了熔断器,线程隔离等一系列服务保护机制,它具备服务降级,服务熔断,线程和信号隔离,请求缓存,请求合并以及服务监控等强大的功能

Hystrix服务熔断

1.添加依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-hystrix</artifactId>
    <version>1.2.5.RELEASE</version>
</dependency>
2.消费者服务引导类添加@EnableCircuitBreaker开启断路器

在这里插入图片描述

3.消费者服务方法添加注解设置回调方法

在这里插入图片描述

4.Hystrix默认超时时间是1000毫秒,响应超过此时间就会触发断路器,可通过配置默认时间

在这里插入图片描述

Hystrix服务降级

解释一下: 当服务熔断之后,提供的服务不会再被调用,由调用方自行设置回调代表服务返回

Hystrix异常处理

当调用方或者被调用方出现异常也会触发熔断,并且通过Throwable可获取异常参数信息
在这里插入图片描述
问题来了
如果我不想服务降级处理,而是想把异常直接抛给用户怎么办呢?

在@HystrixCommand中添加参数忽略异常,如下图

在这里插入图片描述

Hystrix自定义请求服务熔断

1.定义一个类继承HystrixCommand,如下图
在这里插入图片描述
2.消费者服务方法如下
在这里插入图片描述

3.测试(略)

Hystrix自定义请求同步与异步调用

在这里插入图片描述

Hystrix仪表盘监控

解释一下: 监控Hystrix的实时运行状态,看到Hystrix的各项指标信息,从而快速发现系统问题并解决

为其单独创建一个服务

1.创建工程,添加依赖
<!--仪表盘功能起步依赖-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
        <version>1.4.5.RELEASE</version>
    </dependency>
2.引导类添加注解@EnableHystrixDashboard

在这里插入图片描述

3.添加配置文件,搭建完成后如下图

在这里插入图片描述

4.查看访问

在这里插入图片描述

5.在需要监控的服务添加依赖
<!--服务监控依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <!--hystrix熔断器起步依赖-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-hystrix</artifactId>
        <version>1.4.4.RELEASE</version>
    </dependency>
6.配置文件添加权限
#springboot的监控端点访问权限,*表示全部可以访问
management.endpoints.web.exposure.include=*
7.启动注册中心服务,消费者服务和仪表盘服务

先访问消费者服务下面任意接口(否则一直打印ping),再访问http://localhost:9002/actuator/hystrix.stream
在这里插入图片描述

8.访问仪表盘服务

在这里插入图片描述

9.仪表盘监控数据解读

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/mrhs_dhls/article/details/107887120