Sentinel的安装和做限流的使用

news/2025/2/6 16:31:36 标签: sentinel

一、安装

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.niftyadmin.cn/n/5843190.html

相关文章

你也在这里

晴&#xff0c;2025年2月5日 “忙”&#xff0c;可能要把我忘了&#xff0c;也不回我消息啦&#xff0c;等不到装睡的人&#xff0c;也敲不开关闭的门。 这个世界的确给人付出真心就会遭到报应的感觉。左顾右盼、互相试探… 可能我一开始就错了&#xff0c;不该在消磨了爱意…

Python分享10个Excel自动化脚本

在数据处理和分析的过程中&#xff0c;Excel文件是我们日常工作中常见的格式。通过Python&#xff0c;我们可以实现对Excel文件的各种自动化操作&#xff0c;提高工作效率。 本文将再次分享10个实用的Excel自动化脚本&#xff0c;以帮助新手小白更轻松地掌握这些技能。 1. Exc…

React组件开发技巧:如何优雅地传递Props?

React组件开发技巧&#xff1a;如何优雅地传递Props&#xff1f; 一、重复Props传递的痛点二、JSX展开语法的优雅解决方案语法解析适用场景 三、使用展开语法的注意事项1. **可读性风险**2. **Props冲突问题**3. **过度使用展开语法** 四、实际项目中的最佳实践五、总结六、扩展…

3.5 Go(特殊函数)

目录 一、匿名函数 1、匿名函数的特点&#xff1a; 2、匿名函数代码示例 2、匿名函数的类型 二、递归函数 1. 递推公式版本 2. 循环改递归 三、嵌套函数 1、嵌套函数用途 2、代码示例 3、作用域 & 变量生存周期 四、闭包 1、闭包使用场景 2、代码示例 五、De…

php反序列化含CTF实战

php反序列化 声明&#xff1a;本人只是在学习反序列化 因此这篇文章大量参考了https://blog.csdn.net/Hardworking666/article/details/122373938 这位的博客 感谢他的详细文章让我可以详细学习反序列化 大家想看更详细的可以直接参考他的文章!!! 什么是序列化和反序列化 序…

机器学习之数学基础:线性代数、微积分、概率论 | PyTorch 深度学习实战

前一篇文章&#xff0c;使用线性回归模型逼近目标模型 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 本篇文章内容来自于 强化学习必修课&#xff1a;引领人工智能新时代【梗直哥瞿炜】 线性代数、微积分、概率论 …

http状态码:504 Gateway Timeout(网关超时)的原有以及排查问题的思路

504 Gateway Timeout&#xff08;网关超时&#xff09; 是一种常见的HTTP错误状态码&#xff0c;表示服务器作为网关或代理时&#xff0c;未能及时从上游服务器收到响应。以下是它的原因和排查问题的思路&#xff1a; 1. 504错误的含义 定义&#xff1a;服务器作为网关或代理时…

FastAPI与Selenium:打造高效的Web数据抓取服务

引言 在互联网数据采集中&#xff0c;图片数据往往占据了重要位置。Pixabay作为一个免版权图片网站&#xff0c;拥有海量优质图片。本文将展示如何利用FastAPI搭建一个RESTful接口&#xff0c;通过Selenium模拟浏览器行为访问Pixabay&#xff0c;并使用代理IP、User-Agent和Co…