实现熔断、限流的底层原理是什么

简介: 实现熔断、限流的底层原理是什么

Sentinel提供多种流量 控制算法 ,包括:滑动窗口算法、令牌桶算法以及漏桶算法等。
滑动窗口算法:
是一种用于统计单位时间内请求次数的方法,用来实现限流的目的。它将时间划分为多个小的时间窗口,并在每个小窗口内记录请求的数量。当新的请求到来时,系统会检查当前小窗口内的请求数量是否超过了预设的阈值,如果超过则拒绝请求。
令牌桶算法:
核心思想是一个桶中存储了一定数量的令牌,每当有请求到达时,就需要从桶中取出一个令牌。如果没有足够的令牌,则请求被延迟或拒绝。
以固定的速率生成令牌,存入令牌桶中,如果令牌桶满了以后,多余令牌丢弃。
请求进入后,必须先尝试从桶中获取令牌,获取到令牌后才可以被处理
如果令牌桶中没有令牌,则请求等待或丢弃
在使用令牌桶算法时,可能会存在突发流量导致系统过载,所以尽量不要将令牌上限设定到服务能承受的QPS上限。而是预留一定的波动空间,这样我们才能应对突发流量。
漏桶算法:
漏桶算法与令牌桶相似,但在设计上更适合应对并发波动较大的场景,以解决令牌桶中的问题。
就是请求到达后不是直接处理,而是先放入一个队列。而后以固定的速率从队列中取出并处理请求。之所以叫漏桶算法,就是把请求看做水,队列看做是一个漏了的桶。

相关文章
|
Linux
Linux大文件查看利器:掌握Less命令的使用和技巧
Linux大文件查看利器:掌握Less命令的使用和技巧
2202 0
|
9月前
|
Java API Nacos
|
运维 监控 算法
聊一聊Sentinel背后的原理
本文介绍了Sentinel的核心原理,包括流量控制、熔断降级、系统负载保护、实时监控和统计、与多种微服务框架的集成能力以及扩展性,强调了Sentinel在保障分布式系统稳定性方面的重要性。
1089 0
|
负载均衡 安全 Java
【微服务系列笔记】Gateway
Gateway是Spring Cloud生态系统中的网关服务,作为微服务架构的入口,提供路由、负载均衡、限流、鉴权等功能。借助于过滤器和路由器,Gateway能够动态地管理请求流量,保障系统的安全和性能。
2272 7
|
存储 人工智能 算法
RAG七十二式:2024年度RAG清单
作者遴选了2024年度典型的RAG系统和论文(含AI注解、来源、摘要信息),并于文末附上RAG综述和测试基准材料,希望阅读完本文可以帮助大家速通RAG。
|
负载均衡 算法 Java
蚂蚁面试:Nacos、Sentinel了解吗?Springcloud 核心底层原理,你知道多少?
40岁老架构师尼恩分享了关于SpringCloud核心组件的底层原理,特别是针对蚂蚁集团面试中常见的面试题进行了详细解析。内容涵盖了Nacos注册中心的AP/CP模式、Distro和Raft分布式协议、Sentinel的高可用组件、负载均衡组件的实现原理等。尼恩强调了系统化学习的重要性,推荐了《尼恩Java面试宝典PDF》等资料,帮助读者更好地准备面试,提高技术实力,最终实现“offer自由”。更多技术资料和指导,可关注公众号【技术自由圈】获取。
蚂蚁面试:Nacos、Sentinel了解吗?Springcloud 核心底层原理,你知道多少?
|
存储 负载均衡 NoSQL
一文让你搞懂 zookeeper
一文让你搞懂 zookeeper
19845 16
|
开发框架 Java 开发者
Spring Boot中的自动装配原理
Spring Boot中的自动装配原理
3679 1
|
机器学习/深度学习 缓存 监控
Redis经典问题:热点key问题
本文介绍了Redis中的热点key问题及其对系统稳定性的影响。作者提出了多种提前发现热点key的方法,包括历史数据分析、业务分析、实时监控、用户行为分析和机器学习预测。同时,文章列举了应对热点key的解决方案,如分布式存储、主从复制、前置缓存、定时刷新、限制逃逸流量和兜底逻辑。通过这些策略,可以有效管理和预防热点key带来的挑战,保证系统性能和可用性。
1859 5
|
消息中间件 存储 Kafka
微服务中常用的几种通信方式
微服务中常用的几种通信方式