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

springboot整合sentinel和对feign熔断降级

一、准备

  • docker安装好sentinel-dashboard(sentinel控制台),参考docker安装好各个组件的命令
  • 启动sentinel-dashboard,我的虚拟机ip为192.168.200.131,sentinel-dashboard的端口为8858

二、整合sentinel的主要工作

  • 在需要监控的服务中引入spring-cloud-starter-alibaba-sentinel依赖
  • bootstrap.yml中设置好sentinel-dashboardip:port

在我的项目中,给order-serviceproduct-service都引入了sentinel

# pom.xml
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency># bootstrap.yml
spring:cloud:sentinel:transport:dashboard: 192.168.200.131:8858

三、查看sentinel控制台

  • 启动两个服务
  • docker启动sentinel控制台
    • 浏览器输入:http://192.168.200.131:8858/
    • 输入默认账号密码都是sentinel

刚开始控制台左边只能看到sentinel-dashboard,只有当我们第一次访问过后,相应的服务和请求才会在左边(和簇点链路)中出现

在这里插入图片描述

四、控制台基础功能

4.1 流量控制

4.2 熔断降级

4.2.1 当未配置熔断降级功能时

product-service/product/getByObj限流为QPS=10,超过10则迅速失败

在这里插入图片描述使用jmeter进行压测,QPS为20,访问接口为http://127.0.0.1:8081/order/get2,发现20个请求里有10个请求访问失败,浏览器报500错误

在这里插入图片描述
此外,idea控制台报异常

feign.FeignException$TooManyRequests: [429] during [POST] to [http://product-service/product/getByObj] [IProductClient#getByObj(ProductDTO)]: [Blocked by Sentinel (flow limiting)]

sentinel控制台显示有10个请求被拒绝

在这里插入图片描述

4.2.1 给IProductClient配置熔断降级功能

IProductClient这个feign接口为例,当这个接口对应的http请求被限流阻断时,启用一个新的IProductClient对服务进行降级(实际项目中比如:"当前请求繁忙,请稍后访问"或者推荐别的页面)。
步骤如下:

  • sd-api模块的com.hdl.api.client.product包下建一个fallback包,用来存放feignclient的请求调用被熔断时降级处理的类
  • 在该包下建ProductClientFallback
  • IProductClient@FeignClient注解上配置fallbackFactory = ProductClientFallback.class 【1】
  • 需要将ProductClientFallback类放入ioc容器【2】,因此在com.hdl.api.config包下建一个FallbackConfig,用来生产ProductClientFallbackbean,同时将FallbackConfig放到·spring.factories·文件里
  • order-serviceproduct-service模块的bootstrap.yml中配置feign.sentinel.enabled=true【3】

结构如下
在这里插入图片描述
sd-api模块不需要引入sentinel依赖,ProductClientFallback类代码如下:

@Slf4j
public class ProductClientFallback implements FallbackFactory<IProductClient> {@Overridepublic IProductClient create(Throwable cause) {log.error("查询product服务异常",cause);return new IProductClient() {@Overridepublic ProductDTO getById(Integer id, Integer price) {ProductDTO productDTO = new ProductDTO();productDTO.setName("getById的默认product");return productDTO;}@Overridepublic ProductDTO getByObj(ProductDTO productDTO) {ProductDTO productDTO1 = new ProductDTO();productDTO.setName("getByObj的默认product");return productDTO1;}@Overridepublic ProductDTO getByParams(ProductDTO productDTO, Integer price) {ProductDTO productDTO2 = new ProductDTO();productDTO.setName("getByParams的默认product");return productDTO2;}};}
}

其它两个模块结构
在这里插入图片描述

测试
sentinel限流qps为10
在这里插入图片描述

使用jmeter进行压测,QPS为20,访问接口为http://127.0.0.1:8081/order/get2,发现20个请求里虽然超过了限流但,返回全都成功了,并且熔断的feign走的fallback返回的是默认的null
在这里插入图片描述

idea控制台打印出了fallback类的日志,并且有异常

在这里插入图片描述

feign.FeignException$TooManyRequests: [429] during [POST] to [http://product-service/product/getByObj] [IProductClient#getByObj(ProductDTO)]: [Blocked by Sentinel (flow limiting)]

sentinel控制台通过了12个(跟限流的10差不多),拒绝了8个
在这里插入图片描述

相关文章:

springboot整合sentinel和对feign熔断降级

一、准备 docker安装好sentinel-dashboard&#xff08;sentinel控制台&#xff09;&#xff0c;参考docker安装好各个组件的命令启动sentinel-dashboard&#xff0c;我的虚拟机ip为192.168.200.131&#xff0c;sentinel-dashboard的端口为8858 二、整合sentinel的主要工作 在…...

遗传算法与深度学习实战——使用进化策略实现EvoLisa

遗传算法与深度学习实战——使用进化策略实现EvoLisa 0. 前言1. 使用进化策略实现 EvoLisa2. 运行结果相关链接 0. 前言 我们已经学习了进化策略 (Evolutionary Strategies, ES) 的基本原理&#xff0c;并且尝试使用 ES 解决了函数逼近问题。函数逼近是一个很好的基准问题&…...

HttpServletRequest简介

HttpServletRequest是什么&#xff1f; HttpServletRequest是一个接口&#xff0c;其父接口是ServletRequest&#xff1b;HttpServletRequest是Tomcat将请求报文转换封装而来的对象&#xff0c;在Tomcat调用service方法时传入&#xff1b;HttpServletRequest代表客户端发来的请…...

c++开发之编译curl(安卓版本)

为了在 Android 上编译支持 OpenSSL 的 libcurl&#xff0c;你需要手动编译 libcurl 和 OpenSSL&#xff0c;并确保它们能够在 Android 的交叉编译环境中正常工作。以下是详细的步骤说明。 1. 安装必要工具 在编译之前&#xff0c;确保你已经安装了以下工具&#xff1a; And…...

QT+ESP8266+STM32项目构建三部曲三--QT从环境配置到源程序的解析

一、阿里云环境配置 大家在编写QT连接阿里云的程序之前&#xff0c;先按照下面这篇文章让消息可以在阿里云上顺利流转 QTESP8266STM32项目构建三部曲二--阿里云云端处理之云产品流转-CSDN博客文章浏览阅读485次&#xff0c;点赞7次&#xff0c;收藏4次。创建两个设备&#xff…...

Web APIs 5:Window对象(BOM)+本地存储

Web APIs 5&#xff08;BOM&#xff1a;Window对象本地存储&#xff09; 1.BOM(浏览器对象模型)&#xff08;后面几个对象都为BOM对象&#xff09; BOM对象包含&#xff1a;navigator、location、document(DOM对象)、history、screenBOM是一个全局对象&#xff0c;即JS中的顶…...

神经网络(四):UNet图像分割网络

文章目录 一、简介二、网络结构2.1编码器部分2.2解码器部分2.3完整代码 三、实战案例 论文链接&#xff1a;点击跳转 一、简介 UNet网络是一种用于图像分割的卷积神经网络&#xff0c;其特点是采用了U型网络结构&#xff0c;因此称为UNet。该网络具有编码器和解码器结构&#…...

Java 编码系列:注解处理器详解与面试题解析

引言 在上一篇文章中&#xff0c;我们详细探讨了 Java 注解的基本概念、自定义注解、元注解等技术。本文将继续深入探讨 Java 注解处理器&#xff08;Annotation Processor&#xff09;&#xff0c;介绍如何编写注解处理器&#xff0c;并结合大厂的最佳实践和面试题详细解析其…...

C语言 | Leetcode C语言题解之第441题排列硬币

题目&#xff1a; 题解&#xff1a; class Solution { public:int arrangeCoins(int n) {return (int) ((sqrt((long long) 8 * n 1) - 1) / 2);} };...

Linux noVNC远程桌面(xfce)部署

一、安装 VNC 服务器和桌面环境 Notebook实验 常用vnc服务 VNC (Virtual Network Computing) 是一种远程桌面协议&#xff0c;可以让你通过网络访问服务器的图形界面。 TurboVNC&#xff1a;专为图形密集型应用设计&#xff0c;尤其适合 3D 可视化和高分辨率图像的远程传输…...

【网络安全】身份认证

1. 身份认证 1.1 定义 身份认证&#xff08;Authentication&#xff09;是确认用户身份的过程&#xff0c;确保只有授权的用户才能访问系统或资源。它通常涉及验证用户提供的凭证&#xff0c;如密码、生物特征或其他识别标志。 1.2 重要性 身份认证是信息安全的第一道防线&…...

LeetCode - #124 二叉树中的最大路径和(Top 100)

文章目录 前言1. 描述2. 示例3. 答案关于我们前言 本题为 LeetCode 前 100 高频题 我们社区陆续会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。)的 Swift 算法题题解整理为文字版以方便大家学习与阅读。 LeetCode 算法到目前我们已经更新到 123 期…...

Java:插入排序

目录 排序的概念 插入排序 直接插入排序 哈希排序 排序的概念 排序&#xff1a;所谓的排序&#xff0c;就是使一串记录&#xff0c;按照某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个…...

How FAR ARE WE FROM AGI?(ICLR AGI Workshop 2024)概览

关注B站可以观看更多实战教学视频&#xff1a;hallo128的个人空间 How FAR ARE WE FROM AGI?官网 How FAR ARE WE FROM AGI?&#xff08;ICLR AGI Workshop 2024&#xff09; 该研讨会将于2024年5月11日在奥地利维也纳以混合模式举行&#xff0c;作为 ICLR 2024年会议的一部…...

leetcode刷题day33|动态规划Part02(62.不同路径、63. 不同路径 II、 343.整数拆分、96.不同的二叉搜索树)

62.不同路径 机器人从(0 , 0) 位置出发&#xff0c;到(m - 1, n - 1)终点。 动规五部曲 1、确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i][j] &#xff1a;表示从&#xff08;0 &#xff0c;0&#xff09;出发&#xff0c;到(i, j) 有dp[i][j]条不同的路…...

基于Python大数据的B站热门视频的数据分析及可视化系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…...

matlab-批处理图像质量变化并形成折线图 (PSNR)

%修改路径就能用&#xff0c;图片分辨率要一致 %clc;clear all;close all;tic;%清理内存 file_pathE:\test\resources\image\;% 批量图像所在的文件夹下 file_save_pathE:\test\resources\SaveImage\;% 要存储的地址 img_path_listdir(strcat(file_path,*.jpg));% 获取批量bm…...

[Doc][Ros2]ros2中Qos(Quality of Service,服务质量)介绍

在 ROS 2 中,QoS(Quality of Service,服务质量)是用于控制节点之间消息传递的可靠性、历史存储和数据持久性等方面的机制。通过 QoS 设置,用户可以更细粒度地控制消息传递的行为,确保在不同网络环境或应用场景中满足特定的通信需求。 几个常用的包: QoSProfile: 含义…...

SpringBoot日志集成-LogBack

Log4J&#xff1a;最早的Java日志框架之一&#xff0c;由Apache基金会发起&#xff0c;提供灵活而强大的日志记录机制JDK自带的日志框架&#xff1a;java.util.logging.Logg&#xff0c;是JDK1.4之后提供的日志API&#xff0c;已淘汰logback&#xff1a; logback一个开源的日志…...

Google BigTable架构详解

文章目录 什么是BigTable?架构图一、整体架构二、数据存储与索引存储模型 三、数据拆分与存储四、元数据管理五、读写流程 其他内容概览负载平衡其他存储和数据库选项 什么是BigTable? Bigtable是Google开发的一个高性能、可扩展的分布式存储系统&#xff0c;用于管理大规模…...

为AI智能体构建自动化RSS信息管道:agent-rss工具详解与实践

1. 项目概述&#xff1a;为AI智能体打造的RSS信息管道 如果你正在构建或使用AI智能体&#xff08;比如Claude Code、OpenClaw这类工具&#xff09;&#xff0c;并且希望它们能像人类一样&#xff0c;定时、定向地获取互联网上的最新信息&#xff0c;那么你很可能需要一个专门为…...

FPGA仿真库配置避坑指南:Xilinx 7系、Altera Cyclone V、Lattice ECP5在ModelSim 10.6d下的完整流程

FPGA仿真库配置避坑指南&#xff1a;Xilinx 7系、Altera Cyclone V、Lattice ECP5在ModelSim 10.6d下的完整流程 第一次在ModelSim 10.6d环境下配置FPGA仿真库时&#xff0c;我花了整整三天时间排查各种路径错误和权限问题。直到现在&#xff0c;我还清楚地记得那个深夜——当仿…...

MobaXterm 全能终端神器:实战指南

写在前面&#xff1a;作为Windows下最全能的远程终端工具&#xff0c;MobaXterm 在 2026 年已迭代至 v26.0 版本。本文基于最新版&#xff0c;从工具选型对比、核心功能实战到效率提升技巧&#xff0c;带你真正掌握这款"瑞士军刀"。文末附赠快捷键大全和安全配置清单…...

SQLite Having 子句详解

SQLite Having 子句详解 SQLite 是一款轻量级的数据库管理系统,广泛应用于移动应用、桌面应用以及各种嵌入式系统。在 SQLite 中,HAVING 子句是一个非常重要的特性,它用于对 GROUP BY 子句的查询结果进行过滤。本文将详细介绍 SQLite 的 HAVING 子句,包括其用法、语法以及…...

半导体供应链风险管理:从噪音中识别信号,构建韧性决策框架

1. 从一则旧闻看半导体产业的“噪音”与“信号”2013年春天&#xff0c;一则关于朝鲜可能威胁韩国三星和SK海力士内存芯片工厂的消息&#xff0c;在投资圈和部分科技媒体中泛起了一阵涟漪。一位来自俄亥俄州的投资者言之凿凿&#xff0c;指出全球65%的DRAM和55%的闪存产能集中在…...

DeepSeek(V3为主、兼顾V2/R1)算力优化细节详解

DeepSeek&#xff08;V3为主、兼顾V2/R1&#xff09;算力优化细节详解以下是针对核心优化模块的深入技术拆解&#xff0c;包含MLA数学原理、FP8精准实现、无辅助损失负载均衡、R1-GRPO算法核心&#xff0c;内容基于DeepSeek-V3官方技术报告及2026年5月公开权威分析。DeepSeek系…...

DeFi预测市场套利机器人:延迟套利与结构性对冲策略详解

1. 项目概述&#xff1a;在2.7秒的缝隙中寻找确定性如果你在DeFi世界里寻找一种“低风险、高确定性”的套利机会&#xff0c;那么Polymarket这类预测市场可能是一个被低估的宝藏。这个项目&#xff0c;genoshide/polymarket-arbitrage-trading-bot&#xff0c;本质上是一个高度…...

保姆级教程:用Intel官方工具搞定Realsense D435深度不准和黑点问题

深度视觉优化实战&#xff1a;Intel RealSense D435深度校准全流程解析 刚拆封的RealSense D435摄像头在深度模式下出现零星黑点&#xff1f;深度图某些区域数值明显失真&#xff1f;这些问题往往不是硬件缺陷&#xff0c;而是出厂校准参数与实际使用环境不匹配导致的。作为计算…...

3分钟搞定浏览器二维码:Chrome QRCode插件的终极使用秘籍

3分钟搞定浏览器二维码&#xff1a;Chrome QRCode插件的终极使用秘籍 【免费下载链接】chrome-qrcode :zap: A Chrome plugin to Genrate QRCode of URL / Text, or Decode the QRcode in website. 一个Chrome浏览器插件&#xff0c;用于生成当前URL或者选中内容的二维码&#…...

如何在10分钟内完成1小时视频硬字幕提取:望言OCR完整指南

如何在10分钟内完成1小时视频硬字幕提取&#xff1a;望言OCR完整指南 【免费下载链接】SubtitleOCR 快如闪电的硬字幕提取工具。仅需苹果M1芯片或英伟达3060显卡即可达到10倍速提取。A very fast tool for video hardcode subtitle extraction 项目地址: https://gitcode.com…...