网关限流-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";

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

相关文章
|
5月前
|
NoSQL 算法 Java
面试官:网关如何实现限流?
面试官:网关如何实现限流?
307 2
面试官:网关如何实现限流?
|
1月前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
81 0
|
1月前
|
Java 网络架构 微服务
SpringCloud GateWay网关-学习笔记
SpringCloud GateWay网关-学习笔记
30 0
|
2月前
|
监控 算法 Java
保卫你的API:深入了解接口限流
保卫你的API:深入了解接口限流
79 0
|
5月前
|
监控 API Nacos
微服务轮子项目(19) -Alibaba Sentinel限流熔断(网关流控)
微服务轮子项目(19) -Alibaba Sentinel限流熔断(网关流控)
70 0
|
8月前
|
存储 JSON 算法
微服务网关限流&鉴权3
微服务网关限流&鉴权
69 0
|
8月前
|
算法 NoSQL Redis
微服务网关限流&鉴权2
微服务网关限流&鉴权
105 0
|
8月前
|
监控 安全 Java
微服务网关限流&鉴权1
微服务网关限流&鉴权
64 0
|
8月前
|
前端开发 API
前端学习笔记202305学习笔记第三十天-什么是mvc-c层api 前后端联动1
前端学习笔记202305学习笔记第三十天-什么是mvc-c层api 前后端联动1
51 0
|
8月前
|
前端开发 API
前端学习笔记202305学习笔记第三十一天-什么是mvc-c层api 前后端联动3
前端学习笔记202305学习笔记第三十一天-什么是mvc-c层api 前后端联动3
41 0

热门文章

最新文章