【SpringCloud系列】Hystrix

Hystrix是一款由Netflix开源的容错管理库,主要用于处理分布式系统中的延迟和容错问题,具备服务熔断、降级及监控等功能。本文介绍如何使用Hystrix实现服务熔断与降级,同时展示其在微服务架构中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概念

Hystrix是Netlifx开源的一款容错框架,防雪崩利器,具备服务降级,服务熔断,依赖隔离,监控(Hystrix Dashboard)等功能。
Hystrix是一个用于处理分布式系统中延迟和容错的开源库,在分布式系统中,许多依赖会不可避免的调用失败,比如超时,异常等,Hystrix能保证在一个依赖出现问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。
“断路器”本身是一个开关装置,当某个服务发生故障时,通过断路器的监控,向调用方法返回一个预期的响应,而不是长时间的等待或者抛出无法处理的异常,这样就可以服务调用方的线程不会长时间的被占用,从而导致故障在分布式系统中蔓延,乃致雪崩。

服务熔断

服务熔断: 在分布式系统中,不可避免的会有一些服务相互依赖 ,如:用户的一个请求进来,会先调用服务A,然后服务A调用服务B,服务B调用服务C,这时候如果服务B出现了故障 ,那么就会发生服务雪崩

使用

可以在可能出现故障的方法上加@HystrixCommand注解,fallbackMethod的值设置为自定义方法,这样当方法抛出异常后,会调用自定义方法,而不是直接抛出异常
添加相关依赖

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
    </dependency>

启动类加@EnableCircuitBreaker注解

在需要熔断的方法上添加注解及自定义熔断方法

	@HystrixCommand(fallbackMethod = "fallback2")
	public String test(@RequestParam("number")Integer number) {
		String str = "success";
		if (number == 1) {
			return str;
		}
		// 业务代码		
		return str;
	}
	private String fallback2(Integer number) {
		log.info("发生服务熔断,参数"+number);
		return "发生服务熔断,请联系管理员或稍后重试";
	}

服务降级

在微服务中,如果某个服务压力过大时,可以停止其他请求次数较小的服务,以减轻服务器压力,而被停掉的服务不可以报错,而应该返回一个提示信息,此时,可以在服务端进行服务降级处理

结合Feign使用服务降级

在通过feign调用其他微服务的时候,通过feign注解的fallBackFactory方法指定一个类,这个类负责处理调用的微服务发生故障时返回的值
Feign类如下

@FeignClient(name = "DemoService", fallbackFactory = FallBackDemo.class)
public interface DemoFeign {

    @GetMapping("/article")
    Article getArticle(Integer id);
}

自定义返回类如下

@Component
@Slf4j
public class FallBackDemo implements DemoFeign{

    @Override
    public Article getArticle(Integer id) {
        log.info("服务调用失败,返回默认值");
        return new Article();
    }
}

如果DemoService服务调用失败,该接口不会报错而是会返回一个新的Article对象,这里的返回值可以根据需要进行处理
PS.服务熔断在服务端进行处理,服务降级在客户端进行处理

服务监控

添加相关依赖

<dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
 </dependency> 
<!-- 服务提供者需要添加的依赖 -->
 <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
 </dependency>
 

启动类添加注解@EnableHystrixDashboard
完成后启动项目,通过http://{ip}:{port}/hystrix查看监控可视化界面
在这里插入图片描述
进入dashboard后界面如下
在这里插入图片描述


👍 欢迎前往博客主页查看更多内容

👍 如果觉得不错,期待您的点赞、收藏、评论、关注

👍 ​ 如有错误欢迎指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值