阿里云应用高可用服务 AHAS 流控降级实现 SQL 自动防护功能

本文涉及的产品
云原生网关 MSE Higress,422元/月
性能测试 PTS,5000VUM额度
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 在影响系统稳定性的各种因素中,慢 SQL 是相对比较致命的,可能会导致 CPU、LOAD 异常、系统资源耗尽。线上生产环境出现慢 SQL 往往有很多原因: 硬件问题。如网络速度慢,内存不足,I/O 吞吐量小,磁盘空间满等。

在影响系统稳定性的各种因素中,慢 SQL 是相对比较致命的,可能会导致 CPU、LOAD 异常、系统资源耗尽。线上生产环境出现慢 SQL 往往有很多原因:

  • 硬件问题。如网络速度慢,内存不足,I/O 吞吐量小,磁盘空间满等。
  • 没有索引或者索引失效。
  • 数据过多。
  • DevOps 后没有专业的 DBA 对 SQL 代码进行 review,在项目初期没有对 SQL 的性能做很好的考量。
    严重的慢 SQL 发生后可能会拖垮整个数据库,对线上业务产生阻断性的风险。AHAS 流控降级提供了 SQL 级别的识别与防护,可以帮助开发以及运维同学快速的识别慢 SQL 并及时采取有效的防护措施保障系统的稳定性。

AHAS产品地址

SQL自动防护功能文档地址

应用场景

AHAS 提供了丰富的 SQL 场景支持,不需要更改代码即可实现SQL识别与防护,包括:

  • 根据 SQL 语句的调用频率、执行时间来进行控制,如直接拒绝或者排队等待等。
  • 自动探测 SQL 的执行时间、频率,并进行控制。
  • 数据库读写联动控制,例如,读操作的速度由写操作的速度决定。
  • SQL 执行并发控制。
    在慢 SQL 防护一节中我们会详细介绍不同的用法。

SQL识别

AHAS 流控降级通过自动检测常见的 DAO 类、JDBC 驱动类等自动识别应用中的 SQL 语句,用户可以通过 Java Agent或者 JAVA SDK 两种接入方式来实现 SQL 的监控和拦截。其中 Java Agent 目前支持 MySQL JDBC 和 Oracle JDBC 驱动,SDK 目前支持 MyBatis 框架下的 SQL 识别。第三方组件和框架的版本支持情况详见支持列表

如果使用Agent接入只需下载并安装最新的Agent即可:

wget -O ./install_agent.sh https://ahasoss-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/agent/prod/latest/install_agent.sh && source ./install_agent.sh {YourAppName} default

SDK接入需要在应用依赖中引入ahas-sentinel-client:

<dependency>
   <groupId>com.alibaba.csp</groupId>
   <artifactId>ahas-sentinel-client</artifactId>
   <version>x.y.z</version>
</dependency>

接入成功后就可以在AHAS控制台的监控页看到SQL资源调用的QPS以及RT等信息,用户可以在监控页面通过查看SQL对应的RT值来判断该SQL执行是否过慢,从而提前设置限流和降级规则进行多手段防护。对于SQL的常见防护规则我们会在慢SQL防护中详细说明。

慢SQL防护

AHAS 流控降级提供了多种不同的防护手段,对于线上出现慢SQL的情况,可以从限流和降级两方面来对系统进行防护。规则配置开启后立即生效,不仅能够提前设置防护,还能在线上出现问题时紧急处理避免因为大量慢SQL的调用把系统拖垮。

限流策略

基于控制台自动识别出的SQL语句,使用者可以配置相应的限流规则对SQL执行进行控制。AHAS支持对QPS和并发线程数两种维度进行限制,SQL控制一般采取并发线程数模式,当出现慢SQL调用时可以限制同一时刻执行的SQL数量,防止过多的慢SQL语句执行把资源耗尽。
流控模式
AHAS 提供了多种不同的流控模式,用户可以基于自身业务场景来选择使用,在慢SQL防护中,比较常用的有直接和关联两种模式:
1、直接模式。
最常用的一种流控模式,在该模式下,阈值配置为当前SQL资源,超过设置的值后多余的请求将被拒绝。
001

2、关联模式。
阈值配置为关联SQL资源,关联的资源请求超过设置的之后,该资源的调用将被拦截。可以根据需要将SQL读关联写资源。
002

降级策略

除了限流规则之外,AHAS还提供了基于RT和异常比例的降级策略。对于慢SQL防护,使用者可以根据SQL执行的RT设置对应的阈值以及时间窗口,超过指定的RT值后在时间窗口内 SQL 执行将被降级,抛出包装好的异常。
003

资源被流控降级后会抛出 BlockException 异常类的子类(限流会抛流控异常 FlowException,降级会抛出降级异常 DegradeException),开发人员可以自定义异常的业务处理,如重试等一系列操作。

强大的监控

AHAS提供了强大的监控功能来帮助使用者快速发现问题并及时处理。在应用概览页可以查看集群的总QPS、拒绝QPS、RT等信息:
004
同时可以查看集群、单机TOP的CPU、LOAD信息,并支持历史数据回放:
005

除此之外还能够很直观的看到不同 SQL 语句执行的 TOP 情况,包括请求 QPS TOP、拒绝 QPS TOP、RT TOP,以及对应的单机 TOP 数据:
007

在监控详情页,可以查看每条 SQL 语句的调用及执行情况,发现 RT 请求过长的 SQL 调用可以进行一键限流或降级:
008

上述就是 AHAS 流控降级所提供的基于慢 SQL 的防护手段,通过 监控->发现异常->配置规则->有效防护 保障应用的高可用服务能力。

相关文章
|
7月前
|
SQL 大数据 API
每天一道大厂SQL题【Day08】服务日志SQL统计
每天一道大厂SQL题【Day08】服务日志SQL统计
69 0
|
SQL XML Oracle
Mybatis动态SQL语句查询,实现一个参数 可查询多个字段。
Mybatis动态SQL语句查询,实现一个参数 可查询多个字段。
523 0
Mybatis动态SQL语句查询,实现一个参数 可查询多个字段。
|
2月前
|
SQL 存储 安全
如何防护SQL注入
在互联网中,SQL注入攻击是网站和应用面临的主要安全威胁之一。攻击者通过在输入字段中插入恶意SQL代码,企图非法访问或操控数据库。防范措施包括限制查询长度、使用参数化查询、采用ORM框架、遵循最小权限原则、定期更新系统以及使用SCDN等专业安全产品,以增强防护能力,保护数据安全。
|
4月前
|
SQL 数据管理 关系型数据库
SQL与云计算:利用云数据库服务实现高效数据管理——探索云端SQL应用、性能优化、安全性与成本效益,为企业数字化转型提供全方位支持
【8月更文挑战第31天】在数字化转型中,企业对高效数据管理的需求日益增长。传统本地数据库存在局限,而云数据库服务凭借自动扩展、高可用性和按需付费等优势,成为现代数据管理的新选择。本文探讨如何利用SQL和云数据库服务(如Amazon RDS、Google Cloud SQL和Azure SQL Database)实现高效的数据管理。通过示例和最佳实践,展示SQL在云端的应用、性能优化、安全性及成本效益,助力企业提升竞争力。
73 0
|
4月前
|
SQL 关系型数据库 MySQL
Go语言中进行MySQL预处理和SQL注入防护
在现代Web应用开发中,安全性至关重要。SQL注入是一种常见的攻击方式,攻击者可通过构造特殊SQL查询来非法访问或修改数据库数据。本文介绍如何利用Go语言中的预处理SQL语句来防范此类攻击。预处理不仅能提升安全性,还能提高性能并简化代码。通过使用`?`作为占位符,Go自动处理参数转义,有效避免SQL注入。此外,文章还提供了连接MySQL数据库、执行预处理查询以及最佳实践的示例代码。务必遵循这些指导原则,确保应用程序的安全性。
109 0
|
5月前
|
SQL 安全 关系型数据库
【SQL】已解决:MySQL 服务无法启动
【SQL】已解决:MySQL 服务无法启动
1213 1
|
6月前
|
SQL 安全 Java
Spring Boot中的跨站点脚本攻击(XSS)与SQL注入防护
【6月更文挑战第15天】在现代Web应用程序开发中,安全性是一个至关重要的课题。跨站点脚本攻击(XSS)和SQL注入是最常见的两种攻击类型,它们可以严重威胁到应用程序的安全。
583 0
|
6月前
|
分布式计算 DataWorks 关系型数据库
MaxCompute产品使用合集之DataWorks是否支持通过SQL方式在MaxCompute中查询数据,并通过数据集成服务将查询结果同步至MySQL数据库
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
7月前
|
Java Serverless 应用服务中间件
Serverless 应用引擎产品使用之在Serverless 应用引擎中跳过AHAS创建如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
143 3
|
7月前
|
SQL 数据库
在数据传输服务(DTS)中,当SQL数据迁移报告对象名 'dbo.VQD_Rpt_Report' 无效时
【2月更文挑战第32天】在数据传输服务(DTS)中,当SQL数据迁移报告对象名 'dbo.VQD_Rpt_Report' 无效时
57 1

相关产品

  • 应用高可用服务