Sentinel --学习笔记

什么是Sentinel?

Sentinel是阿里巴巴开源的一款服务保护框架,旨在保障分布式系统的稳定性和高可用性。可以想象它就像是分布式系统中的交通警察,它的职责是监控系统流量和请求,确保在高峰时段或者遇到意外情况时,系统能够平稳运行,不会因为过载而崩溃。

Sentinel功能简述:

  1. 流量控制:限制处理请求的数量,防止系统因过载崩溃。
  2. 熔断降级:在服务异常时自动停止请求,提供备选响应。
  3. 系统负载保护:根据系统当前负载动态调整请求处理能力。
  4. 热点参数限流:对特定热点数据的访问进行细粒度的限流。
  5. 授权规则:根据请求者身份或来源进行请求的访问控制。
  6. 监控和管理:提供实时的服务监控与动态配置能力。

Sentinel的使用

Sentinel 的使用可以分为两个部分:

  • 核心库(Jar包):不依赖任何框架/库,能够运行于 Java 8 及以上的版本的运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。在项目中引入依赖即可实现服务限流、隔离、熔断等功能。

  • 控制台(Dashboard):Dashboard 主要负责管理推送规则、监控、管理机器信息等

Sentinel配置

1、下载jar包

Releases · alibaba/Sentinel (github.com)

2、运行jar包

首先进入到jar包所在目录,打开cmd,输入下面命令:

复制代码
java -Dserver.port=8090 -Dcsp.sentinel.dashboard.server=localhost:8090 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar(jar包名)

3、访问

通过localhost:8090就可以访问sentinel的控制台了,初始用户名密码默认都是sentinel

项目配置

1、引入依赖

复制代码
<!--sentinel-->
<dependency>
    <groupId>com.alibaba.cloud</groupId> 
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

2、修改配置文件

复制代码
spring:
  cloud:
    sentinel:
      transport:
        dashboard: localhost:8090
      http-method-specify: true # 开启请求方式前缀

请求限流

此时再对配置好的项目进行访问,在sentinel的控制台-->簇点链路就可以看到相关访问记录了,在簇点链路后面点击流控按钮,即可对其做限流配置:

配置也很简单,如图所示,设置qps(每秒访问率)或者并发线程数的阈值即可,只要超过设置的阈值的访问就会被拒绝

服务熔断

Sentinel中的断路器不仅可以统计某个接口的慢请求比例 ,还可以统计异常请求比例 。当这些比例超出阈值时,就会熔断该接口,即拦截访问该接口的一切请求,降级处理;当该接口恢复正常时,再放行对于该接口的请求。

断路器的工作状态切换有一个状态机来控制:

状态机包括三个状态:

  • closed:关闭状态,断路器放行所有请求,并开始统计异常比例、慢请求比例。超过阈值则切换到open状态

  • open :打开状态,服务调用被熔断,访问被熔断服务的请求会被拒绝,快速失败,直接走降级逻辑。Open状态持续一段时间后会进入half-open状态

  • half-open:半开状态,放行一次请求,根据执行结果来判断接下来的操作。

    • 请求成功:则切换到closed状态

    • 请求失败:则切换到open状态

我们可以在控制台通过点击簇点后的**熔断**按钮来配置熔断策略:

这种是按照慢调用比例来做熔断,上述配置的含义是:

  • RT超过200毫秒的请求调用就是慢调用

  • 统计最近1000ms内的最少5次请求,如果慢调用比例不低于0.5,则触发熔断

  • 熔断持续时长20s

相关推荐
GlueNa2SiO32 小时前
03-Flask模板引擎Jinja2详解
笔记·python·flask
Capricorn19884 小时前
解决全网抄 Karpathy 导致的 LLM Wiki 污染?基于知芽 Notebook Skill 的 raw/ 笔记法排障指南
大数据·论文阅读·人工智能·笔记·论文笔记
壹玖玖肆4 小时前
openGauss使用笔记
笔记
宵时待雨4 小时前
linux笔记归纳17:传输层协议UDP
linux·笔记·udp
噜~噜~噜~6 小时前
操作系统笔记-2.3.2.1 进程互斥的软件实现方法
笔记·操作系统
小弥儿6 小时前
GitHub今日热榜 | 2026-08-26:AI 大脑与知识管理扎堆
人工智能·学习·开源·github
荷蒲6 小时前
【小白量化Qbuddy】利用AI学习中文Python
人工智能·python·学习
云贝教育-郑老师6 小时前
【麒麟服务器系统交付:一个DBA的六年信创实战笔记】
服务器·笔记·dba
中科高级技工学校7 小时前
乌鲁木齐中医康复学习经历分享
大数据·学习
玖玥拾7 小时前
LeetCode 392 判断子序列
笔记·算法·leetcode