微服务:4-1-1 服务降级-Hystrix

1、Hystrix概述

1、分布式面临的问题?

hystrix1

hystrix2

2、Hystrix是什么?

hystrix3

Hystrix可用在消费端和服务端,一般用在消费端

3、Hystrix能干什么?

1、服务降级

2、服务熔断

3、接近实时的监控

4、限流、隔离等等

2、Hystrix重要概念

1、服务降级fallback

1、服务提供方发生故障时,向调用方返回一个符合预期的、可处理的备选响应,而不是长时间的等待或抛出调用方无法处理的异常。

比如:服务器忙,请稍后再试,不让客户端等待并立刻返回一个友好提示

2、触发服务降级的情况
(1)程序运行异常
(2)超时
(3)服务熔断触发服务降级
(4)线程池/信号量打满

2、服务熔断break

类比保险丝,达到最大服务访问后,直接拒绝访问,断闸限电,然后调用服务降级的方法并返回友好提示

保险丝:服务降级-》进而熔断-》恢复调用链路

2、服务限流flowlimit

秒杀高并发等操作,严禁一窝蜂的过来拥挤,大家排队,1秒钟N个,有序进行

3、Hystrix案例

1、构建

1、新建带有Hystrix8001项目

2、改POM
hystrix4

3、写yml
hystrix5

4、主启动
hystrix6

5、业务类
(1)service
hystrix7

(2)controller
hystrix8

6、测试
接口1立马返回
接口2延迟3秒返回

2、高并发测试

hystrix9

3、新建带有Feign和Hystrix的客户端80

hystrix10

4、服务降级

1、降级配置 @HystrixCommand

1、8001fallback
先8001自身找问题
设置自身调用超时时间的峰值,峰值内可以正常运行,超过了峰值需要有兜底的方法处理,做服务降级fallback

(1)业务类启用
@HystrixCommand报异常后如何处理
一旦服务方法被调用失败并抛出了错误信息后,会自动启用@HystrixCommand标注的fallbackMethod指定的方法来处理异常(超时或其他异常都可以处理)
hystrix11

(2)主启动类激活
添加新注解@EnableCircuitBreaker
hystrix12

2、80fallback
80客户端订单微服务,也可以采用服务降级保护自身

尽管设置了热部署时,修改了@HystrixCommand内属性还是建议重启微服务。

(1)yml开启hystrix
hystrix13

(2)主启动,@EnableHystrix
hystrix14

(3)业务类
hystrix15

2、问题

hystrix16

指定统一处理服务降级的实现类
hystrix17

当客户端也配置服务降级后,当服务端宕机时,客户端会进行相应服务降级处理,不会挂起耗死服务器

5、服务熔断

1、断路器

可以看做家里的保险丝

2、熔断是什么

hystrix18
hystrix19

3、案例

1、修改8001的PaymentService
hystrix20
配置中意思是10秒钟内10次请求有6次以上(60%)失败即触发熔断,断路器打开,

这时就算后面是正常正确的请求到达,也得不到正常的返回;

过一段时间后,失败率降低,慢慢恢复链路,断路器关闭,可以正常处理请求

2、修改8001的PaymentController
hystrix21

3、总结
(1)熔断类型
hystrix22

(2)断路器在什么情况下起作用
hystrix23

(3)断路器开启或关闭的条件
hystrix24

(3)断路器打开之后
hystrix25

官网断路器流程图
hystrix26

6、Hystrix DashBoard

1、概述
hystrix27

2、开启
hystrix28