简介

Hystrix,英文意思是豪猪,全身是刺,看起来就不好惹,是一种保护机制。Hystrix也是Netflix公司的一款组件。

熔断原理

熔断器,也叫断路器,其英文单词为:Circuit Breaker

熔断状态机3个状态:

  • Closed:关闭状态,所有请求都正常访问。

  • Open:打开状态,所有请求都会被降级。Hystix会对请求情况计数,当一定时间内失败请求百分比达到阈值,则触发熔断,断路器会完全打开。默认失败比例的阈值是50%,请求次数最少不低于20次。

  • Half Open:半开状态,open状态不是永久的,打开后会进入休眠时间(默认是5S)。随后断路器会自动进入半开状态。此时会释放部分请求通过,若这些请求都是健康的,则会完全关闭断路器,否则继续保持打开,再次进行休眠计时

那么Hystix的作用是什么呢?具体要保护什么呢?

Hystix是Netflix开源的一个延迟和容错库,用于隔离访问远程服务、第三方库,防止出现级联失败。

为什么有熔断机制?

下面咱们看一下雪崩,为了防止这种雪崩问题,有了熔断机制。

微服务中,服务间调用关系错综复杂,一个请求,可能需要调用多个微服务接口才能实现,会形成非常复杂的调用链路:

如图,一次业务请求,需要调用A、P、H、I四个服务,这四个服务又可能调用其它服务。

如果此时,某个服务出现异常,例如微服务I发生异常,请求阻塞,用户不会得到响应,则tomcat的这个线程不会释放,于是越来越多的用户请求到来,越来越多的线程会阻塞。

服务器支持的线程和并发数有限,请求一直阻塞,会导致服务器资源耗尽,从而导致所有其它服务都不可用,形成雪崩效应。

Hystix解决雪崩问题的手段有两个:

  • 线程隔离

  • 服务熔断

Hystrix为每个依赖服务调用分配一个小的线程池,如果线程池已满调用将被立即拒绝,默认不采用排队.加速失败判定时间。用户的请求将不再直接访问服务,而是通过线程池中的空闲线程来访问服务,如果线程池已满,或者请求超时,则会进行降级处理,什么是服务降级?

优先保证核心服务,而非核心服务不可用或弱可用

用户的请求故障时,不会被阻塞,更不会无休止的等待或者看到系统崩溃,至少可以看到一个执行结果(例如返回友好的提示信息)。服务降级虽然会导致请求失败,但是不会导致阻塞,而且最多会影响这个依赖服务对应的线程池中的资源,对其它服务没有响应。

触发Hystix服务降级的情况:

  • 线程池已满

  • 请求超时

参数配置

熔断是在注册中心客户端进行配置的。

引入pom依赖(其实只引入eureka的依赖即可,包含了对hystrix的依赖。)

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

yml配置

hystrix:command:default:execution:isolation:thread:timeoutInMilliseconds: 6000 # 设置hystrix的超时时间为6000ms

熔断启动

在主类上加注解即可开启熔断服务

@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
@EnableEurekaClient
@EnableCircuitBreaker  //开启熔断
public class ItcastServiceConsumerApplication {@Bean@LoadBalanced  //开启负载均衡public RestTemplate restTemplate(){return new RestTemplate();}public static void main(String[] args) {SpringApplication.run(ItcastServiceConsumerApplication.class, args);}}

有关熔断的图总结:

【SpringCloud】Hystrix:熔断相关推荐

  1. SpringCloud系列七:Hystrix 熔断机制(Hystrix基本配置、服务降级、HystrixDashboard服务监控、Turbine聚合监控)...

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:Hystrix 熔断机制 2.具体内容 所谓的熔断机制和日常生活中见到电路保险丝是非常相似的,当出现了问题之后,保险丝 ...

  2. hystrix熔断 简介_Hystrix简介– Hello World

    hystrix熔断 简介 在以前的博客文章中,我介绍了需要像Netflix Hystrix这样的库的动机. 在这里,我将跳入一些非常基本的方法来开始使用Hystrix,并在更复杂的用例中进行跟进. 你 ...

  3. springcloud hystrix实战(二)

    我们前面介绍完了springcloud hystrix的相关作用,大家也有了一个认识,这个熔断器的作用这个就不在重复. 下面我们就接着进行代码实战,我们是接着之前的微服务的工程继续的,如果有什么不明白 ...

  4. Dubbo(十五)springboot工程dubbo整合SpringCloud Hystrix

    本章将编写一个使用SpringBoot工程集成dubbo使用hystrix组件实现服务熔断示例.包含服务提供者工程和服务消费者工程.主要在实现整合springcloud hystrix过程步骤如下: ...

  5. 【Java从0到架构师】SpringCloud - Hystrix、Zuul

    SpringCloud 基本概念 熔断和降级 服务雪崩效应 服务熔断与降级 - Hystrix SpringBoot 集成 Hystrix 熔断降级服务异常报警通知 重点属性 - 熔断隔离策略.超时时 ...

  6. SpringCloud Hystrix熔断器

    SpringCloud Hystrix熔断器 15.Hystrix熔断器:简介及作用 目标:理解Hystrix的作用 介绍:Hystrix,英文意思是豪猪,全身是刺,看起来就不好惹,是一种保护机制. ...

  7. 深入了解SpringCloud Hystrix

    雪崩效应即在多个服务节点当中,如果有一个服务不可用而这个不可用的服务导致整个应用资源都耗在这里,进而影响整个系统的崩溃.在分布式环境中,不可避免地会出现雪崩效应.Hystrix是一个netflix实现 ...

  8. hystrix熔断 简介_Hystrix简介

    hystrix熔断 简介 在过去的几天里,我一直在探索Netflix Hystrix库,并欣赏了这个出色的库所提供的功能. 引用Hystrix网站上的内容: Hystrix是一个延迟和容错库,旨在隔离 ...

  9. hystrix熔断 简介_Hystrix简介–总结

    hystrix熔断 简介 这是其他两篇文章的后续文章– 动机 ,说明为什么在分布式系统中需要类似Hystrix的内容以及Hystrix的基本介绍 . 这将是我的Hystrix旅程的总结,其中包含各种属 ...

  10. springcloud Hystrix Dashboard微服务监控

    springcloud  Hystrix Dashboard微服务监控简介 Hystrix监控 除了隔离依赖服务的调用以外,Hystrix还提供了近实时的监控,Hystrix会实时.累加地记录所有关于 ...

最新文章

  1. usaco Fence Loops
  2. 百度小程序源码php_dedecms织梦小程序插件万能api接口插件(支持百度微信小程序)...
  3. 从央视到谷歌:聊一聊竞价广告的机制设计
  4. Scala 数据类型列表
  5. linq to entity 左联接 右连接 以及内连接写法的区别(转)
  6. C#中的异步编程--探索await与async关键字的奥妙之处,原来理解和使用异步编程可以这么简单
  7. 中国移动公布5G核心网大单 全面加快5G网络部署
  8. 土拍熔断意味着什么_火爆!楼面价14615元/㎡,土拍过后房价涨,常州买房正当时!...
  9. karma如何与测试框架合作2之webpack
  10. JavaScript闭包简单应用
  11. Android 插件化 动态升级
  12. 2021-07-05 页面的生命周期
  13. 阶段3 2.Spring_03.Spring的 IOC 和 DI_4 ApplicationContext的三个实现类
  14. 【爬虫】爬取当当网的图书信息
  15. EXCEL中实现经纬度距离计算、高斯坐标转换、GIS数据导出等功能
  16. latex自动生成中文目录_LaTeX技巧907:目录与格式定制
  17. 电商erp软件有哪些好处?
  18. markdown如何调整行距_Markdown基础语法
  19. SEO优化怎么做,怎么做SEO优化
  20. Android中删除EditText中内容时报SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length

热门文章

  1. windows linux C/C++获取操作系统、CPU、内存信息、硬盘、IP和MAC
  2. Android开发--图形图像与动画(二)--Animation实现图像的 渐变、缩放、位移、旋转
  3. Linux2.6--虚拟文件系统
  4. Android开发--事件的处理/按键按下,弹起,触摸事件等
  5. Android开发--SharedPreferences初步介绍
  6. 数组中的逆序对,为什么要在第一个小于等于的时候计数?
  7. mysql5.7 too many_Mysql 错误too many connections解决方案
  8. 浏览器内核_测量时间:从Java到内核再到
  9. maven_SonarQube中的Maven项目的单元和集成测试报告
  10. visualvm远程监控jvm_8款JVM性能调优监控工具(提高开发效率)