spring网关维度

网关维度(针对某一个微服务):

代表网关访问该服务时的限流规则;

粒度粗--全局的配置;

Api 分组维度(针对一系列url地址,这些url地址可以不在同一个微服务内):

代表网关访问该接口时的限流规则;

粒度细--局部配置;

要实现上述内容,首先需要在pom.xml文件内添加依赖(以来配置内容可以在网上找类似教程比较多);

通过网关来实现两种维度的限流,先进入resorce文件夹中对yml文件进行补充;

加入对于sentinel的扩写,补上内容datasource;

java 复制代码
sentinel:
    datasource:
        ds1.file:
            file:classpath:gw-flow.json #网关+API分组的限流
            ruleType: gw_flow
        ds2.file:
            file: classpath:api-group.json
            ruleType: gw api _group

然后在gw-flow.json文件中写入限流规则,可以在yml文件中进行描写:

java 复制代码
[
    {
        "resource":"资源的名称:网关时routes.id,api分组:api分组的名称"
        "resourceMode":"@网关,1api分组"
        "intervalsec":60,  //秒为单位
        "count":5    //限流次数
    },
    {
        "resource":"资源的名称:网关时routes.id,api分组:api分组的名称"
        "resourceMode":"@网关,1api分组"
        "intervalsec":60,
        'count": 5
    }
]

随后进行api分组内容,在同目录文档下写入api-group.json,当匹配到admin和login时,则自动启用该api分组栏目:

在测试效果前先进行接口的暴露,通过在GatewayServerApplication.java同目录下新建文件GatewayFlowRulesController.java,并在类上方标注注解@RestController,通过该java类完成网关维度限流策略以及api维度限流策略的获取;

@RestController注解是SpringMVC中的一个组合注解,用于标记一个类为控制器类。它实际上是@Controller和@ResponseBody注解的组合,表示该类中的所有方法都会返回JSON、XML等格式的数据,而不是视图页面。

list属于整个微服务架构,而login只属于api维度,当访问时,刚才存在网关维度的限流规则是60秒内5次,而api维度的限流规则是60秒内限制为1次;

场景题:现在list的限流规则为60秒内5次,而api维度的限流规则是60秒内限制为1次,list属于整个微服务架构,而login只属于api维度;请问当先访问list两次后再访问login一次还能请求到login吗,然后再访问list四次后再访问login一次,分别情况怎么样?

答:

  • 访问 list 两次

    • 由于 list 接口在API维度没有特别的限流规则,且它没有涉及API限流规则,默认假设没有限制。所以 list 的两次请求会被正常处理。
    • 网关维度的限流规则(60秒内5次)是跨所有接口的限制,因此网关维度限流规则目前使用了2次(两次 list 请求)。
  • 访问 login 一次

    • 根据API维度的限流规则,login 接口的访问是 60秒内1次 ,由于你当前60秒内还没有请求过 login,因此此时可以访问 login 接口。
    • 网关维度的限流规则是跨所有接口的,所以访问 login 后,网关的请求计数会增加到3次。
  • 访问 list 四次

    • 网关限流 :网关维度已有3次请求(包括之前的2次 list 和1次 login),现在访问 list 四次,总共是 3 + 4 = 7次请求,已经超过了网关维度的5次限制。
    • 因此,网关限流会触发 ,所有在这4次 list 请求中的请求都会被拒绝,直到60秒过去。
  • 访问 login 一次

    • 网关限流 :此时网关已经达到7次请求,超过了网关限流的5次限制,因此,无法请求到 login
    • API限流login 接口的API级别限流是60秒内1次,而在这个场景下,虽然API限流规则允许一次请求,但由于网关限流已经触发,所以 login 请求会被拦截。
相关推荐
霸道流氓气质1 分钟前
基于 Spring 事务同步机制的事务后置动作收集器 Starter 实践
java·后端·spring
过期动态7 分钟前
【LeetCode 热题 100】找到字符串中所有字母异位词
java·数据结构·算法·leetcode·职场和发展·rabbitmq
静默追光14 分钟前
服务器——看门狗
linux·运维·服务器
nVisual23 分钟前
巡检任务与工单闭环方案
运维·服务器·数据库·数据中心基础设施
刘小八44 分钟前
Spring AI Tool Calling 生产化:参数校验、权限控制与超时隔离
java·人工智能·spring
奶糖 肥晨1 小时前
一次Spring Boot编译报错排查:三元运算符与包装类型的“隐形陷阱”
java·spring boot·后端
谢栋_1 小时前
设计模式从入门到精通之(七)责任链模式
java·设计模式·责任链模式
CQU_JIAKE1 小时前
7.23[a]
linux·运维·服务器
愚公移码1 小时前
蓝凌EKP18产品:核心执行流程
java·流程引擎
VortMall1 小时前
全维度打磨细节体验,赋能商城稳定有序运营|VortMall 微服务商城 v1.3.11 版本发布
java·微服务·云原生·架构·商城系统·开源商城·vortmall