目录
spring cloud alibaba2022版本分布式框架搭建示例之集成Sentinel。
一、什么是Sentinel
Sentinel是由阿里巴巴开源的一款 👽分布式系统的流量防卫兵👽,用于保护应用程序免受高并发、高负载和故障的影响。它主要用于实时监控应用程序的流量、熔断不可用的资源、降级服务以及提供实时的统计数据等功能。
Sentinel 以流量为切入点,通过流量控制、流量路由、熔断降级、系统自适应过载保护以及热点流量防护等多个维度,全方位保障服务的稳定性。本文将以限流控制功能为例,进行详细的演示。
二、启动Sentinel服务
Sentinel-dashboard安装,sentinel版本官方地址:安装包下载地址——Releases · alibaba/Sentinel · GitHub,我们是SpringCloud Alibaba 2022,选择匹配的sentinel版本1.8.6。版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub
在windows系统上启动服务
java -jar sentinel-dashboard-1.8.6.jar

启动成功后访问网址(默认端口8080):http://localhost:8080/#/dashboard/ ,默认的用户名和密码:sentinel/sentinel

三、项目添加jar依赖与配置
说明:spring-cloud-alibaba-starters的jar包里包含spring-cloud-starter-alibaba-sentinel的jar,无需指定版本。
补充-父项目pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>spring-cloud-alibaba</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>goods-service</module>
<module>order-service</module>
<module>gateway-service</module>
</modules>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring-boot.version>3.0.13</spring-boot.version>
<spring-cloud.version>2022.0.2</spring-cloud.version>
<spring-cloud-starter-bootstrap.version>3.1.5</spring-cloud-starter-bootstrap.version>
<spring-cloud-alibaba.version>2022.0.0.0</spring-cloud-alibaba.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- Spring Boot 3.x -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Spring Cloud 2022.x -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Spring Cloud Bootstrap 3.x -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>${spring-cloud-starter-bootstrap.version}</version>
</dependency>
<!-- Alibaba Cloud 2.x -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Nacos注册中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${spring-cloud-alibaba.version}</version>
</dependency>
<!-- Nacos配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${spring-cloud-alibaba.version}</version>
</dependency>
<!-- Spring Boot 3.x -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>${spring-boot.version}</version>
</dependency>
<!-- Spring Boot 3.x -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>${spring-boot.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
</dependency>
<!-- RocketMQ -->
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.3.4</version>
<scope>compile</scope>
<exclusions>
<!-- 排查低版本冲突 -->
<exclusion>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>5.3.1</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
3.1、jar依赖
<!-- Sentinel -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
3.2、sentinel控制台配置
applicaiton.xml添加sentinel的配置,sentinel的端口号默认是8720,可以手动指定。
spring:
cloud:
# 配置Sentinel控制台
sentinel:
transport:
port: 9999 # 指定Sentinel控制台的端口,默认端口8720
## 指定控制台的地址,默认端口8080 # 指定Sentinel控制台的地址
dashboard: localhost:8080 # 指定Sentinel控制台的端口

四、启动项目验证限流
4.1、启动项目查看sentinel控制台界面
服务启动后,查看注册到sentinel控制台的服务。

4.2、找到“簇点链路”菜单,选择一个资源名,添加“流控”规则。


4.2、测试限流效果
接口测试测试软件1秒内快速访问限流接口,发现一秒内超过1次正常访问,就会出现sentinel限流的响应。


5010

被折叠的 条评论
为什么被折叠?



