安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

掌握分布式系统流控的常用解决方案

6月6日 喵小咪投稿
  场景及问题
  随着云计算的不断快速演进,业务在成本、性能、安全和稳定性高要求下,全栈上云就是个不可逆转的大趋势。对公有云厂商而言,资源超卖是缩减成本的通用方案,那么支持多租户资源共享就是一个关键能力,要保障业务透明而又弹性的资源伸缩是个挑战,这里就有个QoS服务模块做资源管控。实现一个QoS,Quotaasaservice是解决资源隔离和业务请求文档的一项关键技术,针对不用压力下的业务请求QPS、流量吞吐能自适应的做到弹性限制,总体目标就是在brust请求和流量到来时要保障当前业务的高可用同时还不能影响到其他租户。
  一个通用的高性能分布式架构设计就是基于事件驱动的react线程模型,它负责接受用户的请求并做处理回调。往往这个模块被设计成无状态的、可弹性伸缩的组件,这里就面临几个问题:如何甄别一个业务的多客户端连接(保证单间的FD不被打满)如何管控一个节点的请求量(多客户端多业务的并发访问,保证CPU不被打满)如何管控总的收发流量?(保障带宽不被打满)解决方案
  从上面的三个问题来看,CPU不被打满比较好解决,即在系统启动的时候可以根据机器的资源信息配置合理的并发数就可以控制利用率了。至于请求压力和吞吐就必须要相应的算法保障了。下面就总结下常用的流控算法:
  1。固定窗口
  原理:在固定时间间隔内维护一个计数器,有请求到来时增加计数器值。当计数器值超过设置的最大值,拒绝请求。
  缺点:瞬时流量可能会很高;在两个窗口临界处,流量有可能达到2n。
  2。滑动窗口
  原理:为了防止瞬时流量发生,可以把固定窗口划分成多个小窗口,每次向后移动一小格。比如设置一分钟内请求数为100,划分6个小格,每个小格维护一个计数器。每次有请求到来时,只要6个小格子中请求总数不超过阈值即可。
  原理:
  类似固定窗口算法,不过记录前一个窗口的请求数。
  比如设置固定窗口为1s,〔00:00:00,00:01:00)内有9个请求,〔00:00:00,00:02:00)内有5个请求。在00:01:15时有一个请求到达,该请求在当前窗口的25处,当前时间点窗口大小:9x(125)511。7510,请求需要拒绝。
  缺点:算法假设前一个时间窗口的请求都是均匀的,如果请求不均匀,会导致算法不准确。
  3。SlidingWindowLog
  原理:维护一个按请求时间排序的队列,队列的大小为每个时间窗口内限制的请求数量。当有请求到来时,从队列尾部去掉不在当前时间窗口内的集合,然后计算队列长度,如果长度超过限定值,则拒绝请求,否则接收请求,并将请求加入队列中。
  缺点:需要维护一个队列,占用内存。
  4。漏桶算法
  原理:
  类似于漏桶,漏桶有一定容量,漏桶上方接收水滴,下方以恒定速率流出水滴。当漏桶中的水滴量超过漏桶容量时,水滴就无法再加入漏桶。
  使用漏桶算法做限流:定义桶的大小定义水滴流出的速率
  应用:https:github。comubergoratelimitnginx限流
  漏桶算法存在目的主要是用来平滑突发的流量,提供一种机制来确保网络中的突发流量被整合成平滑稳定的流量。
  不过由于漏桶对流量的控制过于严格,在有些场景下不能充分使用系统资源,因为漏桶的漏出速率是固定的,即使在某一时刻下游能够处理更大的流量,漏桶也不允许突发流量通过。
  5。令牌桶算法
  令牌桶算法的原理是系统会以一个恒定的速度往桶里放入令牌,而如果请求需要被处理,则需要先从桶里获取一个令牌,当桶里没有令牌可取时,等待Atokenisaddedtothebucketevery1rseconds。Thebucketcanholdatthemostbtokens。Ifatokenarriveswhenthebucketisfull,itisdiscarded。Whenapacket(networklayerPDU)ofnbytesarrives,ifatleastntokensareinthebucket,ntokensareremovedfromthebucket,andthepacketissenttothenetwork。iffewerthanntokensareavailable,notokensareremovedfromthebucket,andthepacketisconsideredtobenonconformant。
  实现方法:后台线程每隔1n秒更新bucket中token数量,直至达到bucket容量主线程检查限速时,查看bucket中token数量,如果小于需要的token数量,则当前请求被限制。否则,token数量减去请求的token数量。
  应用:rocksdbratelimiterGuava中的RateLimiter,RateLimiter实现原理如下:startTick记录RateLimiter初始化时的时间戳(单位ns),后续nowMicros(当前时间点)都是取(System。nanoTime()startTick)1000;nextFreeTicketMicros记录下次可获取令牌的开始时间点,在RateLimiter初始化和获取到令牌之后会进行更新;如果nowMicros大于等于nextFreeTicketMicros,表示可以获取令牌;如果nowMicros大于nextFreeTicketMicros,会计算二者差值并除以放一个令牌的周期,然后赋值给storedPermits字段(表示当前桶中令牌数,注意不能超过桶容量);然后storedPermits减去当前需要令牌数,如果此时要获取令牌数大于storedPermits,那么会将nextFreeTicketMicros再往后推进(要获取令牌storedPermits)放一个令牌的周期的时间。
  6。基于Redis限流
  基于Redis做限流操作,使用lua脚本保证命令原子性,比如qps设置为10,如果key不存在,就设置key过期时间1s,value1;如果value小于10,则自增value达到10触发流控。示例lua代码如下:localkeyrate。limit:。。KEYS〔1〕locallimittonumber(ARGV〔1〕)localexpiretimeARGV〔2〕localisexistsredis。call(EXISTS,key)ifisexists1thenifredis。call(INCR,key)limitthenreturn0elsereturn1endelseredis。call(SET,key,1)redis。call(EXPIRE,key,expiretime)return1end
  参考:https:en。wikipedia。orgwikiLeakybuckethttps:hechao。li20180625RateLimiterPart1https:zhuanlan。zhihu。comp343754066https:konghq。combloghowtodesignascalableratelimitingalgorithm
投诉 评论 转载

你手中的废纸,可是国家环保大计最近废纸价格总是跌跌宕宕,自从2020年《固废新规》发布后,国内废纸价可谓是起起伏伏。其实,这两年来的废纸价格从不断走高,到突然回落,除了环境因素以外,更多的是市场自适应……掌握分布式系统流控的常用解决方案场景及问题随着云计算的不断快速演进,业务在成本、性能、安全和稳定性高要求下,全栈上云就是个不可逆转的大趋势。对公有云厂商而言,资源超卖是缩减成本的通用方案,那么支持多租户……双十一擦亮双眼!汇总上万评价数据告诉你OPPOWatch3系随着双十一的临近,最近各大平台也开始了对双十一活动的介绍,相信大家也已经做了不少功课。最近不少数码产品都迎来了相对较低的价格,比如说手机、平板、耳机、智能手表等等,参数也都挺不……被翁美玲30年前的春夏穿搭惊艳了!时髦高级,到现在都不过时提到翁美玲,她塑造过的角色相信大家都能略知一二,比如《十三妹》中的双格格、《夹心人》中的董佩玟、《决战玄武门》中的秦惜惜但是最令人影响深刻的,还要属1983年版《射雕英雄传》里……传奇世界法师的顶尖武器嗨,大家好!我是阿曼,今天跟大家一起讨论下法师的顶尖武器,目前魔法师的的顶级武器为:霹雳法杖、血饮、龙牙利刃、紫月圣君、噬魂、骨玉。1,霹雳法杖攻击711,魔法36……豪气!沫子体验十三代cpu表示确实好用,直言给员工每人发一个最近沫子在直播的时候体验了一下十三代cpu的使用效果,结果发现确实挺好用的,打游戏一点都不卡,就算是加上直播也很流畅,这也让沫子十分满意,表示自己之前玩的时候都有点卡,感觉打游……女人到了中年,穿衣要讲究!穿毛衣配这5种下装,优雅又高级女人到了中年,穿衣要讲究,一旦开始随性,那就展现不出自己所具有的气质感。就拿冬季衣橱必备的毛衣来说,想要穿好这种基础款单品,我们就必须在搭配方面下足功夫!接下来我会从毛衣……陨落的国足天才,20岁比肩巴斯滕,23岁被雷哈格尔看中,25让无数球迷爱恨交织的中国足球,其实从来就不缺乏天才的身影。只可惜,天才们的成长,往往都达不到预期罢了。还没有开创属于自己的时代,便已经迎来了陨落的命运。比如李华筠的事迹,就极具……哈达迪狂轰2111!日本惨败伊朗,渡边雄太砍1710,张本天北京时间7月17日晚18:30,男篮亚洲杯小组赛C组迎来一场焦点对决,排名暂列小组第一的日本男篮将与第二的伊朗争夺小组头名出线资格,胜者将直接获得晋级八强的名额,而败者将以小组……女儿国国王朱琳53岁二婚,老公宠她,如今70岁没孩子也幸福在如今这个充满浮躁的时代,能够遇到一段真爱是一件非常难的事情。对于朱琳来说,朱琳的爱情就是如此,有些曲折。不过好在朱琳最终还是找到了自己的心上人,两个人过起了神仙般的日子,老公……雅尼斯辞职,闵鹿蕾出山?首钢打包4人,秦晓雯看走眼忍痛割爱雅尼斯辞职,闵鹿蕾出山?首钢打包4人,秦晓雯看走眼忍痛割爱观看两场季后赛,一支拥有四名外援的首钢球队对阵一名外援的吉林男篮,且多赛季打季后赛的首钢男篮经验丰富,没想到搬起……双核451010!布克又轻松打卡,麦基196大杀四方,湖人好在今天结束的一场比赛中,太阳以131115战胜鹈鹕继续保持联盟第一。本场比赛克里斯保罗继续缺席,可能要到季后赛才复出。但尽管如此布克带队还是让人放心,归根结底现在的太阳今非昔比……
杜兰特科比教会我不要做软弱的爱哭鬼甘肃省文物考古研究所石墨烯纳米复合材料可延续壁画的文化遗产几口就能让娃变笨!这些藏在食物中的隐形酒,家家都有!GQ红毯易梦玲真的赢了吗?俄罗斯飞船发生事故半个月,救援方案仍未拿出来,需要美国出手?十大翻车企业这一年,我上过最傲慢的课是张小泉那课著名记者撰文批评穆里尼奥从不自我检讨,全是借口和破坏心宽无烦恼,心静人则安!(生活感悟)最新油价2022年9月28日国内国六929598号汽油,0号随机冲突土豆英雄小丑四大神辅助之一顶级阵容推荐LOLS12小组赛Wayward纳尔对线连续阵亡团战无力,T这台85寸大电视,朋友直呼我买对了有些男士不喜欢穿牛仔裤,有哪些值得推荐的休闲裤?GK纪录片让Fly意外火了,从留守儿童到KPL明星,传奇逆袭次生盐渍化多发地区有哪些起诉离婚要提交哪些证据母乳妈妈如何提高奶水质量?毛衣豆腐裤今秋王炸组合,洋气极了,不穿一次都不知道有多美资讯尚未明朗AudiTTRS定装照先止渴吃一堑长一智,拼多多,你伤害了我幼小的心为什么巴比伦叫罪恶之都?从巴比伦历史来看巴比伦为什么是泰戈尔经典语录与好句摘抄李嘉诚给年轻人的励志忠告婴儿泡沫爬行垫有毒吗

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利