soul 网关(十五):限流和熔断的扫盲篇

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了soul 网关(十五):限流和熔断的扫盲篇相关的知识,希望对你有一定的参考价值。

参考技术A 发现前三者都是基本在机器数量上增加,最后则不同,是利用熔断限流机制,进行负载能力的控制。

最简单的限流算法就是维护一个计数器 Counter,当一个请求来时,就做加一操作,当一个请求处理完后就做减一操作。如果这个 Counter 大于某个数了(我们设定的限流阈值),那么就开始拒绝请求以保护系统的负载了。

队列流控是以队列的的方式来处理请求。如果处理过慢,那么就会导致队列满,而开始触发限流。这样的算法需要用队列长度来控制流量,在配置上比较难操作。如果队列过长,导致后端服务在队列没有满时就挂掉了。

漏斗算法其实就是在队列请求中加上一个限流器,来让 Processor 以一个均匀的速度处理请求

从理论上来说,令牌桶的算法和漏斗算法不一样的是,漏斗算法中,处理请求是以一个常量和恒定的速度处理的,而令牌桶算法则是在流量小的时候“攒钱”,流量大的时候,可以快速处理。

上面两道面试题都提到了熔断限流,那 Soul 上又是如何实现限流熔断机制的呢?

利用 Redis 令牌桶算法进行限流。和 Guava RateLimiter 的名字类似,但两者不一样。

hystrix 插件是网关用来对流量进行熔断的核心实现。

使用信号量的方式来处理请求,基于 Netflix/Hystrix 来实现的。

sentinel 为网关熔断限流提供能力。

resilience4j 为网关熔断限流提供能力。

上述四个插件便是 Soul 上用于解决限流熔断机制。

弹力设计篇之“限流设计”
超详细的Guava RateLimiter限流原理解析

以上是关于soul 网关(十五):限流和熔断的扫盲篇的主要内容,如果未能解决你的问题,请参考以下文章

微服务 - 如何进行服务限流和熔断

微服务和API网关限流熔断实现关键逻辑思路

Dubbo之限流TpsLimitFilter源码分析

高并发整体可用性:一文详解降级限流和熔断

通过API网关实现微服务管控-限流,熔断和降级

php接口限流和熔断,担心因为接口设置访问量过大而导致接口堵塞,请问是不是有第三方架包或者方法可以实现