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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 【Spring Cloud Alibaba Sentinel 实现熔断与限流】 —— 每天一点小知识(下)

【Spring Cloud Alibaba Sentinel 实现熔断与限流】 —— 每天一点小知识(上):https://developer.aliyun.com/article/1390080

6. 热点key限流

💧除了针对整个接口的限流,Sentinel还支持对特定的热点key进行限流,以应对热点数据的访问。

6.1 创建热点key规则

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

💧在弹出的对话框中,填写规则信息。例如,我们设置一个参数名称为hotParam的规则,限制该参数的QPS阈值为5。

6.2 验证热点key规则

💧在浏览器中访问http://localhost:8080/hello?hotParam=1,你将看到接口返回的数据。继续访问接口,并在URL中修改hotParam参数的值,当访问超过规则中设置的QPS阈值时,将会触发热点key的限流。

7. 系统规则

💧Sentinel还提供了系统规则,用于限制整个系统的访问流量。

7.1 创建系统规则

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

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

7.2 验证系统规则

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

8. @SentinelResource

💧除了在代码中使用@SentinelResource注解来保护接口,我们还可以使用它来定义自定义的熔断、降级、限流逻辑。

8.1 定义自定义逻辑

💧DemoController类中添加一个新的方法,并使用@SentinelResource注解来定义自定义的逻辑。例如:

@GetMapping("/custom")
@SentinelResource(value = "custom", fallback = "handleFallback", blockHandler = "handleBlock")
public String custom() {
    // 自定义业务逻辑
    return "Custom Logic";
}
// 降级处理方法
public String handleFallback() {
    return "Fallback Logic";
}
// 限流处理方法
public String handleBlock(BlockException ex) {
    return "Block Logic";
}

8.2 验证自定义逻辑

💧在浏览器中访问http://localhost:8080/custom,你将看到接口返回的数据是自定义逻辑中定义的结果。你还可以在Sentinel控制台中配置相应的熔断、降级、限流规则,以触发相应的逻辑。

9. 服务熔断功能规则持久化

💧默认情况下,Sentinel控制台中的规则只在内存中生效,并不会持久化到磁盘。如果希望规则持久化,以防止控制台重启导致规则丢失,可以进行如下配置。

9.1 创建数据库表

💧在你的MySQL数据库中执行以下SQL语句,创建Sentinel控制台的规则持久化表:

CREATE TABLE sentinel_rule (
  id BIGINT AUTO_INCREMENT PRIMARY KEY,
  app_name VARCHAR(128) NOT NULL,
  resource VARCHAR(255) NOT NULL,
  limit_app VARCHAR(128),
  limit_type INT NOT NULL,
  count INT NOT NULL,
  strategy INT NOT NULL,
  ref_resource VARCHAR(255),
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
  update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

9.2 配置数据源

💧在Sentinel控制台的application.properties文件中,添加以下配置,配置数据库的连接信息:

# 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/sentinel?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

💧jdbc:mysql://localhost:3306/sentinel替换为你的MySQL数据库连接信息。

9.3 配置规则持久化

💧在Sentinel控制台的application.properties文件中,添加以下配置,启用规则持久化:

# 规则持久化配置
spring.cloud.sentinel.datasource.ds1.nacos.server-addr=localhost:8848
spring.cloud.sentinel.datasource.ds1.nacos.data-id=sentinel_rule
spring.cloud.sentinel.datasource.ds1.nacos.group-id=DEFAULT_GROUP
spring.cloud.sentinel.datasource.ds1.nacos.rule-type=flow

💧localhost:8848替换为你的Nacos配置中心的地址和端口。

9.4 重启Sentinel控制台

💧重启Sentinel控制台,配置的规则将会自动从数据库加载。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2天前
|
人工智能 安全 Java
AI 时代:从 Spring Cloud Alibaba 到 Spring AI Alibaba
本次分享由阿里云智能集团云原生微服务技术负责人李艳林主讲,主题为“AI时代:从Spring Cloud Alibaba到Spring AI Alibaba”。内容涵盖应用架构演进、AI agent框架发展趋势及Spring AI Alibaba的重磅发布。分享介绍了AI原生架构与传统架构的融合,强调了API优先、事件驱动和AI运维的重要性。同时,详细解析了Spring AI Alibaba的三层抽象设计,包括模型支持、工作流智能体编排及生产可用性构建能力,确保安全合规、高效部署与可观测性。最后,结合实际案例展示了如何利用私域数据优化AI应用,提升业务价值。
|
26天前
|
SpringCloudAlibaba 负载均衡 Dubbo
【SpringCloud Alibaba系列】Dubbo高级特性篇
本章我们介绍Dubbo的常用高级特性,包括序列化、地址缓存、超时与重试机制、多版本、负载均衡。集群容错、服务降级等。
【SpringCloud Alibaba系列】Dubbo高级特性篇
|
3天前
|
人工智能 Java API
阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手
本次分享的主题是阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手,由阿里云两位工程师分享。
阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手
|
26天前
|
存储 SpringCloudAlibaba Java
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论。
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
|
26天前
|
SpringCloudAlibaba JavaScript Dubbo
【SpringCloud Alibaba系列】Dubbo dubbo-admin安装教程篇
本文介绍了 Dubbo-Admin 的安装和使用步骤。Dubbo-Admin 是一个前后端分离的项目,前端基于 Vue,后端基于 Spring Boot。安装前需确保开发环境(Windows 10)已安装 JDK、Maven 和 Node.js,并在 Linux CentOS 7 上部署 Zookeeper 作为注册中心。
【SpringCloud Alibaba系列】Dubbo dubbo-admin安装教程篇
|
26天前
|
SpringCloudAlibaba Dubbo Java
【SpringCloud Alibaba系列】Dubbo基础入门篇
Dubbo是一款高性能、轻量级的开源Java RPC框架,提供面向接口代理的高性能RPC调用、智能负载均衡、服务自动注册和发现、运行期流量调度、可视化服务治理和运维等功能。
【SpringCloud Alibaba系列】Dubbo基础入门篇
|
26天前
|
人工智能 前端开发 Java
Spring AI Alibaba + 通义千问,开发AI应用如此简单!!!
本文介绍了如何使用Spring AI Alibaba开发一个简单的AI对话应用。通过引入`spring-ai-alibaba-starter`依赖和配置API密钥,结合Spring Boot项目,只需几行代码即可实现与AI模型的交互。具体步骤包括创建Spring Boot项目、编写Controller处理对话请求以及前端页面展示对话内容。此外,文章还介绍了如何通过添加对话记忆功能,使AI能够理解上下文并进行连贯对话。最后,总结了Spring AI为Java开发者带来的便利,简化了AI应用的开发流程。
318 0
|
13天前
|
人工智能 自然语言处理 Java
Spring Cloud Alibaba AI 入门与实践
本文将介绍 Spring Cloud Alibaba AI 的基本概念、主要特性和功能,并演示如何完成一个在线聊天和在线画图的 AI 应用。
174 7
|
1月前
|
Java Nacos Sentinel
Spring Cloud Alibaba:一站式微服务解决方案
Spring Cloud Alibaba(简称SCA) 是一个基于 Spring Cloud 构建的开源微服务框架,专为解决分布式系统中的服务治理、配置管理、服务发现、消息总线等问题而设计。
293 13
Spring Cloud Alibaba:一站式微服务解决方案
|
2月前
|
存储 人工智能 Java
Spring AI Alibaba 配置管理,用 Nacos 就够了
本文通过一些实操案例展示了 Spring AI Alibaba + Nacos 在解决 AI 应用中一系列复杂配置管理挑战的方案,从动态 Prompt 模板的灵活调整、模型参数的即时优化,到敏感信息的安全加密存储。Spring AI Alibaba 简化了对接阿里云通义大模型的流程,内置 Nacos 集成也为开发者提供了无缝衔接云端配置托管的捷径,整体上极大提升了 AI 应用开发的灵活性和响应速度。
340 14