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个
在这里插入图片描述

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

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

相关文章

[Docker学习笔记]Docker的原理Docker常见命令

文章目录 什么是DockerDocker的优势Docker的原理Docker 的安装Docker 的 namespaces Docker的常见命令docker version:查看版本信息docker info 查看docker详细信息我们关注的信息 docker search:镜像搜索docker pull:镜像拉取到本地docker push:推送本地镜像到镜像仓库docker …

恋爱辅助应用小程序app开发之广告策略

恋爱话术小程序带流量主广告开启&#xff0c;是一个有效的盈利模式&#xff0c;可以增加小程序的收入来源。以下是对此的详细分析 一、流量主广告的定义与优势 流量主广告是指在小程序中嵌入广告位&#xff0c;通过展示广告内容来获取广告主的付费。对于恋爱话术小程序而言&am…

胤娲科技:AI界的超级充电宝——忆阻器如何让LLM告别电量焦虑

当AI遇上“记忆橡皮擦”&#xff0c;电量不再是问题&#xff01; 嘿&#xff0c;朋友们&#xff0c;你们是否曾经因为手机电量不足而焦虑得像个无头苍蝇&#xff1f;想象一下&#xff0c;如果这种“电量焦虑”也蔓延到了AI界&#xff0c; 特别是那些聪明绝顶但“耗电如喝水”的…

yolov8环境安装

yolov8 git地址 https://github.com/ultralytics/ultralytics/tree/main 我的电脑显卡配置 nvidia-smi cuda11.8下载 https://developer.nvidia.com/cuda-11-8-0-download-archive?target_osWindows&target_archx86_64&target_version10&target_typeexe_local …

Arthas perfcounter(查看当前 JVM 的 Perf Counter 信息)

文章目录 二、命令列表2.1 jvm相关命令2.1.13 perfcounter&#xff08;查看当前 JVM 的 Perf Counter 信息&#xff09;举例1&#xff1a;查看当前 JVM 的 Perf Counter 信息举例2&#xff1a;可以用-d参数打印更多信息 本人其他相关文章链接 二、命令列表 2.1 jvm相关命令 2…

ArcGIS与ArcGIS Pro去除在线地图服务名单

我们之前给大家分享了很多在线地图集&#xff0c;有些地图集会带有制作者信息&#xff0c;在布局制图的时候会带上信息影响出图美观。 一套GIS图源集搞定&#xff01;清新规划底图、影像图、境界、海洋、地形阴影图、导航图 比如ArcGIS&#xff1a; 比如ArcGIS Pro&#xff1a…

vue基于Spring Boot框架的高校实验室预约管理系统

目录 毕设制作流程功能和技术介绍系统实现截图开发核心技术介绍&#xff1a;使用说明开发步骤编译运行代码执行流程核心代码部分展示可行性分析软件测试详细视频演示源码获取 毕设制作流程 &#xff08;1&#xff09;与指导老师确定系统主要功能&#xff1b; &#xff08;2&am…

万字长文,解读大模型技术原理(非常详细)零基础入门到精通,收藏这一篇就够了

大模型是指具有大规模参数和复杂计算结构的机器学习模型。 本文从大模型的发展历程出发&#xff0c;对大模型领域的各个技术细节进行详细解读&#xff0c;供大家在了解大模型基本知识的过程中起到一定参考作用。 一、大模型的定义 大语言模型作为一个被验证可行的方向&#x…

什么是氧化镧

氧化镧是由氧和镧元素组成的化合物&#xff0c;化学式为La₂O₃。它是一种白色固体粉末&#xff0c;常见于镧系元素的氧化物中。其特性如下&#xff1a; 一、物理特性&#xff1a; 外观&#xff1a;氧化镧是一种白色或略带黄色的粉末&#xff0c;无臭无味。熔点&#xff1a;熔…

Docker面试-24年

1、Docker 是什么&#xff1f; Docker一个开源的应用容器引擎&#xff0c;是实现容器技术的一种工具&#xff0c;让开发者可以打包他们的应用以及环境到一个镜像中&#xff0c;可以快速的发布到任何流行的操作系统上。 2、Docker的三大核心是什么? 镜像&#xff1a;Docker的…

Cursor第一次体验

The AI Code Editor—Cursor 初体验 1.初闻 openAI ChatGPT 这个词相信大家都不陌生&#xff0c;作为AI界的顶流&#xff0c;ChatGPT 在2023年可谓是火遍全球&#xff0c;作为程序员&#xff0c;我们当然要紧跟时代的步伐&#xff0c;体验体验这个AI界的顶流。 同时作为生成式…

爬虫入门之爬虫原理以及请求响应

爬虫入门之爬虫原理以及请求响应 爬虫需要用到的库, 叫requests. 在导入requests库之前, 需要安装它, 打开cmd: 输入pip install 库名 pip install requests后面出现successful或requirement already就说明已经下载成功了!!! 下载出现的问题: 1.有报错或者是下载慢 修改镜像…

系统架构设计师-知识产权与标准化

目录 一、保护范围与对象 二、保护期限 三、知识产权人确定 四、侵权判断 五、标准化 一、保护范围与对象 知识产权是权利人依法就下列课题享有的专有权利&#xff1a; &#xff08;一&#xff09;作品&#xff08;著作&#xff09; &#xff08;二&#xff09;发明、实用…

通过人工智能AI大模型定制的完美旅游行程

人工智能在购票与乘车体验优化方面发挥着重要作用&#xff0c;通过智能技术的应用&#xff0c;不仅提升了购票效率&#xff0c;还改善了乘车体验。以下是人工智能赋能购票与乘车体验优化的具体表现&#xff1a; 一、购票体验优化 智能推荐系统&#xff1a; 购票平台如12306利…

Mac安装Manim并运行

1.在macOS上创建Python虚拟环境&#xff0c;可以使用venv模块&#xff0c;这是Python自带的库&#xff0c;也可以使用conda。以下是使用venv创建和使用Python虚拟环境的步骤&#xff1a; 打开终端。 创建一个新的目录来存放你的项目&#xff0c;并进入该目录&#xff1a; mk…

管理层“建行化”弊端显现?增收不增利,海外业务亦“不争气”

撰稿|芋圆 曾经&#xff0c;上海银行&#xff08;SH:601229&#xff09;在城商行中无论是规模还是盈利均排在前位&#xff0c;仅次于北京银行&#xff08;SH:601169&#xff09;。而近些年&#xff0c;该行的增长态势大不如前&#xff0c;在城商行中的排位持续下滑&#xff0c…

profinet转Ethernet网关在工业现场如何应用

一、项目背景 在某工业自动化系统中&#xff0c;现有的设备采用Profinet通信协议&#xff0c;而新引入的一些智能设备只支持Ethernet通信。为了实现不同协议设备之间的互联互通&#xff0c;决定采用开疆智能Profinet转Ethernet网关来解决通信兼容性问题。 二、硬件准备 1.支持P…

无人机之集群控制及应用

一、无人机集群控制 无人机集群控制是指通过先进的通信、导航和控制算法&#xff0c;实现多架无人机之间的协同、协调和高效的任务执行。其关键技术包括&#xff1a; 通信技术&#xff1a;实现无人机之间的实时数据传输和共享&#xff0c;确保集群控制的准确性和稳定性。 路径…

解决docker一直出现“=> ERROR [internal] load metadata for docker.io/library/xxx“的问题

docker拉取镜像时报错&#xff0c;除标题外&#xff0c;还报如下信息 此时想到是不是拉取超时呢&#xff0c;然后配置了一下docker拉取镜像源 vm /etc/docker/daemon.json { "registry-mirrors": ["https://jq794zz5.mirror.aliyuncs.com"] } # 重新加载配…

斩获亚马逊“商采转型之星”奖 ,益而益(ELEGRP)品牌出海正当时

“产业出海&#xff0c;共赢商采”2024亚马逊企业购年度论坛于9月4日在苏州举办&#xff0c;益而益集团&#xff08;ELEGRP&#xff09;荣获“商采转型之星”大奖&#xff0c;成为全国仅三家获奖企业之一。此奖项表明益而益&#xff08;ELEGRP&#xff09;在品牌出海战略方面的…