基于系统负载的动态限流组件 dynamic-limiter

本文介绍了动态限流组件dynamic-limiter,该组件根据系统负载如CPU使用率、Load和响应时间动态调整限流阈值,避免手动设置固定阈值带来的问题。文中详细阐述了动态限流的原理、测试效果以及适用场景,旨在在保障系统健康运行的同时最大化处理能力。
摘要由CSDN通过智能技术生成

基于系统负载的动态限流组件 dynamic-limiter

背景

一个系统的处理能力是有限的,当请求量超过处理能力时,通常会引起排队,造成响应时间迅速提升。如果对服务占用的资源量没有约束,还可能因为系统资源占用过多而宕机。因此,为了保证系统在遭遇突发流量时,能够正常运行,需要为你的服务加上限流。

通常限流可以分为两类:单机限流、全局限流。常见的单机限流工具有 Guava RateLimiter 和 Java Semaphore,全局限流可以用 Redis 做全局计数器来实现,基础架构组也提供了一个灵活的全局限流组件 common-blocking。这些限流工具有一个共同的缺点:都需要手动设置一个固定的限流阈值。

首先,手动设置固定阈值需要做容量评估,准确的容量评估是比较难的。其次,在每次系统更新升级后,阈值会变得不再准确,需要重新调整,比较繁琐。再次,固定阈值也不能应对服务器性能波动的情况,对于一些日志量比较大的应用,整点日志压缩时,会消耗较多性能,此时系统的处理能力肯定比其他时候要稍差一些。最后,应用大多运行在虚拟机上,同一个实体机上的虚拟机之间也会相互影响,这个体现在监控上就是 CPU 使用率里的 steal 值了。

既然固定阈值有这么多缺点,我们就想有没有什么办法能够自动计算限流阈值呢?下面介绍一下:基于系统负载的动态限流。

动态限流原理

为什么叫动态限流呢?因为我们希望在系统运行时,限流阈值能够根据实际情况做动态调整。具体根据什么来调整呢?系统负

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值