spring-cloud【Hystrix】
来源:互联网 发布:qq飞车b车 大黄蜂数据 编辑:程序博客网 时间:2024/06/01 08:12
1. 断路器逻辑转换
2. Hystrix简介
3. 整合Hystrix
1. 添加依赖
spring-cloud-starter-hystrix
2. 启动类添加注解
@EnableCircuitBreaker 或者 @EnableHystrix
3. 修改controller
在controller方法上加注解@HystrixCommand(fallbackMethod="findByIdForBack")
findByIdForBack为方法名称,入参和返回值和controller方法一样
@HystrixCommand的配置非常灵活,可使用注解@HystrixProperty的commandPropertis属性来配置@HystrixCommand例如:
4. hystrix断路器的状态监控与深入理解
引入srping-boot-starter-actuator
访问/health
关掉服务,会发现执行了会退逻辑。返回了默认数据,但此时hystrix的状态依然是up,这是因为我们的失败率还有打到阈值(默认是5秒内20次失败)。
请求失败,超时,被拒绝以及断路器打开等都会执行回退逻辑。
5. Htstrix线程隔离策略与传播上下文
Hystyix的隔离策略有两种,分别是线程隔离和信号量隔离
- THREAD(线程隔离):使用盖房时,HystrixCommand将会在单独的线程上执行,发送请求受线程池中的线程数量的限制。
- SEMAPHORE(信号量隔离):使用该方式,HystrixCommand将会在调用线程上运行,开销相对较小,并发请求受到信号量个数的限制。
一般来说,只有当调用负载非常高的时候,例如每个实例每秒调用数百次,才需要用信号量隔离。因为这种场景下使用THREAD开销会比较高。
信号量隔离一般仅适用于非网络调用的隔离。
可使用excution.isolation.strategy属性指定隔离策略
@HystrixCommand(fallbackMethod="forback",commandProperties={@HystrixProperty(name="execution.isolation.strategy",value="SEMAPHORE")})
如果你想传播线程本地的上下文到@HystrixCommand,默认声明将不会工作,因为它会在线程池中执行命令(在超时的情况下)。你可以使用一些配置,让
Hystrix使用相同的线程,或者直接在注解中让Hystrix使用不同的隔离策略,例如
总结:
- Hystrix的策略有THREAD和SEMAPHORE两种,默认是THREAD。
- 正常情况下,保持默认即可。
- 如果发生找不到上下文的运行时异常,可考虑讲隔离策略设置为SEMAPORE。
阅读全文
0 0
- Spring Cloud Hystrix--熔断器
- spring cloud-hystrix
- spring cloud Hystrix
- spring-cloud-hystrix(一)
- Spring Cloud Hystrix Dashboard
- spring cloud hystrix
- spring cloud hystrix dashboard
- Spring Cloud Hystrix
- Spring-Cloud 熔断器 Hystrix
- spring-cloud【Hystrix】
- spring cloud: Hystrix断路器(熔断器)
- spring cloud: Hystrix断路器(熔断器)
- Spring Cloud 断路器Hystrix实战
- Spring Cloud 中的断路器 hystrix
- spring cloud: Hystrix断路器(熔断器)
- spring-cloud-consumer-hystrix(六)
- Spring Cloud Eureka+Ribbon+Hystrix
- spring cloud: Hystrix断路器(熔断器)
- MySQL 一个条件查询出数据表中所有满足条件的数据的方法
- 错误解决--Gradle you are using (3.3)
- SVN
- 归并排序
- MongoDB安装到windows服务的方法及遇到问题的完美解决方案
- spring-cloud【Hystrix】
- GPIO基础知识
- 单例模式与工厂方法模式
- 游戏人生
- 白话C++系列(const再现江湖)
- 数据结构实验之排序一:一趟快排
- java网络图片抓取及其引发的相关问题
- springboot框架用户信息的增删改
- Android RecyclerView的使用(三)——瀑布流的实现