Client-side load balancing at a million requests per second
12 days ago
- #microservices
- #load-balancing
- #performance-optimization
- 客户端负载均衡(CSLB)的构建旨在替代共享边缘入口负载均衡器,用于内部扇出流量,每秒处理超过一百万个请求。
- 新增的关键功能包括用于逐步扩缩的N环淡入、基于占用率的有限负载以实现均匀分布,以及具有延迟健康因素的可用区感知路由。
- 从Skipper迁移到CSLB降低了延迟峰值,提高了稳定性,并通过缩减Skipper舰队和通过更好的负载管理减少Pod数量来降低成本。
- 实施过程包括使用xxHash64实现与Skipper的哈希一致性、通过基于watch的informer进行Kubernetes发现,以及为更快速、更安全的部署构建强化的流水线。
- 强化措施包括重试策略、FIFO缓冲区和增强的日志记录,这些措施发现并缓解了节点级网络冻结问题,且未引发事故。
- 经验教训:拥有路由决策权可提供有价值的遥测数据但增加了复杂性;缓存局部性与流量隔离存在冲突;快速部署流水线能降低风险。
- 未来的工作包括恢复可用区感知路由试验,以评估成本节约与缓存碎片化之间的权衡,特别是在流量高峰事件期间。