当前位置:首页 > 技术 > 正文内容

Sentinel流量控制与规则配置

访客 技术 2026年9月10日 12

Sentinel控制台核心功能

Sentinel控制台提供流量控制、熔断降级、热点参数限流、系统自适应保护和授权规则等关键功能。

控制台安装与启动

下载地址

Sentinel控制台发布地址:https://github.com/alibaba/Sentinel/releases

请根据需求选择合适的版本下载。

启动命令

java -Dserver.port=8080 \
     -Dcsp.sentinel.dashboard.server=localhost:8080 \
     -Dproject.name=sentinel-dashboard \
     -jar sentinel-dashboard-{version}.jar

启动后访问localhost:8080,使用默认账号sentinel/sentinel登录。

Sentinel登录界面

初始登录后左侧菜单仅显示默认选项,需要客户端接入后才能发现监控实例。

初始控制台界面

Spring Cloud客户端集成

1. 添加依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

2. 创建控制器

package com.example.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class AuthController {
    
    @GetMapping("/auth")
    public String authenticate() {
        System.out.println("Authentication request");
        return "auth_success";
    }

    @GetMapping("/log")
    public String logging() {
        System.out.println("Logging request");
        return "log_success";
    }
}

3. 配置文件

server:
  port: 9000
spring:
  application:
    name: auth-service
  cloud:
    sentinel:
      transport:
        port: 8719
        dashboard: localhost:8080

spring.cloud.sentinel.transport.dashboard配置控制台地址,spring.cloud.sentinel.transport.port配置客户端通信端口。

启动应用并访问端点后,控制台将自动发现服务实例。

服务发现界面

在簇点链路中可以查看监控的请求端点。

簇点链路界面

核心概念解析

1. 资源

资源的唯一标识符,Spring Boot项目中默认为控制器请求路径,也可通过@SentinelResource注解自定义。

2. 阈值类型

  • QPS:每秒请求数限制
  • 线程数:并发线程数限制

3. 流控模式

  • 直接模式:达到阈值直接限流
  • 关联模式:关联资源达到阈值时限流当前资源
  • 链路模式:基于调用链路关系限流

4. 流控效果

  • 快速失败:直接返回失败响应
  • Warm Up:冷启动预热模式
  • 排队等待:匀速通过请求

QPS直接限流示例

配置QPS阈值为1,当每秒请求超过1次时直接限流。

QPS限流配置

测试时快速连续请求将触发限流,返回"Blocked by Sentinel (flow limiting)"。

线程数限流示例

@GetMapping("/auth")
public String authenticate() throws InterruptedException {
    System.out.println("Processing authentication");
    Thread.sleep(1000);
    return "auth_success";
}

配置线程数阈值为1,当并发线程超过限制时触发限流。

线程数限流配置

关联限流模式

配置当/log端点QPS超过2时,限流/auth端点。

关联限流配置

使用测试工具对/log端点进行高频访问,观察/auth端点的限流效果。

预热模式配置

Warm Up模式允许系统在低流量期后逐渐适应流量增长。

预热模式配置

初始阶段阈值从10/3开始,经过10秒预热期逐渐升至完整阈值10。

限流效果展示

相关文章

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

linux screen 用法详情 (nohup 的替代方案)

一、screen 是什么?能干嘛?screen 是一个终端复用器,可以:在一个 SSH 会话中开多个“虚拟终端”SSH 断线后,程序仍然在后台运行随时重新连接到原来的会话特别适合:nohup 的替代方案跑脚本 / 爬虫 / 训练模型运维、远程开发二、安装 screen# CentOS / Rocky / Almayum install -y screen# Debian / Ubuntuapt i...

PHPStan 有什么用?怎么用?

PHPStan 是一个 PHP 的静态分析工具,在不运行代码的情况下就能帮你发现潜在问题,比如:传错类型(把 string 传给接受 int 的函数)访问不存在的属性 / 方法null 没处理好永远不会执行到的代码数组 key/值类型不一致返回值不符合声明注释和真实类型不匹配它非常适合:想提升代码质量、减少线上 bug、统一团队风格的人(尤其是中大型项目)。一、PHPStan 有什么用(通俗点说)...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。