1. 雪崩效应

1.1. 雪崩效应描述

在微服务的架构中,服务间通常会形成相互依赖的关系.

场景一: 比如现在有三个微服务节点:A,B和C,B为A的消费者,C为B的消费者。假如由于网络波动或者A服务自身故障,导致B调用A服务的线程被挂起进入长时间的等待。在高并发的情况下可能导致B的资源被耗竭随之崩溃,从而导致C服务也不可用。这种情况下 就是雪崩效应

场景二: 比如现在有三个微服务节点:A,B和C, A是消费者 B和C是A的提供者,A如果想要完成一个功能 必须同时成功调用B和C 如果B和C 有一个出现问题 则A也会导致挂起,高并发的情况下 A的资源也会耗尽 最终崩溃

1.2. 雪崩效应条件

1: 服务提供者不可用 1.1: 硬件故障,硬件故障可能为硬件损坏造成的服务器主机宕机, 网络硬件故障造成的服务提供者的不可访问. 1.2: 程序Bug,程序出现bug,一直无法响应 1.3: 缓存击穿,缓存击穿一般发生在缓存应用重启, 所有缓存被清空时,以及短时间内大量缓存失效时。大量的缓存不命中,使请求直击后端,造成服务提供者超负荷运行,引起服务不可用 1.4: 用户大量请求 在秒杀和大促开始前,如果准备不充分,用户发起大量请求也会造成服务提供者的不可用. ​
2: 重试加大流量 2.1: 用户重试在服务提供者不可用后, 用户由于忍受不了界面上长时间的等待,而不断刷新页面甚至提交表单 2.2: 代码逻辑重试服务消费端的会存在大量服务异常后的重试逻辑。这些重试都会进一步加大请求流量。 ​
3: 服务调用者不可用 3.1: 同步等待造成的资源耗尽,当服务消费者使用同步调用时,会产生大量的等待线程占用系统资源。一旦线程资源被耗尽,服务调用者提供的服务也将处于不可用状态,于是服务雪崩效应产生了。 ​

1.3. 报错演示

2. 服务降级

服务降级:表示一组服务,优先保证核心服务,或者正常的服务调用的同时,对不可用或者弱可用的服务,直接返回一个结果,不让线程进行等待 ​ 服务降级可以在消费者 也可以在提供者

2.1. 消费者端添加依赖

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

2.2. 消费者端开启熔断

2.3. 控制器添加

2.4. 测试

2.5. 整个控制器配置

2.6. 测试

2.7. 开发中的配置

1:由于熔断可以写在消费者端,也可以写在提供者端,也可以两端都写,那么由于消费者访问提供者是有返回值类型的,那么我们的callback方法 也应该有对应的返回类型要求,否则将会二次报错 (ResponseEntity统一返回值类型的好处) ​ ​ 2:我们一个服务有可能又是提供者又是消费者,所以能不能做到很灵活 比如想让谁处理 谁处理

2.8. Feign接口工程中添加类

2.9. 接口中添加

2.10. 处理端开启hystrix

因为我们把熔断这个事,放到了OpenFeign的接口中,所以如果是提供者处理 就在提供者的配置文件中开启 如果是消费者处理,就在消费者配置文件中开启

2.11. 控制器中的内容可以去掉

3. 超时问题

3.1. 问题演示

3.2. 问题说明

因为我们设置了OpenFeign的超时时间是5秒,也就是说这5秒内返回数据都是正常的,但是当我们延时的时间在OpenFeign的范围内,也访问不到数据,触发了Hystrix,因为Hystrix的默认超时时间是1秒 如果1秒没有返回数据 默认熔断器打开

3.3. 设置熔断器时间

hystrix:command:default:execution:isolation:thread:timeoutInMilliseconds: 6000 ## 一般设置的时间 大于等于OpenFeign的超时时间

3.4. 测试

4. 服务熔断

服务熔断:比如整个宿舍楼 所有的人都在看片,看到高潮的时候,此时由于功率过高,保险丝断了,这就是熔断 而Hystrix的熔断和保险丝还不一样,保险丝的熔断需要人为接上,而hystrix的熔断会自动再恢复

4.1. 熔断器状态

Closed  关闭状态(熔断器关闭) 所有请求正常访问Open 打开状态(熔断器打开) 所有请求都会被降级 Hystrix会对请求情况进行统计 如果当一定时间内失败请求达到默认值(默认是百分之50并且访问数不低于20次)时 触发熔断 此时熔断器会打开 此时请求直接超时 不会再等待HalfOpen 半打开状态   当熔断器打开之后5秒(默认值) 会进入半打开状态 释放部分请求通过 如果释放的这些请求是还是有不正常的  那么进入打开状态 然后再5秒进去半打开状态 然后请求的情况 是否再次进入打开状态(一直循环)

4.2. 熔断器的配置

4.3. 遗憾的事情

09-熔断器Hystrix相关推荐

  1. 09 熔断器Hystrix

    09 熔断器Hystrix 1.简介 Hystrix 在英文里面的意思是 豪猪,它的logo 看下面的图是一头豪猪,它在微服务系统中是一款提供保护机制的组 件,和eureka一样也是由netflix公司 ...

  2. 一起来学Spring Cloud | 第五章:熔断器 ( Hystrix)

    在微服务项目中,一个系统可以分割成很多个不同的服务模块,不同模块之间我们通常需要进行相互调用.springcloud中可以使用RestTemplate+Ribbon和Feign来调用(工作中基本都是使 ...

  3. 《深入理解 Spring Cloud 与微服务构建》第九章 熔断器 Hystrix

    <深入理解 Spring Cloud 与微服务构建>第九章 熔断器 Hystrix 文章目录 <深入理解 Spring Cloud 与微服务构建>第九章 熔断器 Hystrix ...

  4. springcloud 熔断器Hystrix的具体使用

    springcloud 熔断器Hystrix的具体使用 说起springcloud熔断让我想起了去年股市中的熔断,多次痛的领悟,随意实施的熔断对整个系统的影响是灾难性的,好了接下来我们还是说正事. 熔 ...

  5. 【微服务】微服务熔断器--Hystrix

    微服务熔断器--Hystrix 前言 什么是熔断? 什么是降级? 熔断和降级的区别 Hystrix的隔离机制? 什么是Fallback? 熔断器的使用 导入依赖 启动类开启Hystrix配置 声明服务 ...

  6. 关于熔断器Hystrix替代方案的调研报告

    关于熔断器Hystrix替代方案的调研报告 一.背景 Netflix宣布停止Hystrix熔断器的开发,目前进入了维护模式.同时,也指出了Hystrix 1.5.18版本足够满足现阶段的应用(详细请参 ...

  7. 第六章 服务熔断器Hystrix

    6-1.Hystrix是什么? ​   在微服务的框架中,我们是将一个单体应用拆分成多个服务单元,各个服务单元之间通过注册中心彼此发现和消费对方提供的服务,每个服务器单元都是单独部署,在各自服务的运行 ...

  8. SpringCloud使用熔断器Hystrix

    文章目录 1. 配置 1.1 远程调用配置 1.2 测试远程调用 1.3 使用熔断器Hystrix 1.4 测试熔断器 1. 配置 Feign是简化Java HTTP客户端开发的工具(java-to- ...

  9. 熔断器hystrix的使用

    一.restTemplate+ribbon使用hystrix 1.引入依赖 <dependency><groupId>org.springframework.cloud< ...

  10. SpringCloud组件之熔断器Hystrix的理论与实操

    本篇博客主要讲解Hystrix的理论以及实现. 首先先来讲熔断器Hystrix的理论以及两种实现方法. 熔断器理论 为什么使用熔断器 分布式系统面临的问题:雪崩效应 在微服务架构中通常会有多个服务层调 ...

最新文章

  1. 编程中的蛇形填空问题_在线编程问题当中的蛇形矩阵问题
  2. excel打开空白_PDF转成Excel后,打开表格却是空白的?
  3. 配置WINDOWS群集
  4. 面向多星多任务的大数据处理系统设计
  5. python中bs4库_python系统学习2——beautiful soup库(bs4库)学习
  6. 用MDT 2012为企业部署windows 7(七)--创建标准操作系统部署任务序列
  7. cms文章 mysql存储_MySQL存储引擎笔记
  8. 使用Varnish代替Squid做网站缓存加速器的详细解决方案
  9. E9表单按钮置灰功能与单元格自定义属性说明
  10. 多进程相关内容(IPC)
  11. Adobe Creative Cloud登陆中国大陆市场
  12. instead of 的用法
  13. ps图片去水印-ps图片去水印教程步骤
  14. Rust REPL Jupyter notebook
  15. 基于springboot供应链管理系统毕业设计源码121518
  16. 禅道linux一键安装漏洞,禅道漏洞第二弹后台读写任意文件/getshell
  17. 数据库三类完整性规则
  18. 云服务器性能不如物理服务器,云服务器性能不如物理服务器
  19. linux虚拟机mtr不出去,如何使用MTR诊断网络问题
  20. Win10无法搜索应用解决

热门文章

  1. partprobe使用方法_Linux下使用fdisk命令和partprobe命令 在不重启系统的情况下新建分区并格式化...
  2. 程序人生 -- 致已经逝去2020
  3. 【软件测试与质量习题答案】软件质量度量工具
  4. UBUNTU卸载重装
  5. flake8 错误修复指南
  6. iOS 全新的联系人与联系人UI框架
  7. java 获取cookies
  8. 微信小程序手机号码简单正则
  9. Linux中级实战专题篇三:nginx服务(日志介绍,作用域,格式定义,流量控制,访问控制模块,用户信任登录)
  10. 手机可以打开MySQL的软件_太牛逼了!一款软件几乎可以操作所有的数据库!