Hystrix断路器、Hystrix Dashboard仪表盘、压力测试工具ab

本文介绍了Hystrix断路器的降级、熔断配置及超时设置,讲解了如何利用Hystrix Dashboard进行监控,并提到了利用Apache的ab工具进行压力测试。通过Hystrix实现服务容错,防止雪崩效应,并通过监控和压力测试确保系统稳定性。
摘要由CSDN通过智能技术生成

一、Hystrix断路器

  • https://github.com/Netflix/Hystrix/wiki
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

微服务宕机时,ribbon 无法转发请求
Hystrix断路器:系统容错工具----核心功能:降级、熔断

1、Hystrix降级

降级:调用远程服务失败(异常、超时、服务不存在),可以通过执行当前服务中的一段代码来向客户端发回响应

1.1、降级响应:根据具体情况来定

(1)错误提示
(2)返回缓存数据,有数据,redis
超时:快速失败(可设置超时时间,到时间直接降级返回),及时后台服务故障,也要让客户端尽快得到错误提示,而不能让客户端等待。

1.2、添加降级

  • 1、添加 Hystrix 依赖
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
# 配置允许监控的主机地址
hystrix:
  dashboard:
    proxy-stream-allow-list: localhost
  • 2、启动类添加 @EnableCircuitBreaker
  • 3、添加降级代码
    在远程调用方法上添加:
    @HystrixCommand(fallbackMethod=“降级方法方法名”) – 自动跳转到另一个方法去执行
    完成降级方法,返回降级响应,降级错误提示。
  • 超时:等待响应,时长:默认是1000ms=1s
  • ribbon的重试可继续执行,单发送不了客户端,执行成功的结果无效,原因:一次请求,一次响应。

1.3、Hystrix超时

默认1秒超时,执行降级

如果配置了ribbon重试,重试还会继续执行,最终重试结果无效

Hystrix超时 >= Ribbon 总的超时时长

hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 500   # 默认是1000

2、Hystrix熔断

  • 1、当请求量增大、出现过多错误,hystrix可以和后台服务断开连接(过热保护/跳闸)
  • 2、可以避免雪崩效应、故障传播
  • 3、限流措施:流量过大时造成服务故障,可以断开服务,降低它的流量
  • 4、在特定条件下会自动触发熔断
    (1)10秒内20次请求(必须首先满足),10秒时间口,参数可以更改
    (2)50%出错,执行了降级代码
    (3)半开状态 – 可以自动恢复,:断路器打开几秒后进入半开状态,尝试发送请求,若成功则自动关闭断路器,恢复正常;若失败则保持打开状态几秒钟,继续执行。
  • 5、半开状态下可以自动恢复
    断路器打开几秒后,进入半开状态,尝试发送请求,
    • 如果请求成功自动关闭断路器恢复正常
    • 如果请求失败,再保持打开状态几秒钟

3、Hystrix配置

  • hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds
    请求超时时间,超时后触发失败降级

  • hystrix.command.default.circuitBreaker.requestVolumeThreshold
    10秒内请求数量,默认20,如果没有达到该数量,即使请求全部失败,也不会触发断路器打开

  • hystrix.command.default.circuitBreaker.errorThresholdPercentage
    失败请求百分比,达到该比例则触发断路器打开

  • hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds
    断路器打开多长时间后,再次允许尝试访问(半开),仍失败则继续保持打开状态,如成功访问则关闭断路器,默认 5000

二、hystrix dashboard 断路器仪表盘

在这里插入图片描述
在这里插入图片描述
hystrix dashboard:Hystrix监控仪表盘,监控 Hystrix 降级和熔断的错误信息;hystrix 对请求的降级和熔断,可以产生监控信息,hystrix dashboard可以实时的进行监控

1、actuator

1.1、介绍

springboot 提供的项目监控工具,提供了多种项目的监控数据(默认)

  • 健康状态
  • 系统环境
  • beans - spring容器中所有的对象
  • mappings - spring mvc 所有映射的路径

hystrix在actuator中,添加了自己的监控数据
在这里插入图片描述

1.2、添加actuator

(1)添加 actuator 依赖
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
(2)yml 配置暴露监控信息

m.e.w.e.i="*" - 暴露所有监控
m.e.w.e.i=[“health”, “beans”, “mappings”]
m.e.w.e.i=beans

management:
  endpoints:
    web:
      exposure:
        include: hystrix.stream # "*"
        # - beans
        # - env
(3)访问:http://主机+端口号/actuator/

1.3、搭建 Hystrix Dashboard(仪表盘)

在这里插入图片描述
Hystrix Dashboard:完全独立的项目,不用注册和连接注册中心

(1)添加Hystrix Dashboard 依赖
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
(2)yml配置,配置端口
hystrix:
  dashboard:
    proxy-stream-allow-list: localhost
(3)添加 @EnableHystrixDashboard,@EnableDiscoveryClient
(4)访问:http://xxx/hystrix

在输入框中:填写要监控(监控端点)的数据路径
eg:http://localhost:3001/actuator/hystrix.stream
在这里插入图片描述
填入 hystrix 的监控端点,开启监控

  • http://localhost:3001/actuator/hystrix.stream
    在这里插入图片描述
  • 通过 hystrix 访问服务多次,观察监控信息
    在这里插入图片描述
    在这里插入图片描述
    cluster–集群;circuit–电路
(5)hystrix 熔断

整个链路达到一定的阈值,默认情况下,10秒内产生超过20次请求,则符合第一个条件。
满足第一个条件的情况下,如果请求的错误百分比大于阈值,则会打开断路器,默认为50%
Hystrix的逻辑,先判断是否满足第一个条件,再判断第二个条件,如果两个条件都满足,则会开启断路器

断路器打开 5 秒后,会处于半开状态,会尝试转发请求,如果仍然失败,保持打开状态,如果成功,则关闭断路器

1.4、压力测试工具:apach的并发访问测试工具ab

http://httpd.apache.org/docs/current/platform/windows.html#down

在这里插入图片描述

  • 用 ab 工具,以并发50次,来发送20000个请求
ab -n 20000 -c 50 http://localhost:3001/item-service/35
  • 断路器状态为 Open,所有请求会被短路,直接降级执行 fallback 方法
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值