Gateway结合sentinel限流简介

编程入门 行业动态 更新时间:2024-10-08 06:21:05

Gateway结合sentinel限流<a href=https://www.elefans.com/category/jswz/34/1769824.html style=简介"/>

Gateway结合sentinel限流简介

Gateway结合sentinel限流简介

在springcloud的微服务架构中,通过Gateway将资源对象藏在内网,只将Gateway暴露在外网服务中,所有的服务从外部到Gateway以后经过路由的转发,发送到各个微服务平台,此时需要Gateway可能将面临大量流量的访问,在某一刻的访问流量过大将导致网关服务不可用,那么将出现宕机的情况,并且从系统稳定性角度考虑,在处理请求的速度上,也有非常多的讲究。任意时间到来的请求往往是随机不可控的,而系统的处理能力是有限的。我们需要根据系统的处理能力对流量进行控制。流量控制的解决方案有多种,此处写一下使用Springcloud Gateway和Sentinel的结合进行限流操作。
Sentinel是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。Sentinel具有以下特性:丰富的应用场景、完备的实时监控、广泛的开源生态、完善的SPI扩展点。Sentinel是阿里巴巴自研开源组件,支撑了阿里近10年的双十一促流量的核心场景,例如秒杀、消峰、集群限流,具备完善的实时监控系统。

在具体讲述之前首先明确几个名词的定义

资源:资源是Sentinel的关键概念。它可以是 Java 应用程序中的任何内容,例如,由应用程序提供的服务,或由应用程序调用的其它应用提供的服务,甚至可以是一段代码。在此次我们可以简单的理解为一个Restful服务接口。
规则:围绕资源的实时状态设定的规则,可以包括流量控制规则、熔断降级规则以及系统保护规则。所有规则可以动态实时调整。
在Gateway的限流规则中,可以根据Gateway中已经配置的route资源名称或者用户的自定义的API分组这2中情况进行限流。若2者均有匹配的情况下以后者的匹配为准。
每个请求在Gateway中经过一个过滤器链的处理,可以对URL连接进行一些修改操作,例如PrefixPathGateFilterFactory在url地址前拼接固定的字符串,StriprefixGatewayFilterFactory把url字符串根据“/”分割,默认去掉几个字符,SentinelGateWayFilter中进行路由规则、自定义规则根据url路径拦截,调用Sentinel的规则进行流量控制。
此处注意:当一个请求访问服务网关时,若开启限流,限流规则通过,将直接在地NettyRoutingFilter中通过Netty发送http请求访问后端微服务。若限流不通过,同样此Filter中发送请求,请求地址还是访问网关的服务,在前面的Filter—NettyWriteResponseFilter中接收此请求,继续过滤器链。
Sentinel限流使用的规则是滑动窗口的原理,统计某一个时间窗口内的请求数量,通过Slots插槽(类似于过滤器链的模式)来统计流量进行控制。
Slots链的工作方式如下图所示:

重要的2个Slot为StatisticSlotFlowSlot和FlowSlot,前者通过滑动窗口统计数量,FlowSlot对流量进行分析控制,判断是否允许通过。具体的统计信息均由ClusterBuilderSlot进行统计,具体的信息放在了一个Map【clusterNodeMap】中,此处不是源码解析,感兴趣的推荐一篇源码解析,受益匪浅。Sentinel源码解析之滑动窗口

后记

学习记录,不足之处,请指正。

更多推荐

Gateway结合sentinel限流简介

本文发布于:2024-02-19 17:09:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1764986.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:简介   Gateway   sentinel

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!