流量控制策略(汇总)

                      汇总常见的流量控制策略

 

一:策略名称 : 黑白名单策略

        解释:在mcc中有一份黑名单和一份白名单,如果黑白名单限流开关打开,那么请求到达后,先判断是否在黑名单中,如果是,那么返回流控结果给业务方;

                   如果否,继续判断此用户是否在白名单中,如果是,那么返回不流控结果给业务方。否则继续进行后续的流控逻辑。

        实现:mcc中存储黑白名单,本地通过callback方式缓存

 

二:策略名称:用户百分比

       解释:基于用户身份标识+url,对用户的请求做流控。在mcc中存储要放过用户的百分比数值percentValue。请求到达后,取出用户的uuid,

                  并对uuid做哈希,再模100,得到userHashValue,和percentValue对比:

                     1.如果userHashValue>=percentValue,那么,判断此url是否是白名单接口:1.1 是——放过;1.2 否——直接返回流控结果;

 

                     2.如果userHashValue

       实现:mcc中存储百分比值,本地通过callback方式缓存

 

三:策略名称:限时等待策略

       解释:本策略提供一种近似排队的策略,当用户第一次访问本策略的url时,拒绝本次请求,并以此作为时间轴原点,

                  在wait_time时间范围内不允许访问,直到访问时间落在serve_time范围内才允许访问。例:wait_time=5s,

                   serve_time=10s,则在0s~5s这段时间内不得访问,在5s~15s期间允许访问。

       实现:需要借助缓存(Tair/Squirrel)存储key/value,每次请求需要读缓存

 

四:策略名称:限制频次

        解释本策略限制窗口时间内的访问频率,在window_time时间窗口内限制最多访问次数为frequency_times,

                   超过frequency_times次数的访问将被拒绝。例子:window_time=5s,frequency_times=20,则在5s时间窗内,

                  前20次访问放行,第21次以后的访问拒绝。

        实现:需要借助缓存(Tair/Squirrel)存储key/value,每次请求需要写缓存

 

五:策略名称:url集群qps限制

        解释限制某一url的总体qps。不分用户,只根据url做限制

       实现:需要借助缓存(Tair/Squirrel)存储key/value,每n次请求需要写缓存(n可配)

         

六:策略名称:单机限流策略

       解释本策略目前提供了2种本地限制方法:

           1.限制单机接口粒度的访问qps:此策略限制了单台某接口每秒最高的访问次数,超过策略设置的

              最高的QPS的访问则进行限流,对白名单以外的访问进行限制。 例:限制单机/index接口的qps为100

          2.限制单机的访问qps:此策略限制了单台机器每秒最高的访问次数,超过策略设置的最高的

            QPS的访问则进行限流,对白名单以外的访问进行限制

           例:某服务最高允许qps为10000/s,40台机器,则此策略的限流阈值应为250/s,此数据推算是建立在流量均衡的基础

                  上估算出来的,具体应用时应预留出合理的缓冲区间。

 

       注意:QPS策略存在的意义在于,当整个业务的流量过大时,QPS策略能够保证核心业务的完成。

 

       实现:使用Guava中的RateLimiter

 

 

 

 

后面会详细对六种策略的实现进一步分析:敬请关注

 

 

作者:乐杨俊

 

你可能感兴趣的:(工具日常相关)