当前位置: 首页 > news >正文

分布式 令牌桶算法 总结

前言


 相关系列

  • 《分布式 & 目录》
  • 《分布式 & 令牌桶算法 & 总结》
  • 《分布式 & 令牌桶算法 & 问题》
     

参考文献

  • 《【算法】令牌桶算法》
     
     

概述


简介

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

场景

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

原理


在这里插入图片描述

概念

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

流程

  • 系统持续以指定频率产生指定数量的令牌至于令牌桶中,如果令牌桶已满则丢弃;
  • 客户端访问系统,在网关被拦截。随后网关会判断当前请求是否免限流,是则直接访问;
  • 如果当前请求不免限流,则网关会从尝试从令牌桶中获取令牌。如果令牌不存在则拒绝请求;否则允许请求按预期目的访问系统。
http://www.lryc.cn/news/504388.html

相关文章:

  • FFMPEG视频转图片
  • docker入门实践---虚拟机环境配置
  • java要防止重复序列化的问题JSON.toJSONString转义问题
  • TS的类型守卫、类型约束实践
  • 文件转曲,限制PDF文件编辑的最佳方案!
  • MySQL系列之数据授权(安全)
  • 用 Python 实现经典的 2048 游戏:一步步带你打造属于你的小游戏!
  • Vue vs. React:两大前端框架的深度对比与分析(一)
  • React 进阶深入理解核心概念与高阶实践
  • Linux shell的七大功能 ---自动补齐、管道机制、别名
  • XML 在线格式化 - 加菲工具
  • java_多态的应用
  • Python+OpenCV系列:模版匹配
  • 【从零开始入门unity游戏开发之——C#篇10】循环结构——while、do-while、for、foreach的使用
  • Spring Boot项目使用虚拟线程
  • 实现SpringBoot项目嵌入其他项目
  • 朗致面试---IOS/安卓/Java/架构师
  • 数字信号处理:FIR滤波器
  • 鲲鹏麒麟安装Kafka-v1.1.1
  • 群控系统服务端开发模式-应用开发-操作记录功能开发
  • 昇思25天学习打卡营第33天|共赴算力时代
  • Vue 让视图区域滑到指定位置、回到顶部
  • EasyGBS点对点穿透P2P远程访问技术在安防视频监控中的应用
  • Android 使用 Gson + OkHttp 实现 API 的常规使用(个人心得)
  • WPF+MVVM案例实战与特效(三十九)- 深度剖析一个弧形进度条的实现
  • opencv——图片矫正
  • 前端核心知识总结
  • 【C语言】五子棋(c语言实现)
  • 【数据结构——查找】顺序查找(头歌实践教学平台习题)【合集】
  • Python的3D可视化库【vedo】2-1 (plotter模块) 绘制器的使用