SpringCloudAlibaba之Sentinel的使用详解
开篇讲明使用的版本springboot 2.1.4.RELEASEspring-cloud-starter-alibaba0.9.0.RELEASE (SpringCloudAlibaba无特殊说明都是使用这个版本)一、Sentinel概念篇1.1、SpringCloudAlibabaSentinel到底能干嘛官方解释: 随着微服务的流行,服务和服务之间的稳定性变得越...
开篇讲明使用的版本
springboot 2.1.4.RELEASE
spring-cloud-starter-alibaba 0.9.0.RELEASE (SpringCloudAlibaba无特殊说明都是使用这个版本)
一、Sentinel概念篇
1.1、SpringCloudAlibabaSentinel到底能干嘛
官方解释: 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
Sentinel 具有以下特征:
-
丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。
-
完备的实时监控:Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。
-
广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。
-
完善的 SPI 扩展点:Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。
更多解释可以查看SpringCloudAlibabaSentinel官网 https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D
二、安装sentinel
2.1、下载sentinel
2.2、命令方式启动
java -jar sentinel-dashboard-1.5.1.jar
三、开始使用sentinel
3.1、添加maven依赖
<?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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.bean</groupId>
<artifactId>spring-cloud-alibaba-feign</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-cloud-alibaba-feign</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-alibaba-sentinel -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>0.9.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
3.2、向sentinel控制台注册 并向nacos中心注册
spring:
application:
name: spring-cloud-alibaba-feign
cloud:
#向nacos中心注册服务
nacos:
discovery:
server-addr: localhost:8848
#向sentinel控制台注册服务
sentinel:
transport:
dashboard: localhost:8080
#取消控制台懒加载
eager: true
management:
endpoints:
web:
exposure:
include: '*'
server:
port: 8970
3.3、编写测试使用的controller
/**
* @Description //TODO
* @Date $ $
* @Author huangwb
**/
@RestController
public class UserController {
@GetMapping("/user")
public String getUser() {
return "一叶知秋hwb";
}
}
3.4、启动项目
访问 http://localhost:8848/nacos发现微服务项目已经注册
访问 http://127.0.0.1:8080/#/dashboard/home发现已经注册成功、如果没有成功注册可能是没有取消控制台懒加载的方式,需要访问几次你自己的接口。 如果实时监控没显示出来也请多刷新你的测试接口 多访问几次。
3.5、对普通接口进行流控
点击左侧的簇点链路
然后点击新增,你就会看见一个流控规则
然后再去访问你的接口作死的刷新、会在规定阈值内只执行一次,后面的会执行快速失败的操作。
其他的可以自行去测试一下 在这里就不过多去测试了。
更多推荐
所有评论(0)