第四章开始将会举一些具体的实例来讲解,本章介绍了限流器的设计。
限流器的优点:
- 防止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模型应用层以外也可做限流
- 客户端应当怎么做来防止限流
- …