学习主题:Hystrix
- 解决灾难性雪崩效应-服务熔断-服务熔断处理
- 熔断参数circuitBreaker.enabled的作用是什么?
- 熔断参数circuitBreaker.requestVolumeThreshold的作用是什么?
- 熔断参数circuitBreaker.sleepWindowInMiliseconds的作用是什么?
- 熔断参数circuitBreaker.errorThresholdPercentage的作用是什么?
- 熔断参数circuitBreaker.forceOpen的作用是什么?
- 熔断参数circuitBreaker.forceClosed的作用是什么?
- 解决灾难性雪崩效应-隔离机制-线程池隔离-创建项目
- 什么是线程池隔离?
- 线程池隔离的优点是什么?
- 线程池隔离的缺点是什么?
将多个服务接口同时放到一个线程池中 ,当一个服务并发量急剧增加时 ,线程池会瘫痪,另一个线程也会完蛋
预测哪个服务接口线程并发量大 ,将并发量大的服务接口线程单独拉出来放到另一个线程池中 , 减少服务器的压力,同时这个服务出错时也不会影响其他服务
解决灾难性雪崩效应-隔离机制-线程池隔离-线程池隔离处理
- @HystrixCommand注解中的threadPoolProperties属性的作用是什么?
- @HystrixProperty注解的作用是什么?
- 线程池隔离参数groupKey的作用是什么?
- 线程池隔离参数commandKey的作用是什么?
- 线程池隔离参数threadPoolkey的作用是什么?
- 线程池隔离参数coreSize的作用是什么?
- 线程池隔离参数maxQueueSize的作用是什么?
- 线程池隔离参数queueSizeRejectionThreshold的作用是什么?
- 线程池隔离参数keepAliveTimeMinutes的作用是什么?
- 解决灾难性雪崩效应-隔离机制-信号量隔离-创建项目
- 什么是信号量隔离?
当Consumer发送大量请求到provider时 ,会访问信号量池
- 解决灾难性雪崩效应-隔离机制-信号量隔离-信号量隔离处理
- 信号量隔离参数execution.isolation.strategy的作用是什么?
- 信号量隔离参数execution.isolation.thread.timeoutInMiliseconds的作用是什么?
- 信号量隔离参数execution.isolation.thread.interruptOnTimeout的作用是什么?
- 信号量隔离参数execution.isolation.semaphore.maxConcurrentRequests的作用是什么?
- 信号量隔离参数fallback.isolation.semaphore.maxConcurrentRequests的作用是什么?
- 线程池隔离和信号量隔离的区别
- 线程池隔离与信号量隔离有什么区别?
- 什么情况下使用线程池隔离?
- 什么情况下使用信号量隔离?
- Feign的服务降级处理-创建项目
- Feign的服务降级处理-服务降级处理
- 修改业务层代码,在Feign中配置服务降级。
修改全局配置文件
#Feign默认不开启Hystrix,为false
feign:
hystrix:
enabled: true
接口中指定服务项目名,托底数据类
@FeignClient(name="Ego-Provider-Provider",fallback=ConsumerServiceImplRallback.class)//使用@FeignClient注解 name属性指定服务提供者的应用名
- 启动服务测试效果。
- 服务降级后的异常记录
- 为什么要记录降级后的异常信息。
在使用Feign的开发过程中 ,出现了托底数据 ,
可以通过这种方式获取异常的相关信息 ,帮助我们解决异常
- 在项目中开启可视化的数据监控Hystrix-dashboard
- 什么是Hystrix-dashboard?
- @EnableHystrix注解的作用是什么?
- @EnableHystrixDashboard注解的作用是什么?
Hystrix-dashboard 是一款针对 Hystrix 进行实时监控的工具,通过 Hystrix Dashboard 我们可以在直观地看到各 Hystrix Command 的请求响应时间, 请求成功率等数据。
@EnableHystrix 开启数据监控
@EnableHystrixDashboard 开启图形化界面
- 搭建Hystrix-dashboard数据监控中心
- 创建数据监控中心服务。
- 修改POM文件,添加actuator启动器,添加hystrix启动器、hystrix-dashboard启动器。
- 需改启动类添加开启Hystrix与HystrixDashboard。
- 按照启动顺序启动服务。
- 访问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/
- 创建Turbine聚合服务器
- Turbine的作用是什么?
- @EnableTurbine注解的作用是什么?
Turbine对监控服务做了聚合 ,但是仍需要依赖Dashboard
@EnableTurbine:开启聚合服务
- 使用Turbine对多个服务进行监控
- Turbine默认监听端口是多少?
- @EnableHystrixDashboard注解的作用是什么?
8080
@EnableHystrixDashboard:开启数据监控的图形化界面
- 使用Turbine监控集群
- 通过Turbine查看集群监