第四章开始将会举一些具体的实例来讲解,本章介绍了限流器的设计。

限流器的优点:

  • 防止Dos攻击
  • 降低成本
  • 减少服务器负载

根据第三章提出的框架来推进。

第一步:沟通,明确需求

  • 需要客户端还是服务端限流?
  • 是否是分布式系统?
  • 单独的限流服务还是实现在应用代码中?
  • 基于IP还是用户ID进行限流?
  • 系统规模是多大?
  • 若被限流,是否需要告知用户?

第二步:提出high-level设计

根据需求确定将功能实现在客户端or服务端,api gateway中还是添加一个middleware。 另外可明确使用的算法,常见算法有:

  • Token bucket
  • Leaking bucket
  • Fixed window counter
  • Sliding window log
  • Sliding window counter

了解上述算法各自的优缺点

第三步:design deep dive

  • 限流规则如何创建,如何存储
  • 被限流后如何告知用户(可以使用一些headers)
  • 分布式环境下存在的问题(并发更新,数据同步等)
  • 性能优化
  • 监控,观察分析设置的规则和算法是否有效

第四步:总结和扩展

  • OSI模型应用层以外也可做限流
  • 客户端应当怎么做来防止限流