Hystrix断路器

Hystrix断路器

  • 概述
    • 分布式系统面临的问题
    • 什么是Hystrix
  • 服务熔断
    • 什么是服务熔断
    • 添加方法
  • 服务降级
    • 什么是服务降级
    • 实现方法
  • 服务监控hystrixDashboard

概述

分布式系统面临的问题

复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候不可避免地失败。
在这里插入图片描述
服务雪崩
多个微服务之间调用的时候,假设微服务A调用B和C,微服务B和C调用其他的微服务,这就是所谓的“扇出“。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应“

在这里插入图片描述

什么是Hystrix

是一个用于处理分布式系统的延迟容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性

“断路器“本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方无法处理的异常,这样就保证了服务调用方的线程不会被长时间、不必要地占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩

服务熔断

什么是服务熔断

熔断机制是应对雪崩效应的一种微服务链路保护机制

当扇出链路的某个微服务不可用或者响应时间太长,会进行服务的降级,==进而熔断该节点微服务的调用,快速返回“错误“的响应信息。==当检测到该接待你服务服务调用响应正常后恢复调用链路。在SpringCould框架里熔断机制通过Hystrix实现。Hystrix会监控微服务间调用的状况,当失败的调用到一定阈值,缺省是5s内20次调用失败就会启动熔断机制。

熔断机制的注解是 @HystrixCommand

添加方法

在这里插入图片描述

  1. 参考provider-8001模块新建provider-hystrix-8001模块

  2. 在pom中添加相应依赖Hystrix
    在这里插入图片描述

  3. yml文件只需要修改instance中的instance-id(自定义服务名称信息)
    在这里插入图片描述

  4. DeptController
    在这里插入图片描述
    HystrixCommand中的fallbackMethod意为:
    如果get方法调用成功,即返回正确内容;
    如果get方法有异常,则调用“processHystrix_Get“方法

    一旦调用服务方法失败并抛出了错误信息后,会自动调用@HtstrixCommand标注好的fallbackMethod调用类中的指定方法
    在这里插入图片描述
    (但是这样写,每一个方法都要写一个对应的指定方法,内容太多,耦合度太高;解耦合写法更好——在下一个部分服务降级中详述)

  5. 修改主启动类,添加新注解标签@EnableCircuitBreaker,对熔断机制的支持

在这里插入图片描述

服务降级

什么是服务降级

整体资源快不够了,忍痛将某些服务先关掉,待度过难关,再开启回来

实现方法

  1. 首先将HystricCommand解耦合
    在这里插入图片描述
    解耦合
    在这里插入图片描述
    前往不要忘记添加Component注解
    在这里插入图片描述
    在DeptClientService中重写处理逻辑
    在这里插入图片描述

  2. 在api模块,DeptClientService接口在注解@FeignClient中添加fallbackFactory的属性值
    在这里插入图片描述

  3. api模块 mvn clean后再mvn install

  4. consumer-dept-feign工程修改YML文件,开启feign
    在这里插入图片描述

  5. 在这里插入图片描述

服务监控hystrixDashboard

Hystrix提供准实时的调用监控(Hystrix Dashboard),Hystrix会持续地记录所有通过Hystrix发起的请求的执行信息,并以统计报表和图形的形式展示给用户,包括每秒执行多少请求多少成功,多少失败等。
Netflix通过hystrix-metrics-event-stream项目实现了对以上指标的监控。
Spring Cloud也提供了Hystrix Dashboard的整合,对监控内容转化成可视化界面

在这里插入图片描述

  1. POM中添加新依赖
    在这里插入图片描述

  2. YML中只需要写端口号即可
    在这里插入图片描述

  3. 主启动类中加入新注解@EnableHystrixDashboard
    在这里插入图片描述

  4. 所有provider微服务提供类(8001/02/03)添加监控依赖配置
    在这里插入图片描述

  5. 启动dashboard模块
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/582786.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python网络数据抓取(3):Beautiful Soup

Beautiful Soup 这个库通常被称为Beautiful Soup 4(BS4)。它主要用来从HTML或XML文件中抓取数据。此外,它也用于查询和修改HTML或XML文档中的数据。 现在,让我们来了解如何使用Beautiful Soup 4。我们将采用上一节中使用的HTML数据…

【优质书籍推荐】ChatGLM3大模型本地化部署、应用开发与微调

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

Latex入门教学——常用语句介绍

目录 一、导言 二、正文 三、图片 四、公式 五、表格 六、参考文献 LaTex模板下载 IEEE模板:IEEE Article Templates - IEEE Author Center Journals通用模板:Overleaf, Online LaTeX Editor其他方法:百度,CSDN等。 一、导…

华为校招机试 - 满二叉搜索树查找(20240424)

在线OJ测试 题目详情 - 满二叉搜索树查找 - HydroOJ 题目描述 给定 (2^n) - 1 个不同的整数(1 ≤ n ≤ 10,n 为整数),构建一棵平衡满二叉搜索树。 二叉搜索树定义如下: 节点的左子树只包含小于当前节点的数节点的右子树只包含大于当前节点的数所有左子树和右子树自身必…

为什么有些3D模型导入总是渲染不出来?---模大狮模型网

在使用3D建模软件时,有时候会遇到一些导入模型后无法正确渲染的问题,这给用户带来了不便和困扰。本文将探讨一些可能导致3D模型无法渲染的原因,并提供解决方案,帮助您顺利渲染模型。 一、文件格式不兼容某些3D建模软件只支持特定的…

SDA616 600KHz、16V、2A同步降压转换器

一般说明 该SDA616是一个完全集成,高效率2A同步整流降压转换器。该SDA616工作在一个宽的输 出电流负载范围高效率。该器件提供两种工作模式,PWM控制和PFM模式开关控制,它允许在更宽的负载范围内的高效率。 该SDA616需要一个现…

电脑开机后卡在开机LOGO画面如何排查处理

当电脑开机后长时间停滞在开机LOGO画面,无法继续进入操作系统,这一现象常令用户困扰不已。本文将深入探讨导致此类问题的多种可能原因,并提供相应的解决方法,帮助你有效地诊断和排除故障。 硬件故障或接触不良 1. 硬盘问题:硬盘是系统启动的关键组件,其故障或数据线接触…

RAG Survey

本文翻译自:Retrieval-Augmented Generation for Large Language Models: A Survey https://arxiv.org/pdf/2312.10997 文章目录 摘要一、INTRODUCTION二、RAG概述A. Naive RAGB. Advanced RAGC. Modular RAGD. RAG与微调 三、 检索A. 检索来源1) 数据结…

Qt客服端开发的组件库

Qt 是一个功能丰富的跨平台 C 应用程序框架,它包含了许多用于不同目的的组件库。以下是一些主要的 Qt 组件库,这些库为开发者提供了广泛的工具和功能,以便构建复杂的应用程序。北京木奇移动技术有限公司,专业的软件外包开发公司&a…

短信接口如何快速对接

短信大家都不陌生,基本上我们每天都会收到各种各样的短信,内容有些是营销类的,有些是数字验证码,有些是快递取件码类似的通知短信,这些短信内容都是通过短信接口触发来进行发送的,那么你知道短信接口如何快…

绘制签章 乱码问题 (踩坑日记)

签章汉字乱码问题 原因:我们在docker上因为没有汉字字体需要我们手动把文件打进去 注意点:如果开启了打包过滤加上字体不过滤 绘制签章转载

数海启航:数学与人工智能的深度交织

在人类文明的长河中,数学始终扮演着探秘未知、构建理论框架的基石角色。随着科技的飞速发展,尤其是人工智能(AI)的兴起,数学与这一前沿领域的结合愈发紧密,成为推动AI进步的最强引擎。 一、数学&#xff1a…

【操作系统复习资料】(持续更新中)

目录 第一章:操作系统引论 第二章:进程的描述与控制 未完待续。。。。。接 第三章:处理机调度与死锁 第四章:存储器管理 第五章:虚拟存储器 第六章:第八节 磁盘存储器的性能和调度 第一章&#xff1a…

Docker深入探索:网络与资源控制、数据管理与容器互联以及镜像生成

目录 一、 Docker网络 (一)Docker网络实现原理 (二)Docker网络模式 1. Bridge网络(默认) 2. Host网络 3. None网络 4. Container网络 5. 自定义网络 二、资源控制 (一)cgr…

windows下pysqlite3安装

pysqlite3 下载地址:SQLite Download Page windows下安装 首先在官网中下载以下文件 sqlite-amalgamation-3450300.zip #源码文件 sqlite-dll-win-x64-3450300.zip # 根据系统选择32或者64,可通过查看我的电脑属性中查看 sqlite-tools-win-x64-345…

万兆以太网MAC设计(9)数据流仲裁模块

文章目录 一、模块接口二、模块功能描述2.1、实现思路 三、仿真3.1、仿真设计3.2、仿真波形 总结: 一、模块接口 c0和c1表示输入的俩个数据通道,c0优先级高,P_ARBITER_LAYER 表示当前是在IP层进行仲裁还是MAC层,可复用于俩个模块…

每日算法之对称二叉树

题目描述 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root [1,2,2,null,3,null,3] 输出:false 提示: …

c# 构造函数 静态构造函数 内联字段(即静态字段和实例字段) 父类构造函数 父类静态构造函数 父类内联字段 执行顺序

顺序如下: 1.子类的内联字段 2.子类的静态构造函数 3.父类的内联字段 4.父类的静态构造函数 5.父类的构造函数 6.子类的构造函数 7.子类的方法 public class A{public static string a1"A0";static A(){Console.WriteLine("父类内联字段:…

内网安全【1】——域信息收集/应用网络凭证/CS插件/Android/BloodHound

内容大纲: 概念名词: 局域网 (自己家) 工作组 (网吧) 内网域 (公司) 比如一家公司有1000台机器 运维人员去管理1000 不可能每台上去都进行软件的安装 环境的部署 密码的设置…

VSCODE通过SFTP链接VM进行开发

在vscode插件里面搜索sftp,安装。 安装之后,按ctrlshiftp,找到sftp的config 然后填写刚刚的IP,然后是你的用户名密码 如果是通过密钥链接的话就是这样配置 然后切换到这个sftp的tab里面 然后在你的项目右键,然后选择op…
最新文章