使用Zuul在API网关进行限流
1. 垂直扩展与水平扩展
在系统扩展方面,存在垂直扩展和水平扩展两种方式:
- 垂直扩展 :为同一个微服务分配更多的资源,如增加内存和CPU核心数。但微服务主机上可用的资源限制了垂直扩展的程度。
- 水平扩展 :在基础设施中添加更多的微服务实例。理论上,水平扩展是无限的。
不过,扩展并非免费的,无论选择哪种扩展模式,都需要付出成本。而且系统的扩展存在物理限制,有时受限于可用的物理硬件数量,有时也受软件水平扩展能力的限制,特别是对于有状态的软件系统,如依赖关系型数据库的系统,由于扩展关系型数据库的复杂性,软件扩展到一定程度会变得越来越困难。
2. 限流的必要性
由于上述扩展的复杂性,有必要限制系统处理的请求数量。合理设置这些限制,能确保服务的所有消费者都能公平地获得系统可处理的总流量配额。同时,限制请求数量还能保护系统免受攻击者通过发送大量请求进行DoS和DDoS攻击,从而防止其他用户无法访问系统。
3. 限流类型
3.1 基于配额的应用限流
为特定的客户端应用分配请求配额,可应用于微服务的货币化场景,也能防止微服务被过度消费。例如,订单处理微服务可能会被多个应用(如移动设备、Web应用和桌面应用)访问。假设该服务每秒能处理1000个请求,如果所有移动应用集体消耗了全部1000个请求,那么Web应用和桌面应用将无法获得请求。
解决方法是为每个应用分配一个配额,如每秒200个请求,并在API网关强制执行该配额。这样,单个应用或设备就无法使系统中的
超级会员免费看
订阅专栏 解锁全文
475

被折叠的 条评论
为什么被折叠?



