做网站的工作流程,石家庄58同城,html做游戏网站,域名解析网站建设一、概述
在微服务系统中#xff0c;网关提供了微服务系统的统一入口#xff0c;所以我们在做限流的时候#xff0c;肯定是要在网关层面做一个流量的控制#xff0c;Sentinel 支持对 Spring Cloud Gateway、Zuul 等主流的 API Gateway 进行限流。 1.1 总览
Sentinel 1.6.…一、概述
在微服务系统中网关提供了微服务系统的统一入口所以我们在做限流的时候肯定是要在网关层面做一个流量的控制Sentinel 支持对 Spring Cloud Gateway、Zuul 等主流的 API Gateway 进行限流。 1.1 总览
Sentinel 1.6.0 引入了 Sentinel API Gateway Adapter Common 模块此模块中包含网关限流的规则和自定义 API 的实体和管理逻辑 GatewayFlowRule网关限流规则针对 API Gateway 的场景定制的限流规则可以针对不同 route 或自定义的 API 分组进行限流支持针对请求中的参数、Header、来源 IP 等进行定制化的限流。 ApiDefinition用户自定义的 API 定义分组可以看做是一些 URL 匹配的组合。比如我们可以定义一个 API 叫 my_api请求 path 模式为 /foo/** 和 /baz/**的都归到 my_api 这个 API 分组下面。限流的时候可以针对这个自定义的 API 分组维度进行限流。
其中网关限流规则GatewayFlowRule的字段解释如下 resource资源名称可以是网关中的 route 名称或者用户自定义的 API 分组名称。 resourceMode规则是针对 API Gateway 的 routeRESOURCE_MODE_ROUTE_ID还是用户在 Sentinel 中定义的 API 分组RESOURCE_MODE_CUSTOM_API_NAME默认是 route。 grade限流指标维度同限流规则的 grade 字段。 count限流阈值 intervalSec统计时间窗口单位是秒默认是 1 秒。 controlBehavior流量整形的控制效果同限流规则的 controlBehavior 字段目前支持快速失败和匀速排队两种模式默认是快速失败。 burst应对突发请求时额外允许的请求数目。 maxQueueingTimeoutMs匀速排队模式下的最长排队时间单位是毫秒仅在匀速排队模式下生效。 paramItem 参数限流配置。若不提供则代表不针对参数进行限流该网关规则将会被转换成普通流控规则否则会转换成热点规则。其中的字段 parseStrategy从请求中提取参数的策略目前支持提取来源 IPPARAM_PARSE_STRATEGY_CLIENT_IP、HostPARAM_PARSE_STRATEGY_HOST、任意 HeaderPARAM_PARSE_STRATEGY_HEADER和任意 URL 参数PARAM_PARSE_STRATEGY_URL_PARAM四种模式。 fieldName若提取策略选择 Header 模式或 URL 参数模式则需要指定对应的 header 名称或 URL 参数名称。 pattern参数值的匹配模式只有匹配该模式的请求属性值会纳入统计和流控若为空则统计该请求属性的所有值。1.6.2 版本开始支持 matchStrategy参数值的匹配策略目前支持精确匹配PARAM_MATCH_STRATEGY_EXACT、子串匹配PARAM_MATCH_STRATEGY_CONTAINS和正则匹配PARAM_MATCH_STRATEGY_REGEX。1.6.2 版本开始支持
用户可以通过GatewayRuleManager.loadRules(rules)手动加载网关规则或通过 GatewayRuleManager.register2Property(property)注册动态规则源动态推送推荐方式。
1.2 网关控制台
Sentinel 1.6.3 引入了网关流控控制台的支持用户可以直接在 Sentinel 控制台上查看 API Gateway 实时的 route 和自定义 API 分组监控管理网关规则和 API 分组配置。
二、基础使用
首先我们有9999网关服务和9001服务
2.1 网关服务添加依赖
dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-sentinel/artifactId
/dependency
dependency groupIdcom.alibaba.csp/groupId artifactIdsentinel-spring-cloud-gateway-adapter/artifactId
/dependency
dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-alibaba-sentinel-gateway/artifactId
/dependency2.2 网关服务配置
server: port: 9999
spring: application: name: cloud-getway-service cloud: nacos: discovery: server-addr: localhost:8848 sentinel: transport: dashboard: localhost:8080 port: 8719 gateway: discovery: locator: enabled: true #开启从注册中心动态创建路由的功能利用微服务名进行路由 routes: - id: nacos-payment-provider uri: http://localhost:9001/nacos-payment-provider predicates: - Path/test/**2.3 Sentinel控制台增加对应的流控
2.3.1 按照Route ID 进行流控
这将会会整个微服务限流不推荐
此时的设置为针对 nacos-provider这个路由id对应的流控类型为qps阈值为1。 间隔当每秒的请求超过QPS值启动间隔。1秒内所有调用这个接口直接返回。不去调用业务代码。 Burst size: 应对突发请求时额外允许的请求数目。
注意 这个Burst size 有个tips.通过的请求等于QPS阈值Burst size 总请求数量 我们快速访问浏览器结果如下
2.3.2 API分组
这里对应API名称可以随意编写分组的意思就是可以将一类的流控接口变成一个API分组这里有三种方式
精准精准匹配对应的请求地址
前缀匹配对应的地址前缀
正则通过正则的方式匹配
2.3.2.1 精准匹配 此时我们疯狂点击9001服务的其他端口正常访问无限制 2.3.2.2 前缀演示
我们针对/test/login/123 或者 /test/login/v1/** 匹配后缀 疯狂点击浏览器即可
2.3.2.3 正则表达式 如果对你有帮助可以关注博主不定期更新各种技术文档 给博主一个免费的点赞以示鼓励谢谢 ! 欢迎各位点赞评论收藏⭐️