一个基于Redis的限流系统的设计-光环大数据数据库培训

一个基于Redis的限流系统的设计-光环大数据数据库培训

ID:36612429

大小:296.26 KB

页数:5页

时间:2019-05-13

一个基于Redis的限流系统的设计-光环大数据数据库培训_第1页
一个基于Redis的限流系统的设计-光环大数据数据库培训_第2页
一个基于Redis的限流系统的设计-光环大数据数据库培训_第3页
一个基于Redis的限流系统的设计-光环大数据数据库培训_第4页
一个基于Redis的限流系统的设计-光环大数据数据库培训_第5页
资源描述:

《一个基于Redis的限流系统的设计-光环大数据数据库培训》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、光环大数据--大数据培训&人工智能培训http://hadoop.aura.cn一个基于Redis的限流系统的设计_光环大数据数据库培训限流系统是对资源访问的控制组件,控制主要的两个功能:限流策略和熔断策略,对于熔断策略,不同的系统有不同的熔断策略诉求,有的系统希望直接拒绝、有的系统希望排队等待、有的系统希望服务降级、有的系统会定制自...管理算法存储HadoopRedis高可用1、概念Incomputernetworks,ratelimitingisusedtocontroltherateoftrafficsentorreceivedbyanetworkinterfacecon

2、trollerandisusedtopreventDoSattacks用我的理解翻译一下:限流是对系统的出入流量进行控制,防止大流量出入,导致资源不足,系统不稳定。限流系统是对资源访问的控制组件,控制主要的两个功能:限流策略和熔断策略,对于熔断策略,不同的系统有不同的熔断策略诉求,有的系统希望直接拒绝、有的系统希望排队等待、有的系统希望服务降级、有的系统会定制自己的熔断策略,很难一一列举,所以本文只针对限流策略这个功能做详细的设计。针对限流策略这个功能,限流系统中有两个基础概念:资源和策略。资源:或者叫稀缺资源,被流量控制的对象;比如写接口、外部商户接口、大流量下的读接口策略:限

3、流策略由限流算法和可调节的参数两部分组成熔断策略:超出速率阈值的请求的处理策略,是我自己理解的一个叫法,不是业界主流的说法。2、限流算法限制瞬时并发数限制时间窗较大请求数令牌桶2.1、限制瞬时并发数定义:瞬时并发数,系统同时处理的请求/事务数量优点:这个算法能够实现控制并发数的效果缺点:使用场景比较单一,一般用来对入流量进行控制Java伪代码实现:AtomicIntegeratomic=newAtomicInteger(1)try{if(atomic.incrementAndGet()>限流数){//熔断逻辑}else{//处理逻光环大数据http://hadoop.aura.c

4、n光环大数据--大数据培训&人工智能培训http://hadoop.aura.cn辑}}finally{atomic.decrementAndGet();}2.2、限制时间窗较大请求数定义:时间窗较大请求数,指定的时间范围内允许的较大请求数优点:这个算法能够满足绝大多数的流控需求,通过时间窗较大请求数可以直接换算出较大的QPS(QPS=请求数/时间窗)缺点:这种方式可能会出现流量不平滑的情况,时间窗内一小段流量占比特别大lua代码实现:---资源标识localkey=KEYS[1]---时间窗较大并发数localmax_window_concurrency=tonumber(AR

5、GV[1])---时间窗localwindow=tonumber(ARGV[2])---时间窗内当前并发数localcurr_window_concurrency=tonumber(Redis.call('get',key)or0)ifcurrent+1>limitthenreturnfalseelseredis.call("INCRBY",key,1)ifwindow>-1thenredis.call("expire",key,window)endreturntrueend2.3、令牌桶算法描述假如用户配置的平均发送速率为r,则每隔1/r秒一个令牌被加入到桶中假设桶中最多可以存

6、放b个令牌。如果令牌到达时令牌桶已经满了,那么这个令牌会被丢弃当流量以速率v进入,从桶中以速率v取令牌,拿到令牌的流量通过,拿不到令牌流量不通过,执行熔断逻辑属性长期来看,符合流量的速率是受到令牌添加速率的影响,被稳定为:r因为令牌桶有一定的存储量,可以抵挡一定的流量突发情况M是以字节/秒为单位的较大可能传输速率:M>rTmax=b/(M-r)承受较大传输速率的时间Bmax=Tmax*M承受较大传输速率的时间内传输的流量优点:流量比较平滑,并且可以抵挡一定的流量突发情况因为我们限流系统的实现就是基于令牌桶这个算法,具体的代码实现参考下文。3、工程实现3.1、技术选型mySQL:存

7、储限流策略的参数等元数据redis+lua:令牌桶算法实现说明:因为我们把redis定位为:缓存、计算媒介,所以元数据都是存在db中3.2、架构图光环大数据http://hadoop.aura.cn光环大数据--大数据培训&人工智能培训http://hadoop.aura.cn3.3、数据结构限流系统的实现是基于redis的,本可以和应用无关,但是为了做限流元数据配置的统一管理,按应用维度管理和使用,在数据结构中加入了apps这个字段,出现问题,排查起来也比较方便。3.4、代码实

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。