Sentinel的安装和做限流的使用

server/2025/2/7 14:22:49/

一、安装

Release v1.8.3 · alibaba/Sentinel · GitHubA powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件) - Release v1.8.3 · alibaba/Sentinelhttps://github.com/alibaba/Sentinel/releases/tag/1.8.3https://github.com/alibaba/Sentinel/releases/tag/1.8.3https://github.com/alibaba/Sentinel/releases/tag/1.8.3https://github.com/alibaba/Sentinel/releases/tag/1.8.3

打开网址,可以看到下面有一个1.8.3的版本

下载完之后放在自己指定的文件夹里

然后在上面输入cmd打开cmd控制台,进行启动

java -Dserver.port=8888 -jar sentinel-dashboard-1.8.1.jar

这里的-Dserver.port=8888意味着设置了一个名为server.port的系统属性,其值为8888。这个系统属性通常被Java应用程序用来指定其运行时的服务器端口号。

二、客户端访问

浏览器访问:

127.0.0.1:8888(ip+端口号,端口号为刚刚设置的8888)

密码默认都是sentinel

输入账号和密码之后

 看到这页面说明安装成功!

三、微服务整合sentinel

(1)引入依赖

<!--引入sentinel客户端依赖-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId><version>${spring-cloud-alibaba.version}</version>
</dependency>

(2)修改配置

server:port: 9090
spring:cloud:sentinel:transport:dashboard: 127.0.0.1:8888 #sentinel控制台所在的ip和端口

(3)浏览器访问

sentinel属于懒加载模式,其核心思想是仅在需要时才加载资源。具体来说,在Sentinel中,懒加载模式意味着只有当一个资源(如API接口)被实际访问时,Sentinel才会开始对该资源进行监控和限流等策略的配置。

所以我们得需要先访问一下接口,才能加载进去

@RestController
@RequestMapping("/test")
public class UserController {//这边为了做测试,就简单的写一个test接口@RequestMapping("/test1")public String test1(){return "test1";}//多添加一个hello的测试接口,下面会用到@RequestMapping("/hello")public String hello(){return "hello";}  
}

重启服务器,在浏览器访问一下我们刚刚写的接口 

访问成功之后,重新刷新一下sentinel

点击打开就能看见相关信息

四、sentinel做限流

对资源进行设置限流规则

资源:ip,变量,参数, url==》一般用url做限流规则

1、如何做限流规则

新增完之后就可以看见新添的

这边用jmeter进行压力测试

可以看到,假设我们一秒钟请求10个,则只有五个通过,因为我们上面进行限流,一秒钟最多五个请求

这个就是直接模式

2、三种流控模式

直接,关联,链路

(1)直接模式

刚刚用的就是直接的流控模式

(2)关联模式(更多使用在同一个微服务)

这边我们举个例子来理解关联模式

比如我们有一个订单的微服务

订单微服务 ==》资源访问数100

--创建订单 ==》它90

--查询订单 ==》它只能10

设置:流控模式换成关联模式,新增一个hello的接口,来进行测试

 测试:

当它测试数据过多的时候,访问跟它相关联的/test/test1

(3)链路模式(更多使用在不同的微服务)

资源A可以访问资源B A-》B

资源C也可以访问B C-》B

举例场景:

创建订单===》调用商品

查询订单===》调用商品

这边涉及到微服务之间的相互调用,则需要写接口,修改配置

订单调用商品,用户调用商品,形成一个链路模式,然后就先写一下不同微服务之间的调用,如果在不同的微服务下,订单是个微服务,就要设置让openfeign接受sentinel,就要修改配置(修改两个),随后运行项目,让sentinel里面有对应的微服务的方法,并且设置限流模式为链路模式,进行限流,设置参数,然后就用jmeter进行压力测试,使用json断言来判断,查看结果树,看会不会影响到 ,这边就不做演示,思路大概是这样子的

#修改配置
spring:cloud:sentinel:transport:dashboard: 127.0.0.1:8888 #sentinel控制台所在的ip和端口web-context-unify: false #关闭,使得链路跟踪不会受到影响feign:sentinel:enabled: true #让openfeign支持sentinel

 五、拓展

(1)什么是sentinel,核心功能是什么?

Sentinel 是面向分布式系统的流量控制组件,核心功能包括流量控制、熔断降级、系统自适应保护、实时监控等,目标是保障微服务的稳定性。

(2)Sentinel 和 Hystrix 的主要区别是什么?

Sentinel 更强调流量控制(QPS/并发量)和实时监控,支持动态规则配置;Hystrix 侧重于熔断和线程隔离,但已进入维护模式。Sentinel 的流量控制模型更灵活(如直接拒绝、Warm Up、匀速排队)。

(3)为什么要使用sentinel

流量控制:Sentinel可以进行限流操作,从而防止系统被过载压垮。这对于保护系统在高并发场景下的稳定性至关重要。

熔断降级:Sentinel通过熔断机制,可以在检测到某个服务出现不稳定表现时(如请求响应时间长或异常比例升高),自动对该服务的调用进行限制,让请求快速失败,从而避免影响到其他服务,保证系统的整体稳定性。

实时监控与报警:Sentinel提供了实时的监控功能,可以在控制台中看到接入应用的单台机器秒级数据,甚至500台以下规模的集群的汇总运行情况。同时,根据预设的规则,Sentinel还可以对系统的异常情况进行实时报警,及时通知相关人员进行处理,避免问题扩大化。


http://www.ppmy.cn/server/165693.html

相关文章

Pytorch与大模型有什么关系

PyTorch 是 深度学习领域最流行的框架之一&#xff0c;在大模型的训练、推理、优化等方面发挥了重要作用。 大模型&#xff08;如 GPT、LLaMA、Stable Diffusion&#xff09;大多是基于 PyTorch 进行开发和训练的。 1. PyTorch 在大模型中的作用 大模型&#xff08;如 ChatGP…

网络面试题(第一部分)

一、ARP工作原理 首先ARP工作在数据链路层&#xff0c;功能是将IP地址转换成MAC地址。例如主机A想向主机B发送消息&#xff0c;首先会查看自己ARP表中是否有主机B对应的MAC地址&#xff0c;如果有则按照ARP表中对应的MAC地址表发送&#xff0c;否则就以广播的形式发送数据包&a…

计算机网络之数据链路层(数据链路层的功能)

帧同步&#xff1a; 数据链路层将网络层传下来的数据报封装成帧&#xff0c;为了区分不同的帧&#xff0c;需要在每个帧的开头和结尾添加特殊的标记&#xff0c;以实现帧的定界和同步。这样&#xff0c;接收方就能准确地识别出一个帧的开始和结束。 差错控制&#xff1a; 在…

网络爬虫学习:应用selenium获取Edge浏览器版本号,自动下载对应版本msedgedriver,确保Edge浏览器顺利打开。

一、前言 我从24年11月份开始学习网络爬虫应用开发&#xff0c;经过2个来月的努力&#xff0c;于1月下旬完成了开发一款网络爬虫软件的学习目标。这里对本次学习及应用开发进行一下回顾总结。 前几天我已经发了一篇日志&#xff08;网络爬虫学习&#xff1a;应用selenium从搜…

处理数据及其选择关键列进行一次聚类

1. 数据加载与初步处理 # 文件路径 file_path ../data/all_database_result.csv# 读取CSV文件到DataFrame df pd.read_csv(file_path)# 选择特定的特征列 selected_features [Q10, Q12, Q13, Q14]# 缺失值处理&#xff1a;这里简单地删除含有任何缺失值的行 df.dropna(subse…

在 Linux 中,进程的状态 I 表示什么

在 Linux 中&#xff0c;进程的状态 I 表示 Idle&#xff08;空闲&#xff09;状态。进程处于 I 状态通常表示它处于 内核休眠 状态&#xff0c;即正在等待某些 I/O 操作或者资源。 不过&#xff0c;I 状态在进程列表中并不常见&#xff0c;它通常出现在 内核线程&#xff08;…

通过docker安装部署deepseek以及python实现

前提条件 Docker 安装:确保你的系统已经安装并正确配置了 Docker。可以通过运行 docker --version 来验证 Docker 是否安装成功。 网络环境:保证设备有稳定的网络连接,以便拉取 Docker 镜像和模型文件。 步骤一:拉取 Ollama Docker 镜像 Ollama 可以帮助我们更方便地管理…

python学opencv|读取图像(五十七)使用cv2.bilateralFilter()函数实现图像像素双边滤波处理

【1】引言 前序学习过程中&#xff0c;已经掌握了对图像的基本滤波操作技巧&#xff0c;具体的图像滤波方式包括均值滤波、中值滤波和高斯滤波&#xff0c;相关文章链接有&#xff1a; python学opencv|读取图像&#xff08;五十四&#xff09;使用cv2.blur()函数实现图像像素…