范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

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

  场景及问题
  随着云计算的不断快速演进,业务在成本、性能、安全和稳定性高要求下,全栈上云就是个不可逆转的大趋势。对公有云厂商而言,资源超卖是缩减成本的通用方案,那么支持多租户资源共享就是一个关键能力,要保障业务透明而又弹性的资源伸缩是个挑战,这里就有个QoS服务模块做资源管控。实现一个QoS,Quota as a service是解决资源隔离和业务请求文档的一项关键技术,针对不用压力下的业务请求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%处, 当前时间点窗口大小: 9 x (1 - 25%) + 5 = 11.75 > 10, 请求需要拒绝。
  缺点:算法假设前一个时间窗口的请求都是均匀的,如果请求不均匀,会导致算法不准确。
  3. Sliding Window Log
  原理:维护一个按请求时间排序的队列,队列的大小为每个时间窗口内限制的请求数量。当有请求到来时,从队列尾部去掉不在当前时间窗口内的集合,然后计算队列长度,如果长度超过限定值,则拒绝请求,否则接收请求,并将请求加入队列中。
  缺点:需要维护一个队列, 占用内存。
  4. 漏桶算法
  原理:
  类似于漏桶, 漏桶有一定容量,漏桶上方接收水滴,下方以恒定速率流出水滴。当漏桶中的水滴量超过漏桶容量时,水滴就无法再加入漏桶。
  使用漏桶算法做限流: 定义桶的大小 定义水滴流出的速率
  应用: https://github.com/uber-go/ratelimit/ nginx 限流
  漏桶算法存在目的主要是用来平滑突发的流量,提供一种机制来确保网络中的突发流量被整合成平滑稳定的流量。
  不过由于漏桶对流量的控制过于严格,在有些场景下不能充分使用系统资源,因为漏桶的漏出速率是固定的,即使在某一时刻下游能够处理更大的流量,漏桶也不允许突发流量通过。
  5. 令牌桶算法
  令牌桶算法的原理是系统会以一个恒定的速度往桶里放入令牌,而如果请求需要被处理,则需要先从桶里获取一个令牌,当桶里没有令牌可取时,等待 A token is added to the bucket every 1/r seconds. The bucket can hold at the most b tokens. If a token arrives when the bucket is full, it is discarded. When a packet (network layer PDU) of n bytes arrives, if at least n tokens are in the bucket, n tokens are removed from the bucket, and the packet is sent to the network.if fewer than n tokens are available, no tokens are removed from the bucket, and the packet is considered to be non-conformant.
  实现方法: 后台线程每隔1/n秒更新bucket中token数量,直至达到 bucket 容量 主线程检查限速时,查看bucket中token数量,如果小于需要的token数量,则当前请求被限制。否则,token数量减去请求的token数量。
  应用: rocksdb rate limiter Guava 中的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,value=1;如果value小于10,则自增value;value达到10触发流控。示例lua代码如下:local key = "rate.limit:" .. KEYS[1] local limit = tonumber(ARGV[1]) local expire_time = ARGV[2]  local is_exists = redis.call("EXISTS", key) if is_exists == 1 then    if redis.call("INCR", key) > limit then        return 0    else        return 1    end else    redis.call("SET", key, 1)    redis.call("EXPIRE", key, expire_time)    return 1 end
  参考:https://en.wikipedia.org/wiki/Leaky_bucket https://hechao.li/2018/06/25/Rate-Limiter-Part1/ https://zhuanlan.zhihu.com/p/343754066 https://konghq.com/blog/how-to-design-a-scalable-rate-limiting-algorithm/

陆游子女及示儿诗考陆游为南宋中兴四大诗人之一,也被称为中兴之冠。国家的灾难和民族的屈辱激发了陆游强烈的爱国之情,使他成为了中国诗史上继屈原杜甫之后最有影响的爱国诗人。其示儿(死去元知万事空)是他的绝于正力挺王一栩发剧本,李一桐辞演武庚纪为何能获网友支持?于正发博力挺王一栩连夜发剧本邀约,李一桐辞演武庚纪为何能获得几乎全网网友支持?近日,爱奇艺官宣武庚纪引起舆论关注,原因是该次官宣只官宣了男主是任嘉伦出演,其余的角色演员没有官宣。部世界杯上的中国元素世界杯掀起消费热潮,我国体育经济发展再迎新机在本届世界杯中,吸引大家关注的除了赛场上球员们的精彩较量,还有随处可见的中国元素。旗帜喇叭足球球衣等中国制造的世界杯周边产品在远销海外的同时也促进了国内制造业等行业的发展。不仅如此环评就是看风水虽然没有分管环评工作,但工作中的所感所悟,值得珍藏。值此环境影响评价法颁布二十周年之际,整理几个我与环评的小故事与大家分享。初识环评有意思。十年前,一纸调令,让我从县里到现在的州生国网泸溪县供电公司加强线路特巡应对寒潮来袭红网时刻新闻12月1日讯(通讯员杨斌)大家在巡视中一定要仔细核对设备巡视表上的每一处细节,坚决不能放过任何一个死角!11月30日,国网泸溪县供电公司主动出击,组织开展党建保供电对辖深圳部署落实落细金融16条政策前10月开发贷增长24。76南方财经全媒体见习记者曹媛深圳报道深圳正部署落实落细金融16条政策。记者了解到,11月29日,深圳金融管理部门会同深圳市政府,组织辖内全国性商业银行房地产企业信托公司担保公司召开房湘西苗疆考察(三)黄瓜寨排达扣作者施群霞孙文辉来源蛮野寻根4月11日黄瓜寨排达扣一早,考察组一行来到了雅酉镇政府。在州文广新局与州非物质文化遗产保护中心的安排下。文化站站长向辉大学生村官黄瓜寨村长龙兴全正在等候一路逐梦,勇毅向前我们都在努力奔跑,我们都是追梦人。在旧中国时期,人民群众处在水深火热之中,国家的发展停滞不前在今朝,中国共产党领导并带领着全国人民奔小康,走在幸福的康庄大道。原本在世界之巅的祖国因深圳本地股板块11月30日跌0。78,深物业A领跌,主力资金净流出11。19亿元11月30日深圳本地股板块较上一交易日下跌0。78,深物业A领跌。当日上证指数报收于3151。34,上涨0。05。深证成指报收于11108。5,上涨0。18。深圳本地股板块个股涨跌贪玩游戏因涉嫌侵犯版权多次被告潜在赔偿金额超亿元CNMO新闻我系渣渣辉,系兄弟就来啃我,相信这句广告词大部分人都很熟悉。虽然贪玩蓝月并没有成为一款经典游戏,但张家辉的这句话却成为经久不衰的互联网热梗。近日,这款游戏的发行公司贪玩影视应用无人机的身影无人驾驶的飞机简称无人机,主要是利用无线电遥控设备和自备的程序控制装置操纵的不载人飞机。无人机是军转民是的一大产物,更多的对无人机的印象在航模和消费级的无人机。大到专业的无人机应用
和志强他曾是云南省委副书记,一生廉洁,两袖清风,享年73岁新中国建立初期,我国涌现出了一批又一批优秀干部,这些干部不管是在中央还是地方,都轰轰烈烈干出了一番事业,为新中国的建设贡献自己的力量。而和志强就是其中一位优秀干部,他是土生土长的云戴璐走红正应了宋丹丹的台词,当代婚姻保卫战每人都应成为特种兵戴璐走红正应了宋丹丹的台词,当代婚姻保卫战每人都应成为特种兵文姜诗华明星如果不靠作品走红,大抵是因为绯闻,官员如果不靠政绩走红,大抵也是因为绯闻。从这个角度看,长得像明星而实际上是换壳论又现江湖,这次无辜受伤的是雷克萨斯RZ来源国际在线这两天有个事情非常火。雷克萨斯宣布旗下纯电车型RZ开启预售,新车包括三个级别,价格区间为37。5万元46。5万元。雷克萨斯RZ关注度很高的一款纯电新车,结果引来了争议。难以置信!戴副局和韦副市长的相识,竟由戴家族从中搭桥引线!最近一段时间,桃色新闻接连不断的报道出来,每一个新闻背后的主人公,都不是我等普通老百姓,他们一个一个的行为举止,着实让民众感到震惊?在人前,一个一个威风凛凛指点江山正义盎然,堪称楷河南老字号如何走出新路子?实施意见来了!大河网讯老字号包含着百姓对烟火气的挚爱,是传承历史文化与探寻历史印记的重要载体。近日,省政府办公厅印发关于促进老字号创新发展的实施意见(以下简称实施意见),提出力争到十四五末,全省首破40万亿元!这个数据连续6年世界第一!2022年我国进出口总值首次突破40万亿元人民币关口,规模再创历史新高!2022年我国货物贸易进出口总值42。07万亿元人民币,比2021年增长7。7。出口23。97万亿元,增长1明确效率公平!数据收益分配制度化,让数据产权主体各得其所四大关键词看数据要素市场发展趋势从构建数据基础制度到地方数据立法,从公共数据分类分级开放指南到数据交易流通规则制定,从数据跨境监管到安全评估审查,从数据安全管理认证到国家标准出台2北疆5,南方人疑惑新疆的冬还有两副面孔?迷恋一个季节,不舍一段时光。你喜欢冬天吗?四季轮转,一季有一季的美。冬季的美含蓄别致多情。而在新疆,有两个不一样的冬,两种不一样的美。南疆温暖神秘天山以南,强冷空气被天山山脉阻挡在南财保险测评(第60期)专属商业养老保险年结算利率披露稳健型进取型账户收益接近南方财经全媒体记者孙诗卉实习生范潇行上海报道,近日,个人养老金专属商业养老保险产品陆续披露了其在2022年的结算利率。在已披露的13款产品数据中,2022年稳健型账户结算利率最高为美欧经济衰退是真是假?焦点的两面性CFIRI分析师讨论与争论美欧经济衰退是真是假?中国外汇投资研究院金融分析师宋嘉康蔼馨李钢吴晓鹤当前国际金融局势复杂多变,美国在过去的一年激进加息,对抗通货膨胀。当前美步长制药获ESG大奖宣肺败毒颗粒等多款产品入选中药干预指引中国网财经1月11日讯近日,知名药企步长制药在2022上市公司投资者关系水晶球评选中获颁最具社会责任(ESG)上市公司荣誉,步长制药一直以来秉持的共铸中国心的社会责任和企业愿景再度