Alibaba Sentinel | 流控规则设置

文章目录

  • 一、Sentinel概述
    • 强大的优势:
    • 组成部分:
  • 二、微服务集成Sentinel
    • 版本说明
    • 安装Sentinel控制台:
      • 1、docke安装
      • 2、jar安装
        • 启动控制台
    • 微服务集成Sentinel:
      • 查看控制台监控数据
  • 三、流控规则详解
    • 流量控制概述
    • 什么是流控规则
      • 原理:
      • 配置流控规则:
      • 参数说明

  Sentinel(卫兵)是阿里开源的一套用于服务容错的综合性解决方案。

  本篇文章会从以下几个方面着重讲解:

  1. Sentinel概述
  2. 微服务集成Sentinel
  3. 流控规则详解

一、Sentinel概述


强大的优势:

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

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

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

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


组成部分:

  Sentinel 分为两个部分:
Alibaba Sentinel | 流控规则设置_第1张图片

核心库(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 提供一个轻量级的控制台, 它提供机器发现、单机资源实时监控以及规则管理等功能。
Alibaba Sentinel | 流控规则设置_第2张图片

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 )

Alibaba Sentinel | 流控规则设置_第3张图片



微服务集成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就可以监控到该接口的数据。

查看控制台监控数据

  打开控制台,查看可能会有延迟,刷新就好
Alibaba Sentinel | 流控规则设置_第4张图片



三、流控规则详解

流量控制概述

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

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

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

什么是流控规则

原理:

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

配置流控规则:

  
Alibaba Sentinel | 流控规则设置_第5张图片
Alibaba Sentinel | 流控规则设置_第6张图片

参数说明

  • 资源名:
    • 某个接口,默认请求路径(如:http://localhost:8089/testA)
  • 针对来源:
    • 针对调用者进行限流,填写微服务名,指定对哪个微服务进行限流 ,默认default(不区分来源,全部限制)
  • 阈值类型和阈值:
    • QPS:每秒钟的请求数量,当调用该接口的QPS达到了阈值(某个数量)的时候,实现流控效果。
    • 并发线程数:当调用该接口的线程数达到阈值(某个数量)时,请求直接失败。
  • 流控模式(限制谁):
    • 直接:就限制设置的资源
    • 关联:设置一个关联的资源,关联的资源达到阈值时,就限制设置的资源
    • 链路:规定一个入口,设置的资源的流量达到阈值,就限制入口的资源
  • 流控效果(设置为QPS时可配):
    • 快速失败:请求直接失败 (返回429)

      • Alibaba Sentinel | 流控规则设置_第7张图片
    • Warm up:请求 QPS 从 阈值 / 3 开始,还会设置一个预热时长,在预热时间中逐渐升至设定的 QPS 阈值。也就是允许通过的请求数量由少逐渐变多,有一个缓冲的效果。

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

      • Alibaba Sentinel | 流控规则设置_第8张图片

你可能感兴趣的:(中间件,sentinel,java,spring,cloud)