【Spring Cloud Alibaba Sentinel 实现熔断与限流】 —— 每天一点小知识(上)

简介: 【Spring Cloud Alibaba Sentinel 实现熔断与限流】 —— 每天一点小知识

🐳Spring Cloud Alibaba Sentinel 实现熔断与限流

1. Sentinel概念

Sentinel是一款开源的流量控制组件,它提供了熔断、限流、降级等功能,可以保护微服务架构中的系统免受高并发请求的影响。在本篇博客中,我们将介绍如何使用Spring Cloud Alibaba Sentinel来实现熔断与限流。

2. 安装Sentinel控制台

Sentinel控制台是一个用于配置和管理Sentinel规则的可视化工具。在开始之前,我们需要先安装Sentinel控制台。

2.1 下载Sentinel控制台

💧在你的开发环境中选择一个合适的目录,执行以下命令下载Sentinel控制台:

git clone https://github.com/alibaba/Sentinel.git
cd Sentinel

2.2 编译与运行

💧进入Sentinel控制台目录,执行以下命令进行编译:

./mvnw clean package

编译完成后,执行以下命令启动Sentinel控制台:

java -jar sentinel-dashboard/target/sentinel-dashboard.jar

2.3 访问控制台

💧在浏览器中访问http://localhost:8080,你应该能够看到Sentinel控制台的登录页面。默认的用户名和密码都是sentinel

3. 初始化演示工程

💧为了演示Sentinel的熔断与限流功能,我们需要创建一个简单的Spring Cloud Alibaba工程。

3.1 创建工程

💧使用你习惯的方式创建一个新的Spring Cloud Alibaba工程,可以使用Spring Initializr或手动创建。

3.2 添加依赖

💧pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

3.3 配置文件

💧application.properties文件中添加以下配置:

# Sentinel控制台配置
spring.cloud.sentinel.transport.dashboard=localhost:8080
# 服务名称
spring.application.name=sentinel-demo

💧localhost:8080替换为你运行Sentinel控制台的地址和端口。

3.4 创建示例接口

💧创建一个简单的REST接口,用于演示Sentinel的熔断与限流功能。在一个新建的DemoController类中,添加以下代码:

@RestController
public class DemoController {
    @GetMapping("/hello")
    @SentinelResource("hello")
    public String hello() {
        return "Hello, Sentinel!";
    }
}

@SentinelResource("hello")注解表示该接口受Sentinel保护,限制其访问频率。

3.5 启动工程

💧运行工程,确保工程能够成功启动。

4. 流控规则

💧在Sentinel控制台中,我们可以配置流控规则,以限制对受保护资源的访问频率。

4.1 创建流控规则

💧在Sentinel控制台中,点击左侧导航栏的"流控规则",然后点击右上角的"新增"按钮。

💧在弹出的对话框中,填写规则信息。例如,我们设置一个QPS阈值为10的规则。

4.2 验证流控规则

💧在浏览器中访问http://localhost:8080/hello,你将看到接口返回的数据。继续刷新页面,当访问超过流控规则中设置的QPS阈值时,将会触发限流,接口将无法正常访问。

5. 服务降级

💧除了限流功能,Sentinel还提供了服务降级的功能,以应对异常情况下的服务调用。

5.1 创建降级规则

💧在Sentinel控制台中,点击左侧导航栏的"降级规则",然后点击右上角的"新增"按钮。

💧在弹出的对话框中,填写规则信息。例如,我们设置一个异常比例阈值为0.5的规则,即当接口调用的异常比例超过50%时,将触发降级。

5.2 验证降级规则

💧在浏览器中访问http://localhost:8080/hello,你将看到接口返回的数据。在代码中,我们可以通过抛出异常来模拟服务调用失败的情况。

💧继续访问接口,并观察接口的返回结果。当接口调用的异常比例超过降级规则中设置的阈值时,接口将会返回降级的结果。

【Spring Cloud Alibaba Sentinel 实现熔断与限流】 —— 每天一点小知识(下):https://developer.aliyun.com/article/1390083?spm=a2c6h.13148508.setting.23.4fea4f0ervlqra

相关文章
|
6月前
|
监控 Java Sentinel
使用Sentinel进行服务调用的熔断和限流管理(SpringCloud2023实战)
Sentinel是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。
163 3
|
6月前
springCloud之服务降级熔断Hystrix、OpenFeign
springCloud之服务降级熔断Hystrix、OpenFeign
356 0
|
3月前
|
XML 监控 Java
Spring Cloud全解析:熔断之Hystrix简介
Hystrix 是由 Netflix 开源的延迟和容错库,用于提高分布式系统的弹性。它通过断路器模式、资源隔离、服务降级及限流等机制防止服务雪崩。Hystrix 基于命令模式,通过 `HystrixCommand` 封装对外部依赖的调用逻辑。断路器能在依赖服务故障时快速返回备选响应,避免长时间等待。此外,Hystrix 还提供了监控功能,能够实时监控运行指标和配置变化。依赖管理方面,可通过 `@EnableHystrix` 启用 Hystrix 支持,并配置全局或局部的降级策略。结合 Feign 可实现客户端的服务降级。
187 23
|
3月前
|
监控 Java API
谷粒商城笔记+踩坑(25)——整合Sentinel实现流控和熔断降级
先简单介绍熔断、降级等核心概念,然后阐述SpringBoot整合Sentinel的实现方式,最后介绍Sentinel在本项目中的应用。
谷粒商城笔记+踩坑(25)——整合Sentinel实现流控和熔断降级
|
4月前
|
负载均衡 监控 Java
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
|
4月前
|
算法 NoSQL Java
spring cloud的限流算法有哪些?
【8月更文挑战第18天】spring cloud的限流算法有哪些?
91 3
|
5月前
|
监控 Java 开发者
Spring Cloud中的服务熔断与降级
Spring Cloud中的服务熔断与降级
|
5月前
|
监控 算法 Java
高并发架构设计三大利器:缓存、限流和降级问题之配置Sentinel的流量控制规则问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之配置Sentinel的流量控制规则问题如何解决
|
6月前
|
自然语言处理 监控 开发者
springCloud之Sentinel流量路由、流量控制、流量整形、熔断降级
springCloud之Sentinel流量路由、流量控制、流量整形、熔断降级
130 0
|
3月前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。