Java之SpringCloud Alibaba【五】【微服务 Sentinel整合openfeign进行降级】

在这里插入图片描述

一、Sentinel整合openfeign

1、复制一下order-openfeign项目(创建order-openfeign-sentinel)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
然后在stock-nacos当中编写对应的接口
在这里插入图片描述

    @RequestMapping("/reduct2")public String reduct2(){int a = 1/0;System.out.println("扣减库存");return "扣减库存:"+port;}

在order-openfeign-sentinel当中编写对应的调用微服务的业务逻辑
在这里插入图片描述

@FeignClient(name = "stock-service",path = "/stock",configuration = FeignConfig.class)
public interface StockFeignService {@RequestMapping("/reduct2")public String reduct2();}

编写对应的接口调用微服务
在这里插入图片描述

@RestController
@RequestMapping("/order")
public class OrderController {@Autowiredprivate StockFeignService stockFeignService;@RequestMapping("/add")public String add(){return stockFeignService.reduct2();}
}

完善一下配置文件
在这里插入图片描述
运行项目
在这里插入图片描述
在这里插入图片描述
访问:http://localhost:8041/order/add

在这里插入图片描述

2、Sentinel整合openfeign

引入Sentinel依赖

        <!--Sentinel依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

@Component
public class StockFeignServiceFallback implements StockFeignService{@Overridepublic String reduct2() {return "降级啦!!";}
}

在这里插入图片描述


/*
*
* 2、添加feign接口和方法
* name 指定调用rest接口所对应的服务名
* path 指定调用的rest接口所在的StockController指定的@RequestMapping
* */
@FeignClient(name = "stock-service",path = "/stock",fallback = StockFeignServiceFallback.class)
public interface StockFeignService {@RequestMapping("/reduct2")public String reduct2();}

配置yml
在这里插入图片描述

feign:sentinel:# openfeign 整合sentinelenabled: true

在这里插入图片描述
访问:http://localhost:8041/order/add
在这里插入图片描述
在这里插入图片描述

二、热点参数限流【热点识别流控】

何为热点?热点即经常访问的数据。

很多时候我们希望统计某个热点数据中访问频次最高的数据,并对其访问进行限制。

比如:
在这里插入图片描述
可以在方法上对指定传入的参数做限流

热点参数限流会统计传入参数中的热点参数,并根据配置的限流阈值与模式,对包含热点参数的资源调用进行限流。
热点参数限流可以看做是一种特殊的流量控制,仅对包含热点参数的资源调用生效。
在这里插入图片描述

注意:
1.热点规则需要使用@SentinelResource("resourceName")注解,否则不生效
2.参数必须是7种基本数据类型才会生效
测试用例
在这里插入图片描述

    @RequestMapping("/get/{id}")@SentinelResource(value = "getById",blockHandler = "HotBlockHandler")public String getById(@PathVariable("id")  Integer id){System.out.println("正常访问");return "正常访问";}public String HotBlockHandler(@PathVariable("id")  Integer id, BlockException e){return "热点异常处理";}
}

对上述id参数进行流控
访问:http://localhost:8041/order/get/1
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
不断访问:http://localhost:8041/order/get/1
在这里插入图片描述
我们访问id为2 的
不断访问:http://localhost:8041/order/get/2
无论怎样访问依旧是正常
在这里插入图片描述

三、Sentinel控制台规则配置详解

1、系统规则

在这里插入图片描述
Sentinel系统自适应限流从整体维度对应用入口流量进行控制,结合应用的Load、CPU使用率、总体平均RT、入口QPS 和并发线程数等几个维度的监控指标,通过自适应的流控策略,让系统的入
口流量和系统的负载达到一个平衡,让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。

  • Load自适应(仅对Linux/Unis-like机器生效)∶系统的load1作为启发指标,进行自适应系统保护。当系统load1超过设定的启发值,且系统当前的并发线程数超过估
    算的系统容量时才会触发系统保护(BBR阶段)。系统容量由系统的maxOps * minRt估算得出。设定参考值一般是CPU cores * 2.5
    https://www.cnblogs.com/gentlemanhai/p/8484839.html

2、CPU usage (1.5.0+版本)︰当系统CPU使用率超过阈值即触发系统保护(取值范围0.0-1.0),比较灵敏。

在这里插入图片描述

在这里插入图片描述
不断访问
在这里插入图片描述

3、平均RT:当单台机器上所有入口流量的平均RT达到阈值即触发系统保护,单位是毫秒。

4、并发线程数:当单台机器上所有入口流量的并发线程数达到阈值即触发系统保护

2.0x

5、入口QPS:当单台机器上所有入口流量的QPS达到阈值即触发系统保护。

在这里插入图片描述
在这里插入图片描述
访问:http://localhost:8041/order/get/1
在这里插入图片描述
不断访问
在这里插入图片描述

四、Sentinel持久化

1、Sentinel持久化模式

Sentinel规则的推送有下面三种模式:
在这里插入图片描述

1.1 原始模式

如果不做任何修改,Dashboard的推送规则方式是通过API将规则推送至客户端并直接更新到内存中:
在这里插入图片描述
这种做法的好处是简单,无依赖;坏处是应用重启规则就会消失,仅用于简单测试,不能用于生产环境。

1.2 拉模式

pll模式的数据源(如本地文件、RDBMS等)一般是可写入的。使用时需要在客户端注册数据源:将对应的读数据源注册至对应的 RuleManager,将写数据源注册至tansport的WritableDataSourceRegistry 中。

1.3 推模式

生产环境下一般更常用的是push模式的数据源。

对于push模式的数据源,如远程配置中心(Zookeeper Nocos,Apole等等),推送的操作不应由Sentinel客户端进行,而应该经控制台统一进行管理,直接进行推送,数据源仅负责获取配置中心推送的配置并更新到本地。

因此推送规则正确做法应该是配置中心控制台/Sentiel控制台→配置中心→ Sentinel数据源→Sentinel

而不是经Sentinel数据源推送至配置中心。这样的流程就非常清晰了︰

1.3.1 基于Nacos配置中心控制台实现推送
<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId>
</dependency>

nacos配置中心中配置流控规则

1.3.2 配置nacos

http://192.168.180.128:8849/nacos/#/configurationManagement?dataId=&group=&appName=&namespace=&pageSize=&pageNo=

在这里插入图片描述

[{"resource": "/order/flow","controlBehavior": 0,"count": 10.0,"grade": 1,"limitApp": "default","startegy": 0}
]

在这里插入图片描述

    <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--sentinel启动器--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency><dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId></dependency></dependencies>

设置对应的配置文件
在这里插入图片描述

server:port: 8861
spring:application:name: order-sentinelcloud:sentinel:transport:dashboard: 127.0.0.1:8858web-context-unify: false #默认将调用链路收敛datasource:flow-rule:nacos:server-addr: 192.168.180.128:8849username: nacospassword: nacosdataId: order-sentinel-flow-rulerule-type: flow

访问:http://127.0.0.1:8861/order/flow
在这里插入图片描述
不断连续点击访问
在这里插入图片描述

我们可以看到
http://127.0.0.1:8858/#/dashboard/flow/order-sentinel

sentinel被持久化了
在这里插入图片描述

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

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

相关文章

使用安全复制命令scp在Windows系统和Linux系统之间相互传输文件

现在已经有很多远程控制服务器的第三方软件平台&#xff0c;比如FinalShell&#xff0c;MobaXterm等&#xff0c;半可视化界面&#xff0c;使用起来非常方便和友好&#xff0c;两个系统之间传输文件直接拖就行&#xff0c;当然也可以使用命令方式在两个系统之间相互传递。 目录…

计算机毕设 基于深度学习的植物识别算法 - cnn opencv python

文章目录 0 前言1 课题背景2 具体实现3 数据收集和处理3 MobileNetV2网络4 损失函数softmax 交叉熵4.1 softmax函数4.2 交叉熵损失函数 5 优化器SGD6 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&a…

AndroidStudio3.5.2修改项目项目包名

公司项目要打造成产品进行演示&#xff0c;需要更换不同的包名进行安装在同一设备上&#xff0c;即所谓的马甲包 更改步骤基本一样 https://blog.csdn.net/qq_35270692/article/details/78336049 需要注意的是&#xff0c;按照上边的步骤修改完后&#xff0c;如果项目中有数据…

秒懂算法2

视频链接 : 希望下次秒懂的是算法题_哔哩哔哩_bilibili P1094 [NOIP2007 普及组] 纪念品分组 原题链接 : [NOIP2007 普及组] 纪念品分组 - 洛谷 思路 : 排序 贪心 双指针首先先对输入进来的数组进行排序(由小到大)运用贪心的思想 : 前后结合,令l1,rn,若a[l]a[r]<w…

开发智能应用的新范式:大数据、AI和云原生如何构建智能软件

文章目录 1.利用大数据实现智能洞察2. 集成人工智能和机器学习3. 云原生架构的弹性和灵活性4. 实现实时处理和响应5. 数据安全和隐私保护6. 可解释性和透明性7. 持续创新和迭代8. 数据伦理和合规性 &#x1f388;个人主页&#xff1a;程序员 小侯 &#x1f390;CSDN新晋作者 &a…

macOS使用命令行连接Oracle(SQL*Plus)

Author: histonevonzohomail.com Date: 2023/08/25 文章目录 SQL\*Plus安装下载环境配置 SQL\*Plus远程连接数据库参考文献 原文地址&#xff1a;https://histonevon.top/archives/oracle-mac-sqlplus数据库安装&#xff1a;Docker安装Oracle数据库 (histonevon.top) SQL*Plus…

安防视频监控/视频集中存储/云存储平台EasyCVR无法播放HLS协议该如何解决?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、…

继承AndroidView Model的错误

ViewModelProvider(this)[RegisterViewModel::class.java] 一行简单的代码&#xff0c;总是报这个错误 Caused by: java.lang.NoSuchMethodException: com.xinfa.registerlogin.viewmodel.LoginViewModel. [class android.app.Application] 经过一下午的思索&#xff0c;终于找…

查看edge浏览器插件的安装位置

C:\Users\zhang\AppData\Local\Microsoft\Edge\User Data\Default\Extensions 这是我的目录&#xff0c;把中间的的替换成你的电脑用户名就可以了 你也可以先输入目录的部分名称&#xff0c;下拉找对应的目录

Spring boot中调用C/C++(dll)

添加JNA依赖 <dependency><groupId>net.java.dev.jna</groupId><artifactId>jna</artifactId><version>5.5.0</version> </dependency>准备C代码/C代码 如下是C代码&#xff0c;文件名&#xff1a;xizi.c #include <std…

【爬虫】5.5 Selenium 爬取Ajax网页数据

目录 AJAX 简介 任务目标 创建Ajax网站 创建服务器程序 编写爬虫程序 AJAX 简介 AJAX&#xff08;Asynchronous JavaScript And XML&#xff0c;异步 JavaScript 及 XML&#xff09; Asynchronous 一种创建交互式、快速动态网页应用的网页开发技术通过在后台与服务器进行…

Spring Security注销后未正确保存空的SecurityContext漏洞CVE-2023-20862

文章目录 0.前言漏洞Spring Security介绍 1.参考文档2.基础介绍3.解决方案3.1. 升级版本3.2. 临时替代方案 4.Spring Security使用教程简单代码示例 0.前言 背景&#xff1a;公司项目扫描到 Spring-security 组件 注销后未正确保存空的SecurityContext CVE-2023-20862 漏洞 高…

Angular安全专辑之三:授权绕过,利用漏洞控制管理员账户

这篇文章是针对实际项目中所出现的问题所做的一个总结。简单来说&#xff0c;就是授权绕过问题&#xff0c;管理员帐户被错误的接管。 详细情况是这样的&#xff0c;我们的项目中通常都会有用户身份验证功能&#xff0c;不同的用户拥有不同的权限。相对来说管理员账户所对应的…

数据治理与数据安全治理思考

大数据经过多年发展&#xff0c;在不同的业务场景下得到深入应用&#xff0c;在企业提升经营目标、促进经营决策&#xff0c;以及通过大数据应用促进经济发展、优化民生工程、解决生活服务便捷等场景起到了重要作用。特别是十九届四中全会史无前例的将“数据”作为新型生产要素…

java对时间序列每x秒进行分组

问题&#xff1a;将一个时间序列每5秒分一组&#xff0c;返回嵌套的list&#xff1b; 原理&#xff1a;int除int会得到一个int&#xff08;也就是损失精度&#xff09; 输入&#xff1a;排序后的list&#xff0c;每几秒分组值 private static List<List<Long>> get…

Autosar存储入门系列04_NvM的CRC比较机制及同/异步写

本文框架 0.前言1. NvM的CRC校验1.1 CRC 比较机制 2. NvM的同步写及异步写2.1 NvM的同步写2.1 NvM的异步写 0.前言 本系列是Autosar存储入门系列&#xff0c;希望能从学习者的角度把存储相关的知识点梳理一遍&#xff0c;这个过程中如果大家觉得有讲得不对或者不够清晰的地方&…

安防监控/磁盘阵列存储/视频汇聚平台EasyCVR调用rtsp地址返回的IP不正确是什么原因?

安防监控/云存储/磁盘阵列存储/视频汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等&#xff0c;以及厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等&#xff0c;能对外分发RTSP、RT…

火狐浏览器使用scss嵌套编写css无法识别问题

火狐浏览器使用scss嵌套编写css无法识别问题 版本&#xff1a; “node-sass”: “^4.14.1”, “sass-loader”: “^7.3.1”,vue版本&#xff1a; v2问题描述&#xff1a; 我的文件目录是这样的&#xff1a; 而在scss文件中我是这样书写的 .vue文件中 在火狐浏览器中 在谷…

每天 26,315 美元罚款?交通安全局要求特斯拉提供 Autopilot数据

根据美国国家公路交通安全管理局&#xff08;NHTSA&#xff09;最近的特别命令&#xff0c;特斯拉公司被要求提供关于其自动驾驶功能Autopilot的相关信息。这一命令是继NHTSA于2021年8月启动初步评估后&#xff0c;在2022年6月升级为正式调查的一部分&#xff0c;NHTSA近期对特…

文件上传漏洞-upload靶场3-4(全网最详细解读)

文件上传漏洞-upload靶场3-4关通关笔记&#xff08;全网最详细解读&#xff09; upload 第三关&#xff08;特殊后缀&#xff09; 思路 按照第一关和第二关的思路&#xff0c;先随便上传一个文件用burpsuite工具抓包&#xff0c;看它到底是前段验证还是后端验证。 上传一个we…