一:限流的作用

    现在的应用访问量越来越高,瞬时流量不可预估,为了保证服务对外的稳定性,以免流量超过服务的负载能力,限流成为每个应用的保障.

二:限流可以应对

  • 热点应用的突发请求;
  • 调用方bug导致的突发请求;
  • 恶意攻击请求。

三:注意事项

    限流需要提前评估好,如果用的不当,可能会导致有些该限制的流量没有被限流,服务被这些过载流量打垮。有些不该限制流量的被限制,被用户抱怨。例如,整体服务的QPS是400/s,如果限流阀值是300,就会导致每秒有100个请求本该接受服务,却被限制访问,如果阀值是500,就会导致每秒有100个请求负载,时间越长累积越多,这些过载的流量就有可能导致整个服务的瘫痪。

四:为什么要实现分布式限流

    如果是单点应用,实现限流后,那么应用所依赖的各种服务也都得到了保护.,

    如果是分布式系统,单节点的限流仅能保护自身节点,可能无法保护应用依赖的各种服务,并且在进行节点扩容、缩容时也无法准确控制整个服务的请求限制,

    如果实现了分布式限流,那么就可以方便地控制整个服务集群的请求限制,且由于整个集群的请求数量得到了限制,因此服务依赖的各种资源也得到了限流的保护。

五:限流的算法

  • 固定窗口计数器;
  • 滑动窗口计数器;
  • 漏桶;
  • 令牌桶。
  1. 固定窗口计数器算法

分布式服务限流

相关文章: