Alibaba Sentinel | 流控规则设置

简介: Alibaba Sentinel | 流控规则设置

一、Sentinel概述

强大的优势:

1、丰富的应用场景:

 Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景, 例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用 应用等。


2、完备的实时监控:

 Sentinel 提供了实时的监控功能。通过控制台可以看到接入应用的单台机器秒级数据, 甚至 500 台以下规模的集群的汇总运行情况。


3、广泛的开源生态:

 Sentinel 提供开箱即用的与其它开源框架/库的整合模块, 例如与 Spring Cloud、Dubbo、gRPC 的整合。只需要引入相应的依赖并进行简单的配置即可快速地接入Sentinel。


4、完善的 SPI 扩展点:

 Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。

组成部分:

  Sentinel 分为两个部分:

核心库(Java 客户端)

 不依赖任何框架/库,能够运行于所有 Java 运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。

控制台(Dashboard)

 基于 Spring Boot 开发,打包后可以直接运行,不需要额外的 Tomcat 等应用容器。

二、微服务集成Sentinel

版本说明

sentinel-dashboard:1.8.4

spring-boot-starter-parent:2.3.12.RELEASE

spring-cloud-dependencies:Hoxton.SR12

spring-cloud-alibaba-dependencies:2.2.8.RELEASE

安装Sentinel控制台:

  Sentinel 提供一个轻量级的控制台, 它提供机器发现、单机资源实时监控以及规则管理等功能。

1、docke安装

  直接运行命令:

docker run \
--name sentinel \
--restart=always \
-p 8858:8858 \
-v /usr/local/sentinel_home:/home/sentinel_home \
-d bladex/sentinel-dashboard:1.8.4 

2、jar安装

  1. 下载jar包,解压到文件夹
       https://github.com/alibaba/Sentinel/releases
  2. 启动控制台,直接使用jar命令启动项目(控制台本身是一个SpringBoot项目)
java -Dserver.port=8858 -Dcsp.sentinel.dashboard.server=localhost:8858 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.7.0.jar

启动控制台

   安装启动完毕,通过浏览器访问localhost:8858 进入控制台 ( 默认用户名密码是 sentinel/sentinel )

微服务集成Sentinel:

  为微服务集成Sentinel核心库非常简单, 只需要加入Sentinel的依赖即可,版本不写,用springboot提供的默认版本。

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

  然后在配置文件中添加控制台的信息

spring: 
  cloud:
    sentinel: 
      transport:
        port: 9999 #跟控制台交流的端口,随意指定一个未使用的端口即可
        dashboard: localhost:8858 # 指定控制台服务的地址

  随便调用微服务的一个接口,sentinel就可以监控到该接口的数据。

查看控制台监控数据

  打开控制台,查看可能会有延迟,刷新就好

三、流控规则详解

流量控制概述

  任意时间到来的请求往往是随机不可控的,而系统的处理能力是有限的,我们需要根据系统的处理能力对流量进行控制。

  Sentinel从以下两个方面的数量,对流量进行控制:

  1. QPS:每秒请求个数
  2. 线程数:并发线程个数

什么是流控规则

原理:

  其原理是监控应用流量的QPS(每秒查询个数) 或并发线程数等指标,当达到指定的阈值(规定的大小)时对流量进行控制。以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。

配置流控规则:


参数说明

资源名:

某个接口,默认请求路径(如:http://localhost:8089/testA)


针对来源:

针对调用者进行限流,填写微服务名,指定对哪个微服务进行限流 ,默认default(不区分来源,全部限制)


阈值类型和阈值:

QPS:每秒钟的请求数量,当调用该接口的QPS达到了阈值(某个数量)的时候,实现流控效果。

并发线程数:当调用该接口的线程数达到阈值(某个数量)时,请求直接失败。


流控模式(限制谁):

直接:就限制设置的资源

关联:设置一个关联的资源,关联的资源达到阈值时,就限制设置的资源

链路:规定一个入口,设置的资源的流量达到阈值,就限制入口的资源


流控效果(设置为QPS时可配):

快速失败:请求直接失败 (返回429)

Warm up:请求 QPS 从 阈值 / 3 开始,还会设置一个预热时长,在预热时间中逐渐升至设定的 QPS 阈值。也就是允许通过的请求数量由少逐渐变多,有一个缓冲的效果。


排队等待:阈值为每秒通过数量,多余的请求会排队等待(挂起),还会设置一个超时时间,当请求超过超时间时间还未处理,请求就被丢弃了(已取消)

相关文章
|
7月前
|
Java 数据库连接 Maven
如何使用Sentinel实现流控和降级
通过以上步骤,你可以使用Sentinel实现应用的流量控制和降级操作,以保护系统在高流量或不稳定情况下的稳定性。欢迎关注威哥爱编程,一起学习成长。
122 1
|
3月前
|
监控 Java API
谷粒商城笔记+踩坑(25)——整合Sentinel实现流控和熔断降级
先简单介绍熔断、降级等核心概念,然后阐述SpringBoot整合Sentinel的实现方式,最后介绍Sentinel在本项目中的应用。
谷粒商城笔记+踩坑(25)——整合Sentinel实现流控和熔断降级
|
5月前
|
监控 算法 Java
高并发架构设计三大利器:缓存、限流和降级问题之配置Sentinel的流量控制规则问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之配置Sentinel的流量控制规则问题如何解决
|
7月前
|
Java API Nacos
第十二章 Spring Cloud Alibaba Sentinel
第十二章 Spring Cloud Alibaba Sentinel
319 0
|
7月前
|
SQL SpringCloudAlibaba Sentinel
【八】SpringCloud Alibaba之整合Sentinel(实现流量控制3)
【八】SpringCloud Alibaba之整合Sentinel(实现流量控制3)
106 2
|
7月前
|
SpringCloudAlibaba Sentinel 索引
【九】SpringCloud Alibaba之整合Sentinel(实现热点控制)
【九】SpringCloud Alibaba之整合Sentinel(实现热点控制)
82 1
|
7月前
|
SpringCloudAlibaba Java 测试技术
【七】SpringCloud Alibaba之整合Sentinel(实现流量控制2)
【七】SpringCloud Alibaba之整合Sentinel(实现流量控制2)
99 1
|
7月前
|
SpringCloudAlibaba 监控 Java
SpringCloud Alibaba微服务-- Sentinel的使用(保姆级)
SpringCloud Alibaba微服务-- Sentinel的使用(保姆级)
|
7月前
|
Java Nacos Sentinel
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
920 0
|
7月前
|
SpringCloudAlibaba 监控 Java
SpringCloud Alibaba Sentinel实现熔断与限流--学习笔记
SpringCloud Alibaba Sentinel实现熔断与限流--学习笔记
122 0