Hystrix的两种用法

1、概述

(1)、首先要知道分布式系统面临的问题
复杂分布式体系结构中应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免的失败

(2)、服务雪崩

多个服务之间相互调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他的微服务,这既是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的嗲用就会占用原来越多的系统资源,今儿引起系统崩溃,所谓的“雪崩效应”。


(3)、对于高流量的应用来说,单一的后端依赖可能会导致所有服务器上的所有资源都在几秒钟内饱和。比失败更糟糕的是,这些应用程序还可能导致服务之间的延迟增加,备份队列,线程和其他系统资源紧张,导致整个系统发生更多的级联故障。这些都表示需要对故障和延迟进行隔离和管理,以便单个依赖关系的失败,不能取消整个应用程序或系统。

●是什么

Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调试失败,比如超时、异常等,Hystrix能够保证在一个依赖出现问题的情况下,不会导致整个服务失败,避免级联故障,以提高分布式系统的弹性。

“断路器”本身是一种开关装置,当某个服务开关发生故障之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个符合预期的、可处理的备选响应(fallback),而不是长时间的等待或者抛出调用方无法处理的异常,这样就保证了服务调用县城不会被长时间,不必要得占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩

●能干嘛

(1)、服务限流

(2)、服务降级、

整个资源快不够了,忍痛将某些服务先关掉,待度过难关,再开启回来。

(3)、服务熔断

熔断机制是应对雪崩效应的一种微服务链路保护机制
当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回“错误”的响应信息。当检测到该节点微服务调用响应正常后恢复调用链路。在SpringCloud框架里熔断机制通过Hystrix实现。Hystrix会监控微服务调用的状况,当失败的调用到一定的阈值,缺省是5秒内20次调用失败就会启动熔断机制。熔断机制的注解是@HystrixCommand

(4)、接近实时的监控

除了隔离依赖服务的调用以外,Hystrix还提供了准实时的调用监控(Hystrix Dashboard),Hystrix会持续的记录所有通过Hystrix发起的请求的执行信息,并以统计报表和图形的形式展示给用户,包括每秒执行多少请求多少成功,多少失败等。Netfilx通过hystrix-metrics-event-stream项目实现了对以上指标的监控。Spring Cloud也提供了Hystrix Dashboard的整合,对监控内容转化成可视化界面。

●怎么用

 接上篇的项目,还是三个服务 注册中心study-eureka(8001),服务提供者study-ms(8003),服务消费者study-web(8002)

第一、在Ribbon消费者中使用

(1)、在消费者pom.xml中添加依赖

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

(2)、在方法上添加注解@HystrixCommand(fallbackMethod = "XXXX")

  study-web的方法如下:

按 Ctrl+C 复制代码

 

按 Ctrl+C 复制代码

(3)、在study-web的启动类上添加注解@EnableCircuitBreaker

 (4)、分别启动注册中心study-eureka,stusy-ms,study-web,访问http://http://localhost:8002/test

 结果显示:

(5)、断开服务者study-ms,访问http://localhost:8002/test

 第二、在Feign中使用

Feign是自带断路器的,@EnableFeignClients中已经默认打开了断路器功能,所以这里的启动类上不需要再加@EnableCircuitBreaker注解

只需要在@FeignClient中为fallback参数指定fallback方法。但是,在D版本的Spring Cloud之后,它没有默认打开

(1)、添加配置feign.hystrix.enabled=true

 (2)、在Feign接口注解@FeignClient上添加fallback,此注解是接口实现类

 (3)实现类上添加熔断实现

 (3)、分别启动注册中心study-eureka,stusy-ms,study-web,访问http://localhost:8002/queryUser

 (4)、关掉study-ms服务,继续访问http://localhost:8002/queryUser

 结果证明断路器起到了作用

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Feign和Hystrix是两个常用的工具,用于构建分布式系统中的微服务。Feign是一个声明式的Web服务客户端,通过简单的接口注解来定义和绑定服务之间的通信。而Hystrix是一个用于处理分布式系统中的故障和延迟问题的库。 要使用Feign和Hystrix,首先需要在配置文件中进行一些基础配置。根据引用和引用的内容,可以参考之前的配置方法,在配置文件中添加如下代码: ``` feign: hystrix: enabled: true ``` 这样就启用了Feign中的Hystrix支持。 在使用Feign和Hystrix的组合时,通常的做法是将Hystrix作为请求端的设置。这是一种经典的使用方式,可以通过在Feign客户端接口上添加`@FeignClient`注解,并在该注解中设置`fallback`属性来指定Hystrix的回退逻辑。这样当服务提供端发生故障或延迟时,Hystrix会根据预设的策略执行回退逻辑。 具体来说,在使用Feign时,可以通过在接口上添加`@FeignClient`注解,并设置`fallback`属性来指定Hystrix的回退逻辑。例如: ```java @FeignClient(name = "service-name", fallback = MyFallback.class) public interface MyFeignClient { // 定义服务之间的接口 } ``` 在上述例子中,`MyFallback`是一个实现了`MyFeignClient`接口的回退逻辑类。当服务提供端发生故障或延迟时,Hystrix会调用`MyFallback`中定义的方法来执行回退逻辑。 总结一下,使用Feign和Hystrix可以通过在配置文件中启用Hystrix支持,并在Feign客户端接口上添加`@FeignClient`注解来设置Hystrix的回退逻辑。这样就可以提高分布式系统的可靠性和容错能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值