首页 > 其他分享 >springcloud Hystrix熔断器

springcloud Hystrix熔断器

时间:2022-12-08 16:55:29浏览次数:27  
标签:调用 服务 请求 Hystrix springcloud 熔断 线程 熔断器

服务熔断
熔断机制是应对雪崩效应的一种微服务链路保护机制。我们在各种场景下都会接触到熔断这两个字。高压电路中,如果某个地方的电压过高,熔断器就会熔断,对电路进行保护。股票交易中,如果股票指数过高,也会采用熔断机制,暂停股票的交易。同样,在微服务架构中,熔断机制也是起着类似的作用。当扇出链路的某个微服务不可用或者响应时间太长时,熔断该节点微服务的调用,进行服务的降级,快速返回错误的响应信息。当检测到该节点微服务调用响应正常后,恢复调用链路。
注意:
1)服务熔断重点在“断”,切断对下游服务的调用
2)服务熔断和服务降级往往是一起使用的,Hystrix就是这样。


服务降级
通俗讲就是整体资源不够用了,先将一些不关紧的服务停掉(调用我的时候,给你返回一个预留的值,也叫做兜底数据),待渡过难关高峰过去,再把那些服务打开。
服务降级一般是从整体考虑,就是当某个服务熔断之后,服务器将不再被调用,此刻客户端可以自己准备一个本地的fallback回调,返回一个缺省值,这样做,虽然服务水平下降,但好歹可用,比直接挂掉要强。


服务限流
服务降级是当服务出问题或者影响到核心流程的性能时,暂时将服务屏蔽掉,待高峰或者问题解决后再打开;但是有些场景并不能用服务降级来解决,比如秒杀业务这样的核心功能,这个时候可以结合服务限流来限制这些场景的并发/请求量
限流措施也很多,比如
限制总并发数(比如数据库连接池、线程池)
限制瞬时并发数(如nginx限制瞬时并发连接数)
限制时间窗口内的平均速率(如Guava的RateLimiter、nginx的limit_req模块,限制每秒的平均速率)
限制远程接口调用速率、限制MQ的消费速率等

Hystrix舱壁模式

即:线程池隔离策略
如果不进行任何设置,所有熔断方法使用一个Hystrix线程池(10个线程),那么这样的话会导致问题,这个问题并不是扇出链路微服务不可用导致的,而是我们的线程机制导致的,如果方法A的请求把10个线程都用了,方法2请求处理的时候压根都没法去访问B,因为没有线程可用,并不是B服务不可用。

 

 为了避免问题服务请求过多导致正常服务无法访问,Hystrix 不是采用增加线程数,而是单独的为每一个控制方法创建一个线程池的方式,这种模式叫做“舱壁模式",也是线程隔离的手段。

Hystrix工作流程与高级应用

 

1)当调用出现问题时,开启一个时间窗(10s)
2)在这个时间窗内,统计调用次数是否达到最小请求数?
如果没有达到,则重置统计信息,回到第1步
如果达到了,则统计失败的请求数占所有请求数的百分比,是否达到阈值?
如果达到,则跳闸(不再请求对应服务)
如果没有达到,则重置统计信息,回到第1步
3)如果跳闸,则会开启一个活动窗口(默认5s),每隔5s,Hystrix会让一个请求通过,到达那个问题服务,看是否调用成功,如果成功,重置断路器回到第1步,如果失败,回到第3步

 

标签:调用,服务,请求,Hystrix,springcloud,熔断,线程,熔断器
From: https://www.cnblogs.com/muzinan110/p/16966567.html

相关文章

  • SpringCloud组件入门使用
    SpringCloud1、远程调用1.1、微服务远程调用RestTemlpate1.2、微服务远程调用-Feign 2、Eureka注册中心2.1、Eureka注册中心搭建及入门使用2.2、Ribbon负载均......
  • SpringCloud之RabbitMQ消息队列原理及配置
    本篇章讲解RabbitMQ的用途、原理以及配置,RabbitMQ的安装请查看SpringCloud之RabbitMQ安装一、MQ用途1、同步变异步消息场景:用户下单完成后,发送邮件和短信通知。......
  • SpringCloud-zuul(网关)
    Zull路由网关概述什么是zuul?Zull包含了对请求的路由(用来跳转的)和过滤两个最主要功能:其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口......
  • SpringCloud-Hystrix (熔断、降级、监控)
    Hystrix:服务熔断分布式系统面临的问题复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免失败!1服务雪崩​ 多个微服务之间调用的时......
  • 还在用Feign?推荐一款微服务间调用神器,跟SpringCloud绝配
     简介:大家好,我是枫哥,......
  • 十四、Docker入门系列--Docker搭建部署SpringCloud微服务项目Demo
    十四、Docker入门系列--Docker搭建部署SpringCloud微服务项目Demo系列文章地址:一、Docker入门系列--Docker简介二、Docker入门系列--Docker安装三、Docker入门系列--D......
  • SpringCloud该如何入门及相关组件介绍
    前言什么是微服务?什么是SpringCloud?那SpringBoot与SpringCloud的区别又是什么?这几个问题是java开发工程师从SpringBoot向SpringCloud升级的一定回有的疑惑。......
  • SpringCloud-负载均衡和通信(Ribbon、Feign)
    1.Ribbon:负载均衡(基于客户端)1.1负载均衡以及RibbonRibbon是什么?SpringCloudRibbon是基于NetflixRibbon实现的一套客户端负载均衡的工具。简单的说,Ribbon是......
  • SpringCloud-Eureka服务注册中心
    1什么是EurekaNetflix在涉及Eureka时,遵循的就是API原则.Eureka是Netflix的有个子模块,也是核心模块之一。Eureka是基于REST的服务,用于定位服务,以实现云端中间件层服务发......
  • SpringCloud-入门
    1、学习前言1.2文章大纲SpringCloud五大组件服务注册与发现——NetflixEureka负载均衡:客户端负载均衡——NetflixRibbon服务端负载均衡:——Feign(其也是依......