当前位置:首页 > 科技  > 软件

五分钟搞懂分布式流控算法

来源: 责编: 时间:2024-04-29 09:07:39 264观看
导读流控是任何一个复杂系统都必须考虑的问题,本文介绍并比较了不同的流控算法,从而帮助我们可以基于系统需求和架构选择合适的方案。原文:Distributed Rate-Limiting Algorithms[1]当我们设计分布式流控系统(distributed rat

流控是任何一个复杂系统都必须考虑的问题,本文介绍并比较了不同的流控算法,从而帮助我们可以基于系统需求和架构选择合适的方案。原文:Distributed Rate-Limiting Algorithms[1]BZe28资讯网——每日最新资讯28at.com

当我们设计分布式流控系统(distributed rate-limiting system)时,需要用到哪些工具和算法?BZe28资讯网——每日最新资讯28at.com

Joshua Hoehne @UnsplashBZe28资讯网——每日最新资讯28at.com

Criteo是全球最大的广告技术公司之一,随着广告市场的不断发展,Criteo在过去几年里一直致力于改进API,帮助客户更好的通过可编程接口访问需要的服务。BZe28资讯网——每日最新资讯28at.com

随着越来越多的客户使用新的API,很明显,需要实现某种流量控制,以确保所有客户端都能平等访问资源,并保护API免受(恶意或错误的)频繁调用。BZe28资讯网——每日最新资讯28at.com

流控似乎很简单: 只允许给定的客户端每分钟执行X个调用。在单个服务器实例上实现流控非常容易,可以很容易找到相关的库来实现。但问题是我们的API托管在6个数据中心(欧洲、北美和亚洲),每个数据中心都有多个实例,这意味着我们需要某种分布式流控系统。BZe28资讯网——每日最新资讯28at.com

流控不仅与调用次数有关,还需要和客户端同步当前被限制的状态(例如,使用专用的报头和状态码)。但是本文将主要关注用于流控的算法和系统。BZe28资讯网——每日最新资讯28at.com

利用负载均衡

在尝试开发自己的系统之前,更重要的是查看现有的基础设施是否能够提供想要的特性。BZe28资讯网——每日最新资讯28at.com

那么,部署在数据中心所有实例之前,并且已经在负责检查、路由流量的是什么?负载均衡器。大多数负载均衡器都提供了流控特性或某种可用于实现流控的抽象。例如,HAProxy有现成的可用于设置流控的stick tables[2],可以在实例之间同步状态,并且工作得很好。BZe28资讯网——每日最新资讯28at.com

不幸的是,负载均衡不支持我们需要的某些特性(动态限制、令牌自省token introspection、……),因此我们需要自己实现这些特定的需求。BZe28资讯网——每日最新资讯28at.com

初级方案

会话粘连(Sticky sessions)

说到负载均衡,如果给定客户端的负载并不均衡,并且总是与单个实例交互

本文链接:http://www.28at.com/showinfo-26-86346-0.html五分钟搞懂分布式流控算法

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Nacos 并发小技巧之缓存实例信息

下一篇: 分享七个令人兴奋的 Go-cli 项目

标签:
  • 热门焦点
  • 卢伟冰长文解析K60至尊版 对Redmi有着里程碑式的意义

    在今天的Redmi后性能时代战略发布会结束之后,Redmi总经理卢伟冰又带来了一篇长文,详解了为什么 Redmi 要开启后性能时代?为什么选择和 MediaTek、Pixelworks 深度合作?以及后性
  • 对标苹果的灵动岛 华为带来实况窗功能

    继苹果的灵动岛之后,华为也在今天正式推出了“实况窗”功能。据今天鸿蒙OS 4.0的现场演示显示,华为的实况窗可以更高效的展现出实时通知,比如锁屏上就能看到外卖、打车、银行
  • Redmi Pad评测:红米充满野心的一次尝试

    从Note系列到K系列,从蓝牙耳机到笔记本电脑,红米不知不觉之间也已经形成了自己颇有竞争力的产品体系,在中端和次旗舰市场上甚至要比小米新机的表现来得更好,正所谓“大丈夫生居
  • JavaScript 混淆及反混淆代码工具

    介绍在我们开始学习反混淆之前,我们首先要了解一下代码混淆。如果不了解代码是如何混淆的,我们可能无法成功对代码进行反混淆,尤其是使用自定义混淆器对其进行混淆时。什么是混
  • 一篇聊聊Go错误封装机制

    %w 是用于错误包装(Error Wrapping)的格式化动词。它是用于 fmt.Errorf 和 fmt.Sprintf 函数中的一个特殊格式化动词,用于将一个错误(或其他可打印的值)包装在一个新的错误中。使
  • Python异步IO编程的进程/线程通信实现

    这篇文章再讲3种方式,同时讲4中进程间通信的方式一、 Python 中线程间通信的实现方式共享变量共享变量是多个线程可以共同访问的变量。在Python中,可以使用threading模块中的L
  • 慕岩炮轰抖音,百合网今何在?

    来源:价值研究所 作者:Hernanderz“难道就因为自己的一个产品牛逼了,从客服到总裁,都不愿意正视自己产品和运营上的问题,选择逃避了吗?”这一番话,出自百合网联合创
  • 自律,给不了Keep自由!

    来源 | 互联网品牌官作者 | 李大为编排 | 又耳 审核 | 谷晓辉自律能不能给用户自由暂时不好说,但大概率不能给Keep自由。近日,全球最大的在线健身平台Keep正式登陆港交所,努力
  • 电博会与软博会实现"线下+云端"的双线融合

    在本次“电博会”与“软博会”双展会利好条件的加持下,既可以发挥展会拉动人流、信息流、资金流实现快速交互流动的作用,继而推动区域经济良性发展;又可以聚
Top