学习主题:Hystrix
学习目标:
1.解决灾难性雪崩效应-服务熔断-服务熔断处理
(1)熔断参数circuitBreaker.enabled的作用是什么?
是否开启熔断
(2)熔断参数circuitBreaker.requestVolumeThreshold的作用是什么?
一个统计窗口内熔断触发的最小个数/10s
(3)熔断参数circuitBreaker.sleepWindowInMiliseconds的作用是什么?
熔断多少秒后去尝试请求
(4)熔断参数circuitBreaker.errorThresholdPercentage的作用是什么?
失败率达到多少百分比后熔断
(5)熔断参数circuitBreaker.forceOpen的作用是什么?
是否强制开启熔断
(6)熔断参数circuitBreaker.forceClosed的作用是什么?
是否强制关闭熔断
2.解决灾难性雪崩效应-隔离机制-线程池隔离-创建项目
(1)什么是线程池隔离?
是一种依赖隔离技术
(2)线程池隔离的优点是什么?
1、用用线程池隔离可以完全隔离依赖的服务,请求线程县城可以快速放回;
2、当线程池出现问题时,线程池隔离是独立的,不会影响其他服务和接口;
3、当失败的服务再次变得可用时,线程池将清理并可立即回复,而不需要一个长时间的恢复;
4、独立的线程池提高了并发性。
(3)线程池隔离的缺点是什么?
线程池隔离的主要确定是他们增加计算开销(CPU)。每个命令的执行涉及到排队、调用度和上下文切换都是在一个单独的线程上运行的。
3.解决灾难性雪崩效应-隔离机制-线程池隔离-线程池隔离处理
(1)@HystrixCommand注解中的threadPoolProperties属性的作用是什么?
对线程池进行配置
(2)@HystrixProperty注解的作用是什么?
线程池配置中的每个小项
(3)线程池隔离参数groupKey的作用是什么?
服务名(相同服务用一个名称,如商品、用户等)
(4)线程池隔离参数commandKey的作用是什么?
接口(服务下面的接口,如果购买商品)
(5)线程池隔离参数threadPoolkey的作用是什么?
线程池的名称:配置全局唯一标识线程池的名称,相同线程池名称的线程池是同一个;
(6)线程池隔离参数coreSize的作用是什么?
线程池大小,这是最大的并发执行数量
(7)线程池隔离参数maxQueueSize的作用是什么?
最大队列长度,设置BlockingQueue的最大长度
(8)线程池隔离参数queueSizeRejectionThreshold的作用是什么?
拒绝请求,设置拒绝请求的临界值
(9)线程池隔离参数keepAliveTimeMinutes的作用是什么?
线程存活时间,设置存活时间,单位分钟
4.解决灾难性雪崩效应-隔离机制-信号量隔离-创建项目
(1)什么是信号量隔离?
5.解决灾难性雪崩效应-隔离机制-信号量隔离-信号量隔离处理
(1)信号量隔离参数execution.isolation.strategy的作用是什么?
隔离策略配置项,有thread和semaphore两种
(2)信号量隔离参数execution.isolation.thread.timeoutInMiliseconds的作用是什么?
超时时间,在thread模式下,达到超时时间,自动中断,在semaphore模式下,会等待执行完成后,再去判断是否超时
(3)信号量隔离参数execution.isolation.thread.interruptOnTimeout的作用是什么?
是否打开超时线程中断,thread模式有效
(4)信号量隔离参数execution.isolation.semaphore.maxConcurrentRequests的作用是什么?
信号量最大并发度,semaphore模式有效
(5)信号量隔离参数fallback.isolation.semaphore.maxConcurrentRequests的作用是什么?
fallback最大并发度,semaphore模式有效
6.线程池隔离和信号量隔离的区别
(1)线程池隔离与信号量隔离有什么区别?
(2)什么情况下使用线程池隔离?
请求并发量大,并且耗时长(请求耗时长一般是计算量大,或读数据库):采用线程隔离策略,这样的话,可以保证大量的容器(tomcat)线程可用,不会由于服务原因,一直处于阻塞或等待状态,快速失败返回。
(3)什么情况下使用信号量隔离?
请求并发量大,并且耗时短(请求耗时短可能是计算量小,或读缓存),采用信号量隔离策略,因为这类服务的返回通常会非常的快,不会占用容器线程太长时间,而且也减少了线程切换的一些开销,提高了缓存服务的效率。
7.Feign的服务降级处理-创建项目
8.Feign的服务降级处理-服务降级处理
(1)修改业务层代码,在Feign中配置服务降级。
(2)启动服务测试效果。
9.服务降级后的异常记录
(1)为什么要记录降级后的异常信息。
服务降级代表provider有问题,所以要记录看异常
10.在项目中开启可视化的数据监控Hystrix-dashboard
(1)什么是Hystrix-dashboard?
Hystrix-dashboard 是一款针对 Hystrix 进行实时监控的工具,通过 HystrixDashboard 我们可以在直观地看到各 Hystrix Command 的请求响应时间, 请求成功率等数据。
(2)@EnableHystrix注解的作用是什么?
开启Hystrix
(3)@EnableHystrixDashboard注解的作用是什么?
开启HystrixDashboard
11.搭建Hystrix-dashboard数据监控中心
(1)创建数据监控中心服务。
(2)修改POM文件,添加actuator启动器,添加hystrix启动器、hystrix-dashboard启动器。
(3)需改启动类添加开启Hystrix与HystrixDashboard。
(4)按照启动顺序启动服务。
(5)访问HystrixDashboard服务,查看数据。
12.创建Turbine聚合服务器
(1)Turbine的作用是什么?
Turbine 是聚合服务器发送事件流数据的一个工具,hystrix 的监控中,只能监控单个节点,实际生产中都为集群,因此可以通过turbine 来监控集群服务。
(2)@EnableTurbine注解的作用是什么?
开启Turbine服务
13.使用Turbine对多个服务进行监控
(1)Turbine默认监听端口是多少?
(2)@EnableHystrixDashboard注解的作用是什么?
开启HystrixDashboard