hystrix熔断和降级的区别_Hystrix学习

学习主题:Hystrix

  1. 解决灾难性雪崩效应-服务熔断-服务熔断处理
    1. 熔断参数circuitBreaker.enabled的作用是什么?
    2. 熔断参数circuitBreaker.requestVolumeThreshold的作用是什么?
    3. 熔断参数circuitBreaker.sleepWindowInMiliseconds的作用是什么?
    4. 熔断参数circuitBreaker.errorThresholdPercentage的作用是什么?
    5. 熔断参数circuitBreaker.forceOpen的作用是什么?
    6. 熔断参数circuitBreaker.forceClosed的作用是什么?

f085c521e26261235acac95a295c2dcd.png
  1. 解决灾难性雪崩效应-隔离机制-线程池隔离-创建项目
    1. 什么是线程池隔离?
    2. 线程池隔离的优点是什么?
    3. 线程池隔离的缺点是什么?

将多个服务接口同时放到一个线程池中 ,当一个服务并发量急剧增加时 ,线程池会瘫痪,另一个线程也会完蛋

预测哪个服务接口线程并发量大 ,将并发量大的服务接口线程单独拉出来放到另一个线程池中 , 减少服务器的压力,同时这个服务出错时也不会影响其他服务

d1f63f8980a7197d096f7f83c5cdc671.png

解决灾难性雪崩效应-隔离机制-线程池隔离-线程池隔离处理

    1. @HystrixCommand注解中的threadPoolProperties属性的作用是什么?
    2. @HystrixProperty注解的作用是什么?
    3. 线程池隔离参数groupKey的作用是什么?
    4. 线程池隔离参数commandKey的作用是什么?
    5. 线程池隔离参数threadPoolkey的作用是什么?
    6. 线程池隔离参数coreSize的作用是什么?
    7. 线程池隔离参数maxQueueSize的作用是什么?
    8. 线程池隔离参数queueSizeRejectionThreshold的作用是什么?
    9. 线程池隔离参数keepAliveTimeMinutes的作用是什么?

a95a057406800969b1944201a4b8d70c.png
  1. 解决灾难性雪崩效应-隔离机制-信号量隔离-创建项目
    1. 什么是信号量隔离?

当Consumer发送大量请求到provider时 ,会访问信号量池

  1. 解决灾难性雪崩效应-隔离机制-信号量隔离-信号量隔离处理
    1. 信号量隔离参数execution.isolation.strategy的作用是什么?
    2. 信号量隔离参数execution.isolation.thread.timeoutInMiliseconds的作用是什么?
    3. 信号量隔离参数execution.isolation.thread.interruptOnTimeout的作用是什么?
    4. 信号量隔离参数execution.isolation.semaphore.maxConcurrentRequests的作用是什么?
    5. 信号量隔离参数fallback.isolation.semaphore.maxConcurrentRequests的作用是什么?

9fbc5b496dd889f21424602f72e33399.png
  1. 线程池隔离和信号量隔离的区别
    1. 线程池隔离与信号量隔离有什么区别?
    2. 什么情况下使用线程池隔离?
    3. 什么情况下使用信号量隔离?

fa8762dca6f946dc342b0d27559e6beb.png

3604ea277a987f523bf55b4c35995f44.png

93bc98ab53fce5c611d970b8c678a2f2.png
  1. Feign的服务降级处理-创建项目
  2. Feign的服务降级处理-服务降级处理
    1. 修改业务层代码,在Feign中配置服务降级。

修改全局配置文件

#Feign默认不开启Hystrix,为false

feign:

hystrix:

enabled: true

接口中指定服务项目名,托底数据类

@FeignClient(name="Ego-Provider-Provider",fallback=ConsumerServiceImplRallback.class)//使用@FeignClient注解 name属性指定服务提供者的应用名

  1. 启动服务测试效果。

aeeaff38129c5ecf9efe2f9104c74843.png
  1. 服务降级后的异常记录
    1. 为什么要记录降级后的异常信息。

在使用Feign的开发过程中 ,出现了托底数据 ,

可以通过这种方式获取异常的相关信息 ,帮助我们解决异常

  1. 在项目中开启可视化的数据监控Hystrix-dashboard
    1. 什么是Hystrix-dashboard?
    2. @EnableHystrix注解的作用是什么?
    3. @EnableHystrixDashboard注解的作用是什么?

Hystrix-dashboard 是一款针对 Hystrix 进行实时监控的工具,通过 Hystrix Dashboard 我们可以在直观地看到各 Hystrix Command 的请求响应时间, 请求成功率等数据。

@EnableHystrix 开启数据监控

@EnableHystrixDashboard 开启图形化界面

  1. 搭建Hystrix-dashboard数据监控中心
    1. 创建数据监控中心服务。
    2. 修改POM文件,添加actuator启动器,添加hystrix启动器、hystrix-dashboard启动器。
    3. 需改启动类添加开启Hystrix与HystrixDashboard。
    4. 按照启动顺序启动服务。
    5. 访问HystrixDashboard服务,查看数据。

server:

port: 9999

spring:

application:

name: Eureka-Consumer-Ribbon-DashBoard-view

#可有可无,添加Eureka的目的是方便管理服务

eureka:

client:

serviceUrl:

defaultZone: http://admin:admin@eureka1:8761/eureka/,http://admin:admin@eureka2:8761/eureka/

b4b761aef8004ad462837233b562ae29.png
  1. 创建Turbine聚合服务器
    1. Turbine的作用是什么?
    2. @EnableTurbine注解的作用是什么?

Turbine对监控服务做了聚合 ,但是仍需要依赖Dashboard

@EnableTurbine:开启聚合服务

  1. 使用Turbine对多个服务进行监控
  2. Turbine默认监听端口是多少?
  3. @EnableHystrixDashboard注解的作用是什么?

8080

@EnableHystrixDashboard:开启数据监控的图形化界面

  1. 使用Turbine监控集群
    1. 通过Turbine查看集群监

ea2ddc58781299dc66bd15485f3bc14b.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Cloud Hystrix是一个开源的熔断器框架,它能够帮助开发者有效地处理服务依赖中的延迟和故障。熔断器的主要目的是在出现故障时提供一种优雅的降级机制,以避免整个系统的崩溃。 熔断降级Hystrix中两个重要的概念。 熔断(Circuit Breaker)指的是在服务出现故障或错误率过高时,自动地切换到指定的备用服务或返回事先定义好的错误结果,起到保护系统免受故障传播的影响的作用。当服务不可用或响应时间过长时,熔断器会打开,拒绝后续请求的访问,并尝试通过执行降级逻辑来快速响应客户端。一旦后续请求不再出现故障,熔断器将会进入半开状态,允许少量的请求通过以检测服务是否恢复正常。 降级(Degradation)指的是在系统资源不足或者高访问量时,服务降级会关闭一些不重要的功能,以保证系统核心功能的可用性和稳定性。降级可以通过阻止非必要的调用、减少资源的消耗以及返回默认值或缓存结果来实现。降级需要提前定义好一些备用的逻辑,一旦系统资源紧张,就可以立即启用降级逻辑来保障系统的可用性。 总而言之,熔断降级都是为了保护系统免受故障的影响。熔断主要是针对服务故障和错误率过高的情况,通过切换到备用服务或返回错误结果来保护系统。降级主要是在系统资源紧张或高访问量的情况下,关闭一些不重要的功能来保证核心功能的可用性和稳定性。两者都是通过提前定义备用逻辑来保障系统的正常运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值