Hystrix学习

系列文章目录

JavaSE
基础知识、数据类型学习万年历项目代码逻辑训练习题
代码逻辑训练习题方法、数组学习图书管理系统项目
面向对象编程:封装、继承、多态学习封装继承多态习题常用类、包装类、异常处理机制学习
集合学习IO流、多线程学习仓库管理系统JavaSE项目
员工管理系统、多表查询、反射实现DBHelper学习DML、DDL、数据库对象学习
JavaWeb
网络编程、各种标签、CSS学习ECMAScript、BOM学习DOM、jQuery学习
Servlet、JSP、Cookie、Ajax学习融资管理系统JavaWeb项目
框架
MyBatis框架学习逆向工程、Spring框架IOC、AOP学习SpringMVC框架学习
SpringBoot框架学习招聘网站框架项目Vue介绍、窗体内操作、窗体间操作学习
Vue路由配置、网络请求访问框架项目、element组件介绍学习标准管理系统Vue项目
微服务
Linux安装、Nginx反向代理、负载均衡学习Docker学习Jenkins学习
Nexus学习Spring Security学习RabbitMQ学习
Redis学习MongoDB学习MongoDB学习
Nacos学习Spring Session学习Spring Gateway学习
JSR 303学习OpenFeign学习Dubbo学习
Hystrix学习

文章目录

  • 系列文章目录
  • 前言
  • 一、Hystrix介绍
    • 1. Hystrix介绍
    • 2. Hystrix的作用
    • 3. Hystrix使用场景
  • 二、Hystrix代码实现
    • 1. 项目基础
    • 2. 开启Nacos和Redis环境
    • 3. 添加依赖
    • 4. 更改项目名(可不更改)
    • 5. 开启注解
    • 6. 添加熔断函数
    • 7. 添加setMessage方法
    • 8. 添加配置信息
    • 9. 运行demo-session-01后运行demo-session-02
  • 三、仪表盘
    • 1. 添加依赖
    • 2. 添加配置类
    • 3. 启动类添加注解
    • 4. 启动项目、访问网址
  • 总结


前言

本文我们要讲述:
Hystrix
通过网盘分享的文件:SpringSession——OpenFeign.zip
链接: https://pan.baidu.com/s/1uKEYyQ80RGMnDsoa5j9v5Q?pwd=tmm5 提取码: tmm5
在下攸攸太上。


一、Hystrix介绍

Hystrix是一个用于处理分布式系统的延迟和容错的开源库。其主要作用是通过控制服务之间的通讯,从而对延迟和故障提供了强大的支持。

1. Hystrix介绍

Hystrix是一个用于处理分布式系统的延迟和容错的开源库,它的核心目标是防止分布式系统中的雪崩效应。当某个服务发生故障时,故障可能会向下游服务传播,最终导致整个系统的崩溃。Hystrix通过引入熔断器的概念,允许您对延迟和故障进行控制,从而提高系统的弹性和可靠性。

2. Hystrix的作用

熔断:当某个服务出现故障时,Hystrix可以熔断对该服务的请求,防止故障向下游传播,从而减少系统的崩溃风险。
查看微服务请求状态:Hystrix可以提供对微服务请求状态的监控和统计,帮助您了解服务的健康状况和性能表现。

3. Hystrix使用场景

Hystrix主要适用于微服务架构下的场景,特别是在面对高并发和复杂的微服务通信时更为重要。
在高并发和负载下,Hystrix可以帮助应对突发的请求压力,防止因为高负载导致系统崩溃。
根据业务需求,如果对熔断的需求相对简单,可以选择使用Hystrix。但如果需求更为复杂,可以考虑使用Sentinel,Sentinel功能更加丰富,包括限流、熔断等功能。

二、Hystrix代码实现

1. 项目基础

本项目基于OpenFeign的两个项目实现,可以在下面的网盘链接取到
SpringSession——OpenFeign.zip
可以看我之前的OpenFeign学习文章,里面会有介绍

以下更改均在demo-session-01内更改,demo-session-02无需任何改动,如需改动,会特别标出

2. 开启Nacos和Redis环境

docker start nacos
docker start redis-6379

在这里插入图片描述

3. 添加依赖

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

4. 更改项目名(可不更改)

application.properties配置文件内配置了项目名,更改为:

spring.application.name=hystrixdemo

5. 开启注解

在SpringBootMain启动类中

@EnableHystrix

在这里插入图片描述

6. 添加熔断函数

更改UserController类下的info方法,添加infoHystrix方法

    @GetMapping@HystrixCommand(fallbackMethod = "infoHystrix") //一旦熔断了,就去执行infoHystrix方法。public Result info(){UserDto userDto=userService.info();return Result.ok().put("data",userDto);}public Result infoHystrix() {return Result.error().setMessage("被熔断了");} 

在这里插入图片描述

7. 添加setMessage方法

在Result工具类中,添加setMessage方法

    public Result setMessage(String message){this.message = message;return this;}

8. 添加配置信息

在application.yml配置文件中添加如下配置信息

feign:hystrix:enabled: true

9. 运行demo-session-01后运行demo-session-02

在这里插入图片描述
关闭demo-session-02项目,刷新页面
在这里插入图片描述

三、仪表盘

1. 添加依赖

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

2. 添加配置类

package com.jjy.config;import com.netflix.hystrix.contrib.metrics.eventstream.HystrixMetricsStreamServlet;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import javax.servlet.http.HttpServlet;@Configuration
public class HystrixConfig {@Beanpublic ServletRegistrationBean<HttpServlet> httpServletServletRegistrationBean() {ServletRegistrationBean<HttpServlet> result = new ServletRegistrationBean<>(new HystrixMetricsStreamServlet());result.addUrlMappings("/actuator/hystrix.stream");return result;}
}

3. 启动类添加注解

SpringBootMain启动类内添加如下注解

@EnableHystrixDashboard

在这里插入图片描述

4. 启动项目、访问网址

先访问项目地址http://127.0.0.1:100/user
在这里插入图片描述
访问http://localhost:100/hystrix,出现如下页面
在这里插入图片描述
长条框中输入http://localhost:100/actuator/hystrix.stream;
Delay默认2000ms;
Title随意写。
在这里插入图片描述
点击Monitor Stream按钮后,不断刷新项目http://127.0.0.1:100/user
在这里插入图片描述
关闭demo-session-02项目后,不断刷新项目http://127.0.0.1:100/user
在这里插入图片描述
我们可以访问http://localhost:100/actuator/hystrix.stream,里面是这样的
在这里插入图片描述


总结

本文讲述了:
Hystrix:解决熔断问题
在下攸攸太上,所有扣我的人,我都会诅咒她,三天之内吃米线拉稀。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MAC M1 安装brew 配置环境变量,安装dart

一. 下载 brew 1. 终端输入 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 2. 如遇到下载失败情况&#xff0c;需要VPN/代理 curl: (7) Failed to connect to raw.githubusercontent.com port 443 after 8 m…

MongoDB简介

1、说到MongoDB就必须说下什么是NoSQL? NoSQL(NoSQL Not Only SQL)&#xff0c;意即反SQL运动&#xff0c;指的是非关系型的数据库&#xff0c;是一项全新的数据库革命性运动&#xff0c;早期就有人提出&#xff0c;发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系…

Java | Leetcode Java题解之第454题四数相加II

题目&#xff1a; 题解&#xff1a; class Solution {public int fourSumCount(int[] A, int[] B, int[] C, int[] D) {Map<Integer, Integer> countAB new HashMap<Integer, Integer>();for (int u : A) {for (int v : B) {countAB.put(u v, countAB.getOrDefa…

被字节恶心到了

字节 日常逛 xhs 看到一篇吐槽贴&#xff0c;表示被公司恶心到了&#xff1a; 这位网友表示&#xff0c;最近是公司举办了 Q2 和 H1 的优秀员工表彰&#xff0c;自己的 1&#xff08;直属领导&#xff09;评上了&#xff0c;但仔细一看&#xff0c;1 获奖的所有产出都是自己的&…

实时数字人DH_live使用案例

参看: https://github.com/kleinlee/DH_live ubuntu 测试 apt install ffmpeg 下载安装: git clone https://github.com/kleinlee/DH_live.git cd DH_liveconda create -n dh_live python=3.12 conda activate dh_live pip install -r requirements.txt pip install torch …

突发:Sam万字长文,OpenAI o1超越人类,o1模型训练原理、微调、能力来源-AI已死,大模型当立

OpenAl o1大模型&#xff1a;原理、突破、前景及影响 北京时间2024年9月13日凌晨&#xff0c;OpenAI正式发布了新的人工智能模型o1&#xff08;o是orion猎户座&#xff0c;1代表从头再来&#xff0c;也意味着后续将出现更多序列&#xff09;&#xff0c;就是此前OpenAI一直在高…

银河麒麟V10 SP1如何进入救援模式?

银河麒麟V10 SP1如何进入救援模式&#xff1f; 1、准备工作2、进入BIOS/UEFI进入救援模式注意事项 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在使用银河麒麟高级服务器操作系统V10 SP1时&#xff0c;如果遇到系统无法正常启动或需要进…

240 搜索二维矩阵 II

解题思路&#xff1a; \qquad 解这道题最重要的是如何利用从左到右、从上到下为升序的性质&#xff0c;快速找到目标元素。 \qquad 如果从左上角开始查找&#xff0c;如果当前matrix[i][[j] < target&#xff0c;可以向右、向下扩展元素都是升序&#xff0c;但选择哪个方向…

.Net 6.0 监听Windows网络状态切换

上次发了一个文章获取windows网络状态&#xff0c;判断是否可以访问互联网。传送门&#xff1a;获取本机网络状态 这次我们监听网络状态切换&#xff0c;具体代码如下&#xff1a; public class WindowsNetworkHelper {private static Action<bool>? _NetworkStatusCh…

初步认识产品经理

产品经理 思考问题的维度 1️⃣为什么要抓住核心用户&#xff1f; 所有和产品有关系的群体就是用户&#xff0c;存在共性和差异了解用户的付费点&#xff0c;更好的优化产品是否使用&#xff1a;&#xff08;目标用户-已使用产品&#xff1a;种子用户-尝鲜&#xff1b;核心用…

【在Linux世界中追寻伟大的One Piece】命名管道

目录 1 -> 命名管道 1.1 -> 创建一个命名管道 1.2 -> 匿名管道与命名管道的区别 1.3 -> 命名管道的打开规则 1.4 -> 例子 1 -> 命名管道 管道应用的一个限制就是只能在具有共同祖先(具有亲缘关系)的进程间通信。如果我们想在不相关的进程之间交换数据&…

C++多重继承

C多重继承 一个类可以从多个类继承&#xff0c;只需在类的基类列表中&#xff08;即冒号后&#xff09;指定更多的基类&#xff0c;用逗号分隔即可。例如&#xff0c;如果程序有一个名为Output的特定类要在屏幕上打印&#xff0c;我们希望派生类Rectangle&#xff08;长方形&a…

Netgear-WN604 downloadFile.php 信息泄露复现(CVE-2024-6646)

0x01 产品描述&#xff1a; NETGEAR WN604是一款功能强大的双频AC1200无线路由器,非常适合中大型家庭和企业使用。它支持最新的802.11ac无线标准,能提供高达1200Mbps的无线传输速度。路由器具备千兆有线网口和3个100Mbps有线网口,可满足有线和无线设备的接入需求。此外,它还内置…

JavaWeb——Vue组件库Element(5/6):案例:组件实现(概述、Form表单、Table表格、Pagination 分页、效果展示、完整代码)

目录 概述 Form表单 Table表格 Pagination 分页 效果展示 完整代码 概述 在刚才制作出来的页面当中&#xff0c;上面项目的名称已制作好&#xff0c;左侧的菜单栏也已配置好。 接下来主要处理的是右侧主展示区域当中的组件编写。 在右侧的主展示区域&#xff0c;主要有…

java版鸿鹄电子招投标系统功能架构设计 核心功能设计 鸿鹄电子招投标采购系统源码

java版鸿鹄电子招投标系统功能架构设计 核心功能设计 鸿鹄电子招投标采购系统源码

数据结构--绪论

1.数据结构的基本概念 1.1数据结构基本概念以及术语 &#xff08;1&#xff09;数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 &#xff08;2&#xff09;数据对象是具有相同性质的数据元素的集合&#xff0c;是数据的一个子集。 &#xff08;3&#xff09;数…

sql server每天定时执行sql语句

sql server每天定时执行sql语句 1、打开SQL Server Management Studio 2、鼠标右击【SQL Server 代理】&#xff0c;选择【启动(S)】&#xff0c;如已启动&#xff0c;可以省略此步骤&#xff1b; 3、右键&#xff0c;新建-》作业&#xff0c;在作业上-》新建作业&#xff…

《RabbitMQ篇》基本概念介绍

MQ功能 解耦 MQ允许不同系统或组件之间松散耦合。发送者和接收者不需要直接连接&#xff0c;从而提高了系统的灵活性和可维护性。异步处理 使用MQ可以实现异步消息传递&#xff0c;发送者可以将消息放入队列后立即返回&#xff0c;不必等待接收者处理。这提高了系统的响应速度…

【STM32单片机_(HAL库)】4-5-1【定时器TIM】【感应开关盖垃圾桶】SG90舵机模块实验

1.硬件 STM32单片机最小系统SG90舵机模块 2.软件 sg90驱动文件添加main.c程序 #include "sys.h" #include "delay.h" #include "led.h" #include "sg90.h"int main(void) {HAL_Init(); /* 初始化HAL库 */…

Linux命令大全及小例子

撰写一份关于Linux命令大全的详尽报道和分析是一项重要的任务&#xff0c;旨在让读者全面了解Linux命令的用途和应用场景。Linux系统因其强大的命令行工具而闻名&#xff0c;无论是系统管理、文件操作还是网络配置&#xff0c;Linux命令行都提供了灵活且强大的解决方案。以下是…