当前位置: 首页 > news >正文

【SpringCloud】Hystrix

目录

  • what
    • 服务降级:
    • 服务熔断:
    • 服务限流:
  • why
  • How
  • 注解
    • @HystrixProperty
    • @FeignClient

what

服务降级:

服务器忙,请稍后再试,不让客户端等待并立刻返回一个友好提示,fallback
哪些情况触发降级?

  • 程序运行异常
  • 超时
  • 服务熔断触发服务降级
  • 线程池/信号量打满也会导致服务降级

降级用在服务提供者还是服务消费者呢?
都可以的,不过大多数情况是用在服务消费者多一些啦。

服务熔断:

类比保险丝达到最大服务访问后,直接拒绝访问,拉闸限电,然后调用服务降级的方法并返回友好提示,fallback
熔断是什么?
熔断机制是对应雪崩效应的一种微服务链路保护机制。当扇出链路的某个微服务出错不可用或者响应时间太长时,会进行服务的降级,进而熔断改节点微服务的调用,快速返回错误的响应信息。
当检测到该节点微服务调用响应正常后,恢复调用链路。

断路器

服务限流:

秒杀高并发等操作,严禁一窝蜂的过来拥挤,大家排队,一秒钟N个,有序进行

why

为什么微服务我们要用Hystrix呢?因为它可以解决分布式系统交互时超时处理和容错的类库, 它同样拥有保护系统的能力。

How

在SpringCloud框架里,熔断机制通过Hystrix实现。Hystrix会监控微服务间调用的状况,当失败的调用到一定阈值,缺省是5秒内20次调用失败,就会启动熔断机制。使用@HystrixHystrixCommand注解。

maven引入Hystrix依赖

  <!--hystrix -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-hystrix</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>

假设在调用某个服务的时候出现异常,在方法上加@HystrixCommand注解,通过她中fallbackMethod去调用提示方法。
在这里插入图片描述
假设我们出现超时的异常
在这里插入图片描述

注解

@HystrixProperty

@HystrixProperty全局服务降级
避免代码膨胀,合理减少代码量,我们可以通过@HystrixProperty解决每个方法上加一个降级方法。通过@HystrixProperty直接在类上加@HystrixProperty就可以了,方法上直接写@HystrixCommand注解。
实例:
在这里插入图片描述

@FeignClient

@FeignClient 通配服务降级
通过@FeignClient中的fallback解决了解耦,实现了服务降级,解决了到吗膨胀,代码混乱。
实例:
在这里插入图片描述

相关文章:

  • 谈谈SpringBoot
  • 【自学成才】中国近现代史纲要
  • 【工具】Mac版idea20.1 Debug调试快捷键失效
  • MAC 生成SSH公钥
  • 【java】postman 如何测试带有时间戳 timestamp 格式的参数
  • 【java】 将双双引号替换为双引号
  • 【java】java8排序
  • 【DB】PostgreSql
  • 【Java集合】jackson—>ObjectMapper
  • 【自学成才】数据结构导论
  • 【Java】两个日期相减等于天数
  • spring-boot-starter-web与spring-boot-starter-webflux区别
  • 【后端】nested exception is java.lang.IllegalStateException RequestParam.value() was empty on parameter
  • 1024
  • 【Reactor系列】
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • Android单元测试 - 几个重要问题
  • django开发-定时任务的使用
  • gops —— Go 程序诊断分析工具
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • k个最大的数及变种小结
  • Linux链接文件
  • linux学习笔记
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • mysql外键的使用
  • node.js
  • node学习系列之简单文件上传
  • php中curl和soap方式请求服务超时问题
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • session共享问题解决方案
  • supervisor 永不挂掉的进程 安装以及使用
  • vagrant 添加本地 box 安装 laravel homestead
  • - 概述 - 《设计模式(极简c++版)》
  • 那些年我们用过的显示性能指标
  • 如何合理的规划jvm性能调优
  • 三栏布局总结
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​第20课 在Android Native开发中加入新的C++类
  • #define用法
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #每日一题合集#牛客JZ23-JZ33
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (1)虚拟机的安装与使用,linux系统安装
  • (2)STL算法之元素计数
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (算法)Travel Information Center
  • *ST京蓝入股力合节能 着力绿色智慧城市服务