【本人秃顶程序员】接口限流算法之漏桶算法&令牌桶算法

本文介绍了在高并发系统中保护系统稳定性的限流策略,重点讲解了两种常见的限流算法——漏桶算法和令牌桶算法。漏桶算法以恒定速率出水,超出部分丢弃;令牌桶算法则允许一定程度的突发传输,通过令牌控制请求速率。Google的RateLimiter实现使用的是令牌桶算法,文中还展示了其用法和预消费能力的概念。
摘要由CSDN通过智能技术生成

←←←←←←←←←←←← 快,点关注!

工作中对外提供的API 接口设计都要考虑限流,如果不考虑限流,会成系统的连锁反应,轻者响应缓慢,重者系统宕机,整个业务线崩溃,如何应对这种情况呢,我们可以对请求进行引流或者直接拒绝等操作,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机。

在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流

缓存:缓存的目的是提升系统访问速度和增大系统处理容量

降级:降级是当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行

限流:限流的目的是通过对并发访问/请求进行限速,或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理

限流算法

常用的限流算法有令牌桶和和漏桶,而Google开源项目Guava中的RateLimiter使用的就是令牌桶控制算法。

漏桶算法

把请求比作是水,水来了都先放进桶里,并以限定的速度出水,当水来得过猛而出水不够快时就会导致水直接溢出,即拒绝服务。
在这里插入图片描述
漏斗有一个进水口 和 一个出水口,出水口以一定速率出水,并

动态规划是一种解决多阶段决策问题的优化方法,它通过将问题分解为一系列子问题,并利用子问题的最优解来求解原问题的最优解。最短路径问题是一种常见的动态规划问题,其中Dijkstra算法是一种常用的解决最短路径问题的算法。 Dijkstra算法是一种贪心算法,用于计算图中两个节点之间的最短路径。它的基本思想是从起点开始,逐步扩展到所有其他节点,每次选择当前距离起点最近的节点,并更新与该节点相邻的节点的最短路径。该算法使用一个距离数组来记录起点到每个节点的最短路径长度,以及一个访问数组来记录已经确定最短路径的节点。通过不断选择最短路径的节点,并更新相邻节点的最短路径,直到到达目标节点或者遍历完所有节点,从而得到最短路径的结果。 关于最短路径Dijkstra算法在Matlab中的实现,有一些相关的资源可供参考。提供了一个博客文章,其中包含了Dijkstra算法及其在Matlab中的实现。中提供了一个基于Dijkstra算法的Matlab代码,用于解决图像地图最短路径求解问题。此外,也提供了一个通俗易懂的解释和理解Dijkstra算法求解最短路径的知乎链接。这些资源可以帮助你更好地理解和应用Dijkstra算法在Matlab中求解最短路径问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [最短路径 Dijkstra算法的Matlab代码实现](https://blog.csdn.net/lishan132/article/details/108527271)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [基于dijkstra 算法实现图像地图最短路径求解附matlab代码.zip](https://download.csdn.net/download/qq_59747472/85639654)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值