解决灾难性雪崩效应的五种方式

学习主题: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

14.使用Turbine监控集群

(1)通过Turbine查看集群监控。