目录
一、Sentinel简介
1.概述
Sentinel(分布式系统的流量防卫兵)是阿里开源的一套用于服务容错的综合性解决方案。它以流量为切入点, 从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。
Sentinel核心分为两个部分:
- 核心库(java客户端):能够运行于所有 Java 运行时环境,同时对Spring Cloud 等框架也有较好的支持。
- 控制台(Dashboard):基于 Spring Boot 开发,打包后可以直接运行。
2.安装Sentinel服务
第一步:打开sentinel下载网址
https://github.com/alibaba/Sentinel/releases
第二步:下载jar包(可以存储到一个sentinel目录),如图
第三步:在sentinel对应目录,打开命令行(cmd),启动运行sentinel
java -Dserver.port=8180 -Dcsp.sentinel.dashboard.server=localhost:8180 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.0.jar
3.访问Sentinel服务
第一步:假如Sentinel启动ok,通过浏览器进行访问测试,如图
第二步:登录sentinel,默认用户名和密码都是sentinel
二、Sentinel限流入门
1.概述
数据库连接池、线程池等在使用时都会跟定一个限定的值,这就是限流的一种设计。限流的目的防止恶意请求流量、恶意攻击,或者防止流量超过系统峰值。
2.sentinel集成实现
第一步:sentinel应用于服务消费方(Consumer),在消费方添加依赖如下
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
第二步:打开服务消费方配置文件application.yml,添加sentinel配置
spring:
cloud:
sentinel:
transport:
port: 8099 #跟sentinel控制台交流的端口,随意指定一个未使用的端口即可
dashboard: localhost:8180 # 指定sentinel控制台地址。
第三步:启动服务提供者,服务消费者,然后在浏览器访问消费者url,如图
第四步:刷新sentinel控制台,检测服务列表,如图
注:Sentinel的控制台其实就是一个SpringBoot编写的程序,我们需要将我们的服务注册到控制台上,即在微服务中指定控制台的地址,并且还要在消费端开启一个与sentinel控制台传递数据端的端口,控制台可以通过此端口调用微服务中的监控程序来获取各种信息。
3.sentinel限流入门案例
我们设置一下指定接口的流控(流量控制),QPS(每秒请求次数)单机阈值为1,代表每秒请求不能超出1次,要不然就做限流处理,处理方式直接调用失败。
第一步:选择要限流的链路,如图
第二步:设置限流策略
第三步:反复刷新访问消费端服务,检测是否有限流信息输出
三、Sentinel流控规则分析
1.阈值类型分析
-
QPS(Queries Per Second):当调用相关url对应的资源时,QPS达到单机阈值时,就会限流。
-
线