标签:集群 异常 概念 激活 prope 响应 监控 boot 创建
一、Hystrix重要概念
1. 是什么
Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。
“断路器”本身是一种开关装置,当某个服务单元发送故障之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方法无法处理的异常,这样就保证了服务调用的线程不会被长时间、不必要地占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。
2.重要理念
(1)服务降级:服务器忙,请稍后再试,不让客户等待并立刻返回一个友好提示,fallback。
触发降级的情况:程序运行异常、超时、服务熔断触发服务降级、线程池/信号量打满也会导致服务降级
(2)服务熔断:类比保险丝达到最大服务访问后,直接拒接访问,拉闸限电,然后调用服务降级的方法并返回友好提示
(3)服务限流:秒杀高并发等操作,严禁一窝蜂拥挤,排队,一秒N个,有序进行
服务降级实例:
创建三个springboot项目,分别是客户端81,支付端8001,eureka服务注册7001
(1)创建eureka服务注册中心
导入依赖
创建yml文件,这里为了方便,没有建立eureka集群
编写主启动类,@EnableEurekaServer 激活注册相关功能
(2)编写支付端8001
导入相关依赖
创建yml文件
编写业务类
主启动类
@EnableCircuitBreaker 激活Hystrix的注解,@HystrixCommand开启服务降级,当程序出错或超时,就走fallback的方法。
(3)编写客户端81
导入相关依赖
创建yml文件
主启动类
业务类
编写完毕!开始测试
由于在8001里编写的timeout请求会线程睡眠3s,而8001里的服务降级@HystrixCommand注解里值为5000也就是5s才会走fallback方法,故8001不会走fallback方法。但是在81里@HystrixProperty注解里值为1.5s,会走fallback方法。
直接通过8001访问
由于在@HystrixProperty注解里值为5s,而线程睡眠为3s,所以可以正常运行,但是现在将@HystrixProperty注解里的值改为2s,理论上会走fallback的方法,那我们试试
确实,走了fallback的方法。以上大概就是服务降级的一些操作
标签:集群 异常 概念 激活 prope 响应 监控 boot 创建
原文地址:https://www.cnblogs.com/pinkman-Bjtino/p/14907256.html