【Redis】--redis lua+令牌桶算法实现分布式限流

本文介绍了限流的背景和分类,包括网关限流、服务端单机限流以及分布式限流,并详细讲解了令牌桶算法。重点讨论了如何利用Redis Lua在分布式环境中实现令牌桶限流,通过springboot集成redisTemplate并提供了lua脚本的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、限流前言

无论是传统还是互联网技术框架,我们要保证系统的高可用----减少系统不能提供服务的时间,保证服务高度可用性。其中,保障高可用的实践方案之一:限流。
按照个人理解,限流可分为如下:
在这里插入图片描述

1.1、网关限流

一般是借用第三方组件技术来实现,主要在高并发场景的系统架构使用的较多。

1.2、服务端限流–单机限流

主要有三种常见的算法:计数器、漏桶算法、令牌桶算法

计数器
如限流QPS为100,那么1秒内最多100个请求,超过的给拒绝。

漏桶算法
一个固定容量的漏桶按照常量固定速率流出水滴。能够让突发流量被整形,以便为网络提供稳定的流量。
流入桶的速率任意,如果桶容量超过了,那么就丢弃水滴。但流出桶的速率固定不变【无法解决系统突发流量】。

令牌桶算法
保证均匀速度产生令牌,一个令牌对应处理一个请求。同时,产生的令牌数量达到了桶的容量时,会被丢弃。那么能很好地处理突发高流量。
令牌桶有一定容量,后台服务以恒定速率向桶中放入令牌(token),当桶中数量超过容量后,多余的令牌直接丢弃。当N个请求进入,从桶中拿N个令牌,能拿到的请求继续后续流程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DreamBoy_W.W.Y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值