AI News HubLIVE
站内改写1 分钟阅读

基于Pingora、Envoy和Spanner的无服务器服务器路由

Modal团队深入介绍了其新型超低延迟Serverless Servers的设计原理和实现细节,该服务针对LLM推理等对延迟敏感的应用进行了优化。文章解释了为何选择构建自己的代理层fprs,以及如何通过Pingora库、Envoy边缘代理和Spanner全局数据库实现无网络调用热路径、动态域名关联和自动缩放。

Modal近日发布了其新型Serverless Servers服务,旨在为超低延迟应用(如大型语言模型推理)提供支持。该服务允许用户在Modal上运行HTTP、WebSocket和gRPC服务器,并实现区域化自动缩放。

与Modal已有的Web Functions不同,Servers采用了更轻量级的架构。Web Functions内置了排队和重试机制,类似于TCP协议;而Servers则更接近UDP,牺牲了这些可靠性特性以换取更低的延迟。如果所有副本都不可用,客户端将直接收到503错误,而不是等待队列。这种设计对于LLM推理等对延迟极其敏感的应用场景尤为合适。

Modal团队在构建Servers时遵循了两条核心原则:最大化资源共享同时最小化干扰,以及确保请求路径上没有网络调用。这意味着路由层不能访问元数据存储或键值存储,配置信息必须本地缓存。团队通过精细的微观调整,将代理资源的使用与宏观目标对齐,避免了因资源池化导致的干扰问题。

具体实现上,请求首先到达AWS NLB(四层负载均衡器),然后由Envoy代理终止TLS并统一转换为HTTP/2流。接下来,Modal自研的fprs代理负责将域名映射到具体的Server应用,并在副本之间进行负载均衡。fprs基于CloudFlare的Pingora库构建,利用Rust的Tokio运行时实现高效的流复用和资源隔离。团队还解决了因域名频繁更换导致的隐藏DNS解析问题,通过仔细缓存来保证尾延迟。

配置信息存储在Google Spanner中,但fprs维护了一个内存缓存,并通过Spanner的变更流保持同步,从而避免了热路径上的数据库查询。该层还负责向Modal自动缩放器发送指标(每个容器的正在处理请求数),以及实现代理层身份验证,防止大量无效请求触发昂贵的GPU实例启动。

Modal表示,虽然系统针对LLM推理进行了优化,但设计上并不局限于这一场景。未来他们计划在路由层添加可选的排队和重试功能,让用户能够根据需求在低延迟和可靠性之间取得平衡。