网关限流-API 分组维度|学习笔记

简介: 快速学习网关限流-API 分组维度

开发者学堂课程【全面讲解 Spring Cloud Alibaba 技术栈(知识精讲+项目实战)第三阶段网关限流-API 分组维度】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/685/detail/11896


网关限流-API 分组维度

内容介绍

一、简介

二、编写代码


一、简介

Sentinnle 对于 gateway 第一种维度的限流,也是基于路由维度的限流。

第二个维度的限流是自定义 API 维度,是一种更加灵活的维度,它允许我们利用Sentinnle 提供的 API,将请求路径分成对应的 API 分组,在组上设置限流规则即可。

自定义 API 分组其实是一种更细粒度的限流规则定义,允许我们将规则定义在分组上,而分组里面放的是请求路径。


二、编写代码

//自定义 API 分组

@PostConstruct

private void initCustomizedApis()

set definitions = new HashSet>();

ApiDefinition apil = new ApiDefinition("product_api1")

.setPredicateItems(new HashSet() f

//以/product-serv/product/api1开头的请求

add(new ApiPathPredicateItem().setPattern("/product-

serv/product/api1/**").

setMatchStrategy(SentinelGatewayConstants.URL_MATCH_STRATEGY_PREFIX));1);

ApiDefinition api2 = new ApiDefinition("product_api2")

.setPredicateItems(new HashSet() f

//以/product-serv/product/api2/demo1 完成的ur1路径匹配

add(new ApiPathPredicateItem().setPattern("/product-

serv/product/api2/demo1"));

]);

definitions.add(api1);

definitions.add(api2);

GatewayApiDefinitionManager.loadApiDefinitions(definitions);

在这个代码里,首先定义了两个分组,

第一个分组是以/product-serv/product/api1,里面可以放多个请求路径规则。

第二个分组是product-serv/product/api2/demo1 ,里面整个匹配在demo1 中。

接下来在两个分组里设置规则:

//配置初始化的限流参数

@PostConstruct

public void initGatewayRules()(

Set rules = new HashSet<>();

rules.add(

new GatewayFlowRule("product_zoute")//资源名称,对应路由id

.setCount(1)//限流國值

.setIntervalSec(1)//统计时间窗口,单位是秒,默认是1秒

);

GatewayRuleManager.loadRules(rules);

Set rules = new Hashset<>();rules.add(new GatewayFlowRule( resource:"product pil").setCount(1).setIntervalSec(1));

rules.add(new GatewayFlowRule( resource:"product api2").setCount(1).setIntervalSec(1));

GatewayRuleManager.loadRules(rules);

添加新的方法,对应好四个请求路径。

public classProductController (

@Autowired

private ProductService productService;

@RequestMapping("/product/api1/demo1")

public String demo1()

return "demo";

@RequestMapping("/product/api1/demo2")

public String demo2() (

return "demo";

@RequestMapping("/product/api2/demo1")

public String demo3()(

return "demo";

@ReqüestMapping("/product/api2/demo2")

public String demo4() (

return "demo";

重新启动,看看效果,写一下访问路径,依次访问四个路径,发现都被限流了。

相关文章
|
2月前
|
人工智能 监控 负载均衡
一文详述:AI 网关与 API 网关到底有什么区别?
近年来,AI发展迅猛,大模型成为推动业务创新的关键力量。企业面临如何安全管理和部署AI应用的挑战,需设计既能满足当前需求又可适应未来发展的基础架构。AI网关应运而生,在集成、管理和优化AI应用中扮演重要角色。本文探讨AI网关与API网关的区别,分析AI系统为何需要专门网关,并提供选择合适AI网关的建议。AI网关不仅支持多种模型,还具备高级安全性和性能优化功能,有助于企业在复杂环境中灵活应用AI技术。
101 1
|
4月前
|
开发框架 缓存 .NET
并发请求太多,服务器崩溃了?试试使用 ASP.NET Core Web API 操作筛选器对请求进行限流
并发请求太多,服务器崩溃了?试试使用 ASP.NET Core Web API 操作筛选器对请求进行限流
222 0
|
1月前
|
JSON 监控 JavaScript
Node.js-API 限流与日志优化
Node.js-API 限流与日志优化
|
4月前
|
人工智能 Cloud Native 安全
统一多层网关好处多,阿里云云原生 API 网关打造全能型网关
本文分享了作为一款全能型网关【云原生 API 网关】是如何帮助企业落地统一网关架构的。
8033 15
|
5月前
|
人工智能 API
阿里云微服务引擎及 API 网关 2024 年 6 月产品动态
阿里云微服务引擎及 API 网关 2024 年 6 月产品动态
161 23
|
4月前
|
人工智能 监控 安全
F5社区学习笔记:API和AI如何改变应用安全?
F5社区学习笔记:API和AI如何改变应用安全?
55 1
|
4月前
|
jenkins API 持续交付
jenkins学习笔记之十五:SonarSQube API使用
jenkins学习笔记之十五:SonarSQube API使用
|
4月前
|
安全 API
【Azure API 管理】APIM Self-Host Gateway 自建本地环境中的网关数量超过10个且它们的出口IP为同一个时出现的429错误
【Azure API 管理】APIM Self-Host Gateway 自建本地环境中的网关数量超过10个且它们的出口IP为同一个时出现的429错误
|
4月前
|
敏捷开发 测试技术 API
阿里云云效产品使用合集之调用API次数过多导致限流,该怎么办
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
5月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2024 年 06 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要