阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

认识Sentinel

335次阅读
没有评论

共计 3457 个字符,预计需要花费 9 分钟才能阅读完成。

1、Sentinel 概述

在微服务架构中,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保证服务的稳定性。

Sentinel 提供了机器发现、健康情况管理、监控(单机和集群)、规则管理和推送等功能。它还提供了一个轻量级的开源控制台(Sentinel Dashboard)。

1.2、Sentinel 特征

  • 丰富的应用场景:Sentinel 是阿里巴巴在生产环境中使用的产品,应用在近 10 年来的 ” 双十一 ” 大促流量场景中,实现了秒杀(将突发流量控制在系统容量可以承受的范围)、消息削峰填谷、实时熔断下游不可用应用等功能

  • 完备的实时监控:Sentinel 提供了实时监控功能。在控制台中,不仅可以看到接入的单台机器的秒级数据,还可以看到 500 以下规模的集群的运行情况的汇总数据

  • 广泛的开源生态:Sentinel 提供了 ” 开箱即用 ” 的、可与其他开源框架 / 库整合的模块,例如:可以与 Spring Cloud、Dubbo、gRPC 进行整合

  • 完善的 SPI 扩展点:Sentinel 提供了 SPI(Service Provider Interface 一种服务发现机制)扩展点。它可以快速地定制逻辑,例如定制规则管理、适配数据源等

1.3、Sentinel 核心概念

  • 资源:Sentinel 控制和保护的对象即 ” 资源 ”,它是 Sentinel 中一个关键的概念。它可以是 Java 应用程序中的任何内容,例如,由应用程序提供的服务、应用程序调用的其他应用提供的服务,甚至是通过 Sentinel API 定义的代码

  • 规则:有流量控制、熔断降级及系统保护规则,可以动态调整这些规则

  • Context:Sentinel 处理的上下文

  • Node:它统计资源运行时的各种数据。一个 Resource(资源)在同一个 Context 中有且仅有一个 DefaultNode,一个 Resource 全局有且仅有一个 ClusterNode

  • Entry:代表对资源的一次访问。每访问一个资源都会创建一个 Entry

  • ProcessorSlotChain:由各个处理插槽组成的处理插槽链。每个资源在整个服务中对应一个处理插槽链

  • Rule:用户定义的各种规则

  • RuleManager:加载并管理 Rule

  • Slot:插槽。Sentinel 的工作流程就是围绕一个个插槽所组成的插槽链来展开的。每个插槽都有自己的职责,它们各司其职,完美地配置合,通过一定的编排顺序来达到最终限流、降级的目的

2、客户端接入控制台

客户端需要引入 Transport 模块来与 Sentinel 控制台进行通信。可以通过 pom.xml 引入 JAR 包

<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-transport-simple-http</artifactId> </dependency>

3、支持 Zuul

Sentinel 支持 Zuul,但需要额外加上 Sentinel 对网关支持的依赖

<!--Sentinel 的依赖 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency> <!--Sentinel 对网关支持的依赖 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId> </dependency> <!--Zull 的依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId> </dependency>

4、支持 Spring Cloud Gateway

Sentinel 支持 Spring Cloud Gateway,但需要额外加上 Sentinel 对网关支持的依赖

<!--Sentinel 的依赖 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency> <!--Sentinel 对网关支持的依赖 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId> </dependency> <!--Spring Cloud Gateway 的依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-gateway</artifactId> </dependency>

5、支持 Endpoint

在使用 Endpoint(端点)之前,需要在 Maven 中添加 Actuator 依赖,并在配置文件中开启对 Endpoint 的访问支持。

在 Sentinel Endpoint 中暴露的信息有:规则信息、日志目录、当前实例的 IP 地址、Sentinel Dashboard 地址、应用与 Sentinel Dashboard 的心跳频率等。

6、安装和启动 Sentinel

步骤:

1、下载 Sentinel 客户端

https://github.com/alibaba/Sentinel/releases

2、启动控制台

java -jar sentinel-dashboard.jar

3、进入控制台

访问 http://localhost:8080 访问控制台,账号和密码都是 sentinel

认识 Sentinel

7、流控规则

进入控制台后,单击左侧导航栏中的 ” 流控规则 ” 按钮可以新建流控规则

认识 Sentinel

流控规则的参数:

参数名 说明
资源名 限流规则的作用对象,如:@SentinelResource 中 Value 字段的值、相对 URI、其他图片文件资源名
流控应用 流控针对的调用来源(服务级别)。若为 default,则不区分调用来源
阀值类型 QPS(每秒查询率)或线程数
单机阀值 限流阀值。超过这个值就执行流控规则
流控模式 直接、关联、链路
流控方式 直接拒绝、Warm Up、匀速排队

7.1、流控模式

基于调用关系的流量控制有 3 种模式:

  • 直接:直接对资源本身进行流量控制

  • 关联:如果多个资源之间具有资源争抢或者依赖关系,则需要设置关联模式。当关联的资源达到阀值时,会限流某个资源的使用,让出系统资源给关联的资源

  • 链路:资源通过调用关系构成一条链路

7.2、流控方式

  • 直接拒绝:当 QPS 或线程数超过规则的阀值后,新的请求会被拒绝,抛出 FlowException。这种方式适用于已经知道系统处理能力的情况

  • Warm Up:流量突然增加可能把系统压垮。可以让通过的流量缓慢增加,在一定时间内逐渐增加到阀值上限,给系统一个预热 (Warm Up) 时间,避免系统突然被压垮

  • 匀速排列:严格控制请求通过的间隔时间,让请求均速通过。这种方式主要用于处理间隔性突发的流量。如果在某一秒有大量的请求到来,而接下来的几秒则处于空闲状态,则可以让这些请求在接下来的空闲期间被逐渐处理,而不是在第一秒直接拒绝多余的请求

8、降级规则

Sentinel 还提供了降级规则来处理流控

认识 Sentinel

重要概念:

  • RT(Response Time):当请求的时间大于阀值时,断路器打开,返回请求失败,直到时间窗口设置的时间结束后才关闭降级。RT 默认上限是 4900ms

  • 异常比例:资源接近 1 分钟的异常数目超过阀值后会进行降级。它统计时间窗口是 ” 分钟 ” 级别,所以时间窗口最好大于 60s, 异常比率的阀值范围是[0.0,1.0],代表 0 -100%

9、系统规则

系统保护规则是应用整体维度,而不是资源维度。它仅对入口流量生效。

认识 Sentinel

阀值类型:

  • LOAD:当系统 LOAD(一分钟的负载)超过阀值,且系统当前的并发线程数超过系统容量时才会触发系统保护

  • RT:所有入口流量的平均 RT

  • 线程数:所有入口流量的并发线程数

  • QPS:所有入口流量的 QPS

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-06-06发表,共计3457字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中