SpringCloud的Hystrix简单介绍

 更新时间:2023年07月25日 10:21:02   作者:「已注销」  
这篇文章主要介绍了SpringCloud的Hystrix简单介绍,SpringCloud Hystrix是Netflix开源的一款容错框架,具备服务降级,服务熔断,依赖隔离,监控(Hystrix Dashboard)等功能,同样具有自我保护能力,需要的朋友可以参考下

Hystrix 介绍

Hystrix ,中文含义是豪猪,因其背上长满棘刺,从而拥有了自我保护的能力。

SpringCloud Hystrix是Netflix开源的一款容错框架,具备服务降级,服务熔断,依赖隔离,监控(Hystrix Dashboard)等功能,同样具有自我保护能力。为了实现容错和自我保护

服务雪崩

分布式系统环境下,服务间类似依赖非常常见,一个业务调用通常依赖多个基础服务。如下图,对于同步调用,当库存服务不可用时,商品服务请求线程被阻塞,当有大批量请求调用库存服务时,最终可能导致整个商品服务资源耗尽,无法继续对外提供服务。并且这种不可用可能沿请求调用链向上传递,这种现象被称为雪崩效应。

一个服务失败,导致整条链路的服务都失败的情形,我们称之为服务雪崩

服务降级

一般是从整体负荷考虑。就是当某个服务熔断之后,服务器将不再被调用,此时客户端可以自己准备一个本地的fallback回调,返回一个缺省值。

这样做,虽然会出现局部的错误,但可以避免因为一个服务挂机,而影响到整个架构的稳定性。

​通过服务降级,能保证在某个或某些服务出问题的时间,不会导致整个项目出现问题,避免级联故障,从而来提高分布式系统的弹性。

服务熔断

Hystrix意为“断路器”,就和我们生活中的保险丝,开关一个道理。

当我们给整个服务配置了服务降级后,如果服务提供者发生了错误后,就会调用降级后的方法来保证程序的运行。

但是呢?有一个问题,调用者并不知道它调用的这个服务出错了,就会在业务发生的时候一直调用,然后服务会一直报错,然后去调用降级方法。好比下图中:

Hystrix入门案例

添加如下依赖

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

启动类上添加注解

@EnableHystrix

使用feign请求数据 ,加上注解@HystrixCommand(fallbackMethod="fallback")

fallback是方法 在方法中保持传参和返回值相同。

服务报错降级

// http://localhost:7001/consumer/test
@HystrixCommand(fallbackMethod = "fallback")
@GetMapping("/test")
public String testFeign(String str) throws Exception {
    if ("y".equalsIgnoreCase(str)) {
        throw new Exception();
    }
    return providerService.provider(str);
}
public String fallback(String str) {
    return "服务繁忙,请稍后重试!";
}

服务超时降级

// http://localhost:7001/consumer/timeout
@HystrixCommand(fallbackMethod = "timeout",commandProperties = {
        @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds",value = "3000")
})
@GetMapping("/timeout")
public String testTimeout(String str) throws Exception {
    Thread.sleep(5000);
    return providerService.provider(str);
}
public String timeout(String str) {
    return "请求时间超时";
}

到此这篇关于SpringCloud的Hystrix简单介绍的文章就介绍到这了,更多相关SpringCloud的Hystrix内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java编程实现时间和时间戳相互转换实例

    Java编程实现时间和时间戳相互转换实例

    这篇文章主要介绍了什么是时间戳,以及Java编程实现时间和时间戳相互转换实例,具有一定的参考价值,需要的朋友可以了解下。
    2017-09-09
  • Spring Boot如何集成模板引擎FreeMarker

    Spring Boot如何集成模板引擎FreeMarker

    这篇文章主要介绍了Spring Boot如何集成模板引擎FreeMarker,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • 八种Java中的基本数据类型详解

    八种Java中的基本数据类型详解

    在Java编程中,基本数据类型是必不可少的一部分,对于初学者而言,理解这些基本数据类型是非常重要的,下面我们就来学习一下Java中的八种基本数据类型,以及它们的使用方法吧
    2023-08-08
  • Java中list.foreach()和list.stream().foreach()用法详解

    Java中list.foreach()和list.stream().foreach()用法详解

    在Java中List是一种常用的集合类,用于存储一组元素,List提供了多种遍历元素的方式,包括使用forEach()方法和使用Stream流的forEach()方法,这篇文章主要给大家介绍了关于Java中list.foreach()和list.stream().foreach()用法的相关资料,需要的朋友可以参考下
    2024-07-07
  • springboot项目启动的时候参数无效的解决

    springboot项目启动的时候参数无效的解决

    这篇文章主要介绍了springboot项目启动的时候参数无效的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java排序实现的心得分享

    Java排序实现的心得分享

    这篇文章主要介绍了Java排序实现的心得,有需要的朋友可以参考一下
    2014-01-01
  • java计算代码段执行时间的详细代码

    java计算代码段执行时间的详细代码

    java里计算代码段执行时间可以有两种方法,一种是毫秒级别的计算,另一种是更精确的纳秒级别的计算,这篇文章主要介绍了java计算代码段执行时间,需要的朋友可以参考下
    2022-08-08
  • Java中CyclicBarrier的用法分析

    Java中CyclicBarrier的用法分析

    CyclicBarrier和CountDownLatch一样,都是关于线程的计数器。用法略有不同,测试代码如下:
    2013-03-03
  • RocketMQ的顺序消费机制详解

    RocketMQ的顺序消费机制详解

    这篇文章主要介绍了RocketMQ的顺序消费机制详解,顺序消息是指对于一个指定的 Topic ,消息严格按照先进先出(FIFO)的原则进行消息发布和消费,即先发布的消息先消费,后发布的消息后消费,,需要的朋友可以参考下
    2023-10-10
  • Spring中Controller和RestController的区别详解

    Spring中Controller和RestController的区别详解

    这篇文章主要介绍了Spring中Controller和RestController的区别详解,@Controller是标识一个Spring类是Spring MVC controller处理器,@Controller类中的方法可以直接通过返回String跳转到jsp、ftl、html等模版页面,需要的朋友可以参考下
    2023-09-09

最新评论