zoukankan      html  css  js  c++  java
  • 分布式限流

    所谓的分布式限流,其实道理很简单,一句话就可以解释清楚。分布式区别于单机限流的场景,它把整个分布式环境中所有服务器当做一个整体来考量。比如说针对IP的限流,我们限制了1个IP每秒最多10个访问,不管来自这个IP的请求落在了哪台机器上,只要是访问了集群中的服务节点,那么都会受到限流规则的制约。

    从上面的例子不难看出,我们必须将限流信息保存在一个“中心化”的组件上,这样它就可以获取到集群中所有机器的访问状态,目前有两个比较主流的限流方案:

    1.网关层限流 将限流规则应用在所有流量的入口处。

    2.中间件限流 将限流信息存储在分布式环境中某个中间件里(比如Redis缓存),每个组件都可以从这里获取到当前时刻的流量统计,从而决定是拒绝服务还是放行流量。

     

     

    谷歌ratelimiter限流,适用于单机。

     

     

    基于nginx的ip限流。适用于分布式

    nginx.config配置     ================2-8

     

    redis预加载lua脚本实现限流。

    用面向切面的思路,用注解实现在业务层面限流,相比网关层限流更加灵活。

  • 相关阅读:
    允许debian wheezy支持IOS7+的iphone.
    openSUSE 国内镜像摘要
    策略模式总结
    顺序串
    WindowState注意事项
    NLP | 自然语言处理
    Using Autorelease Pool Blocks
    NSAutoreleasePool & thread
    oc语言特性
    oc语言基础整理
  • 原文地址:https://www.cnblogs.com/xiejunlampard/p/15638851.html
Copyright © 2011-2022 走看看