网关限流-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月前
|
开发框架 缓存 .NET
并发请求太多,服务器崩溃了?试试使用 ASP.NET Core Web API 操作筛选器对请求进行限流
并发请求太多,服务器崩溃了?试试使用 ASP.NET Core Web API 操作筛选器对请求进行限流
131 0
|
2月前
|
人工智能 Cloud Native 安全
统一多层网关好处多,阿里云云原生 API 网关打造全能型网关
本文分享了作为一款全能型网关【云原生 API 网关】是如何帮助企业落地统一网关架构的。
7751 6
|
2月前
|
人工智能 监控 安全
F5社区学习笔记:API和AI如何改变应用安全?
F5社区学习笔记:API和AI如何改变应用安全?
31 1
|
3月前
|
人工智能 API
阿里云微服务引擎及 API 网关 2024 年 6 月产品动态
阿里云微服务引擎及 API 网关 2024 年 6 月产品动态
146 19
|
2月前
|
监控 安全 API
神器!API接口限流就是这么简单
【8月更文挑战第31天】在当今的互联网时代,随着微服务架构的普及和API经济的快速发展,API接口的安全与性能保障变得尤为重要。其中,接口限流作为保护系统不受恶意请求或过载影响的关键技术之一,被广泛应用于各类服务中。今天,我们就来深入探讨一款“神器”,它让API接口限流变得既简单又高效。
37 0
|
2月前
|
jenkins API 持续交付
jenkins学习笔记之十五:SonarSQube API使用
jenkins学习笔记之十五:SonarSQube API使用
|
2月前
|
安全 API
【Azure API 管理】APIM Self-Host Gateway 自建本地环境中的网关数量超过10个且它们的出口IP为同一个时出现的429错误
【Azure API 管理】APIM Self-Host Gateway 自建本地环境中的网关数量超过10个且它们的出口IP为同一个时出现的429错误
|
2月前
|
敏捷开发 测试技术 API
阿里云云效产品使用合集之调用API次数过多导致限流,该怎么办
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
3月前
|
运维 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 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
API 开发工具 自然语言处理
API网关统一管理企业内部API
使用API网关统一管理公司内部API接口,提供统一通信协议,API文档和SDK,将大大提升公司内部部门间协作的效率。阿里云的API网关不但为单租户提供统一的API管理平台,还具备API的流量控制、多语言统一SDK、统一签名认证机制,流量预警,API文档自动生成(即将上线)等强大的能力支持。
5137 0
下一篇
无影云桌面