分布式 & 令牌桶算法 & 总结

前言


相关系列

参考文献

概述


简介

TBA @ Token Bucket Algorithm @ 令牌桶算法是一种流行于网络通信领域的流量控制/频率限制算法。令牌桶算法的核心原理是通过一个概念上的"桶"来控制请求的访问频率,这个桶中会保存一定数量的"令牌",每个请求只有获得令牌后才能正式访问系统,否则就只能等待/放弃。而由于桶中的令牌会以固定的频率生成,因此令牌桶算法就可以达到持续控制请求访问数量&频率的效果。此外由于桶可以按配置预存一定数量的令牌,因此在日常请求访问频率 < 令牌产生频率的情况下,令牌桶算法还可以支持一定程度流量高/突发,这是另一种限流算法"漏桶"所不具备的能力。

场景

  • ++限制网络带宽:控制访问流量;++
  • ++限制API频率:限制API调用频率;++
  • ++功能分级:为不同级别的用户提供不同频率的服务;++
  • ++任务调度:限制任务执行频率以避免资源争用。++

原理


概念

  • ++令牌桶:用于存放指定数量令牌的虚拟容器,通常使用Redis一类的中间件实现;++
  • ++令牌填充频率:系统向令牌桶中生成/置入令牌的频率,一般是系统平均QPS/s;++
  • ++令牌消耗:每当请求到达时从桶中移除一个令牌以支持其访问系统。如果桶中没有令牌,那么请求将被延迟/丢弃。++

流程

  • ++系统持续以指定频率产生指定数量的令牌至于令牌桶中,如果令牌桶已满则丢弃;++
  • ++客户端访问系统,在网关被拦截。随后网关会判断当前请求是否免限流,是则直接访问;++
  • ++如果当前请求不免限流,则网关会从尝试从令牌桶中获取令牌。如果令牌不存在则拒绝请求;否则允许请求按预期目的访问系统。++
相关推荐
爱的叹息1 小时前
主流数据库的存储引擎/存储机制的详细对比分析,涵盖关系型数据库、NoSQL数据库和分布式数据库
数据库·分布式·nosql
千层冷面2 小时前
RabbitMQ 发送者确认机制详解
分布式·rabbitmq·ruby
ChinaRainbowSea2 小时前
3. RabbitMQ 的(Hello World) 和 RabbitMQ 的(Work Queues)工作队列
java·分布式·后端·rabbitmq·ruby·java-rabbitmq
敖正炀2 小时前
基于RocketMQ的可靠消息最终一致性分布式事务解决方案
分布式
一條狗4 小时前
随笔 20250402 分布式 ID 生成器 Snowflake 里面的坑
分布式
小马爱打代码4 小时前
Kubernetes 中部署 Ceph,构建高可用分布式存储服务
分布式·ceph·kubernetes
码熔burning4 小时前
【Spring Cloud Alibaba】:Nacos 入门讲解
分布式·spring cloud·微服务
低头不见17 小时前
一个服务器算分布式吗,分布式需要几个服务器
运维·服务器·分布式
靠近彗星17 小时前
如何检查 HBase Master 是否已完成初始化?| 详细排查指南
大数据·数据库·分布式·hbase
小马爱打代码20 小时前
Kafka - 消息零丢失实战
分布式·kafka