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

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

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

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

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

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

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

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

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

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

利用负载均衡

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

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

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

初级方案

会话粘连(Sticky sessions)

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

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

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

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

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

标签:
  • 热门焦点
Top
Baidu
map