Hystrix--熔断降级配置

本文介绍了微服务架构中的熔断和降级策略。通过添加Hystrix依赖和注解实现接口的熔断功能,当服务调用失败时,快速返回错误信息。同时,详细讲解了如何配置降级策略,包括创建降级类和启用Hystrix降级,确保核心服务的稳定性。在实践中,降级策略优先于熔断,提供了代码级别的控制。

1:熔断

在微服务中,每个服务会调用多个其他服务,达到解耦的作用。当扇出链路的某个微服务不可用或者响应时间太长,这时可以熔断该节点微服务的调用。快速返回错误的响应信息。

添加依赖>接口添加注解@HystrixCommand>启动类添加注解@EnableHystrix

 在接口中添加备用方法,当接口访问失败时,执行备用方法快速返回数据。

注意:备用方法的返回类型参数类型要和接口一致。不然无法正常生效。

在注解@HystrixCommand中指定备选方法。

 主启动类添加注解。

2:降级

降级是指根据数据访问的情况及流量,尽可能把系统资源让给优先级高的服务,从而保证核心服务的稳定。个人理解是降级>熔断,降级有代码干预性,熔断则是普通断路器。

使用:创建

 结合Feign使用;

创建类实现与fallbackFactory,并重写create方法。放入容器内。返回重写了方法的Feign配置接口。

 在Feign的service配置、@FeignClient中指定降级配置类

 在配置类中开启Hystrix降级

 今天在练习,随手记录一下。哪里不对希望大神们多多指出。

### Hystrix 的限流、熔断降级机制 Hystrix 是 Netflix 开源的一个延迟和容错库,旨在通过添加延迟容忍和容错逻辑来帮助分布式系统应对不可避免的失败。以下是关于 Hystrix 的限流、熔断以及降级的具体原理及其使用方法。 #### 一、Hystrix 熔断机制 Hystrix 提供了一种称为 **断路器模式** 的保护机制,其核心目的是防止服务雪崩效应的发生。当某个微服务调用频繁失败时,断路器会自动切换到打开状态,阻止后续对该服务的所有请求,并快速返回失败响应,从而避免资源耗尽[^1]。 断路器的工作流程如下: - 当请求成功率达到设定阈值以上时,断路器保持关闭状态。 - 如果失败率超过预设比例,则触发断路器进入开启状态。 - 在一段时间后(通常为几秒),断路器进入半开状态,允许少量试探性请求验证目标服务是否恢复正常运行。 配置断路器参数可以通过 `hystrix.command.default.circuitBreaker.errorThresholdPercentage` 和其他属性完成[^3]。 #### 二、Hystrix 限流机制 虽然 Hystrix 主要关注于熔断降级,但它也支持一定程度上的流量控制。这种限流主要体现在以下几个方面: 1. **线程池隔离** 每个命令都分配独立的线程池或信号量资源,以此限制并发请求数目。如果超出最大容量,额外的请求会被拒绝并直接执行 fallback 方法[^2]。 2. **信号量隔离** 对于那些不需要异步操作或者 I/O 密集型的任务,可以采用信号量代替线程池来进行更轻量化的资源管理。 设置线程池大小可通过以下配置项调整: ```properties hystrix.threadpool.<thread-pool-key>.coreSize=10 ``` 对于信号量数量则有对应的选项: ```properties hystrix.command.<command-key>.execution.isolation.semaphore.maxConcurrentRequests=5 ``` #### 三、Hystrix 降级机制 当远程服务不可用或其他异常情况发生时,Hystrix 能够优雅地处理这些场景,即所谓的“降级”。具体来说,在定义好业务逻辑的同时还需要指定一个 fallback 函数作为备选方案。一旦主路径出现问题,就会转向此函数获取替代结果。 下面给出一段 Java 实现的例子演示如何创建带有降级策略的 HystrixCommand 类实例: ```java public class ExampleCommand extends HystrixCommand<String> { private final String name; public ExampleCommand(String name) { super(Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("ExampleGroup"))); this.name = name; } @Override protected String run() throws Exception { // 正常情况下访问外部服务 return "Hello " + name; } @Override protected String getFallback() { // 发生错误后的回退逻辑 return "Fallback Hello"; } } ``` 上述代码片段展示了如何利用继承自 `HystrixCommand<T>` 的类构建具有基本功能和服务降级特性的组件[^4]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值