我是靠谱客的博主 灵巧烤鸡,最近开发中收集的这篇文章主要介绍SpringCloudAlibaba读书日志第七章限流与熔断微服务限流与熔断,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

微服务限流与熔断

计数器算法

指在指定周期内累加访问次数,访问次数达到一定阈值,触发限流策略,进入下一个时间周期时访问次数清零。

可以用在短信验证码

临界问题

在这里插入图片描述

滑动窗口算法

滑动窗口算法是为了解决临界问题。滑动窗口算法时一种流量控制技术,基于TCP的网络通信协议中,就采取了滑动窗口算法来解决网络拥塞的情况。

滑动窗口算法原理是在固定窗口中分割出多个小时间窗口,分别在每个小时间窗口中记录访问次数,然后根据时间将窗口期往前滑动并删除过期的小时间窗口。最终只需要统计滑动窗口范围内的所有小时间窗口总的计数。

在这里插入图片描述

令牌桶限流算法

令牌桶是网络流量整形(Traffic Shaping)和速度限制(Rate Limiting)中最常使用的一种算法。对于每一个请求,都需要从令牌桶中申请一个令牌,如果没有令牌,就会触发限流策略。
在这里插入图片描述

令牌桶 QPS=10 有以下情况

  1. 请求速度大于令牌生成速度:那么令牌会很快被取完,后续在进来的请求就会被限流。
  2. 请求速度等于令牌生成速度:此时流量处于平稳状态。
  3. 请求速度小于另外生成速度:说明此时系统的并发量不高,请求能被正常处理。

因为令牌桶的固定大小,当前请求数大于生成速度是,令牌桶会被填满,所以令牌桶可以处理突发流量,也就是在短时间内新增的流量系统能够正常处理,这是令牌桶的特性。

漏桶限流算法

漏桶限流算法的主要作用是控制数据注入网络的速度,平滑网络的突发流量。
在这里插入图片描述

特点

不管生产者的请求量有多大,消息的处理能力取决于消费者。常用在消息中间件。

存在的坑

  1. 请求速度大于漏桶流出的水滴速度:也就是请求数超出当前服务所能处理的极限,将会触发限流策略。
  2. 请求的速度小于或等于漏桶流出的水滴速度:也就是服务端的处理能力正好满足客户端的请求量。服务正常处理。

服务熔断与降级

说明是服务熔断

服务熔断是指在分布式框架下,一个完整的请求是需要经过多个服务器提供的服务,那么当中间某一个服务奔溃后,比如请求超时、服务异常等行为,为了防止整个系统出现雪崩效应,将暂时停止对该服务的调用,断开与外部服务的链接,当触发了熔断之后,对该服务的请求都会直接报错,知道服务恢复为止。

服务降级

服务降级常见方案

  1. 平均响应时常:比如1s内持续进入5个请求,对应是个的平均响应时间超过阈值,那么接下来在一个固定的时间窗口内,对这个方法请求就会自动熔断。
  2. 异常比例:当某个方法每秒调用所获的的异常总数的比例超过设定的阈值时,该资源会自动进入降级状态,也就是在接下来的一个固定时间窗口中,对这个方法的调用都会自动返回。
  3. 异常数量:和异常比例类似,总计的事固定时间窗口内异常出现的数量超过了阈值,就会触发自动降级。

分布式限流框架Sentinel

Sentinel特性

  1. 丰富的应用场景:几乎涵盖了所有的应用场景,如秒杀、削峰填谷、集群流量控制。
  2. 实时监控:Sentinel提供了实时监控功能,开发者可以在控制台中看到介入应用的带台机器秒级数据,设置500台一下规模的集群汇总运行情况。
  3. 开原生态支持:Sentinel提供开箱即用的与其他开源框架/库的整合,例如与Spring Cloud、Dubbo、gRPC的整合。
  4. SPI扩展支持:Sentinel提供了SPI扩展点支持,开发者可以通过扩展点来定制化限流规则,动态数据源适配等需求。

Sentinel 的组成

  1. 核心库:不依赖任何框架/库,他支持机器发现,以及将看情况管理、监控、规则管理和推送的功能。
  2. 控制台:基于Spring Boot开发,打包后可以直接运行,不需要额外的Tomcat等应用容器。

Sentinel的使用

基本使用步骤

  1. 定义资源
  2. 定义限流规则
  3. 检查规则是否生效

最后

以上就是灵巧烤鸡为你收集整理的SpringCloudAlibaba读书日志第七章限流与熔断微服务限流与熔断的全部内容,希望文章能够帮你解决SpringCloudAlibaba读书日志第七章限流与熔断微服务限流与熔断所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部