一旦服务阻塞就进行服务降级或线程隔离。要不然就会导致大面积服务的瘫痪,Hystrix就是干这个的,一出现不健康的服务就进行熔断,不阻塞后面线程的执行。
引入依赖:
加注解:
这三个注解可以用一个注解搞定:
当出现服务阻塞时,调用下面的方法:
将注解加在类上,进行统一处理,不然的话,每个方法上都要添加如上这段内容,太臃肿:
defaultFallback指向的通用方法是:
类上添加@DefaultProperties注解指定默认的熔断处理方法后,只需要在方法上添加@HystrixCommand注解即可:
可以通过@HystrixCommand注解设置服务的超时时间,超过设定的时间才会触发熔断机制,框架默认配置的超时时间是1000ms毫秒:
也可以在配置文件中配置全局的超时时间属性,比如将默认的1秒配置为3秒,整个项目都通用:
这样默认的超时时间是3秒,如果某个方法要自定义超时时间就使用上面注解的方式。
这个default可以换成服务名称或方法名称,就只对指定的服务或方法起作用。
模拟服务超时场景:
线程隔离在我们进行代码配置的时候就已经在底层实现了。
Spring Cloud--Hystrix服务熔断(线程隔离/服务降级)代码实现
原文:https://www.cnblogs.com/niwotaxuexiba/p/10864832.html