产品派
返回

Meta ZGateway承载十亿级请求并削减ZippyDB连接数

后端InfoQ 中文站2026/10/12 14:04:53
AI 导读

Meta为分布式键值存储系统ZippyDB部署了无状态代理层ZGateway,以应对超过100万个客户端主机直接访问数据库所带来的连接管理和可靠性压力。该网关目前每秒处理超过10亿次操作,承载ZippyDB约40%的流量,并据模型估算将持久连接总数压缩至原来的约1/19。

ZippyDB运行在Meta的全球分布式基础设施中,服务于产品元数据、计数器、配置等多类工作负载。过去,客户端需要直接连接承载目标分片的数据库主机,一个客户端可能同时访问分布在数十万台主机上的数万个分片,形成密集的多对多连接关系,极端情况下会引发文件描述符耗尽和内存不足。

ZGateway位于客户端与ZippyDB服务器之间。客户端与所在区域的网关主机保持粘性连接,数据库侧则只需维护来自受控网关集群的连接。它通过ServiceRouter进行区域级服务发现,让客户端优先接入附近网关;同时复用现有C++ ZippyDB客户端作为请求处理引擎,并提供纯代理和读透式缓存两种模式。预计每台主机的连接数可减少约97%至98%,整体持久连接降至原来的约1/19。

网关还将共享流量治理集中起来,可执行身份验证、授权和租户级准入控制,解析分片、使用本地缓存,并在转发请求前进行批处理或合并。由于它能同时观察多个客户端的请求,因此可以完成单个客户端库跨进程无法实现的合并操作。

连接池、服务网格、CDN和API网关同样采用代理思路,但职责与扩展性取舍不同。ZippyDB本身已负责托管分片、复制、故障检测和容量管理,ZGateway则在这些能力之前增加共享流量管理层。虽然请求多经过一跳网络,数据库节点却能免受大量连接管理开销影响,整体延迟反而可能改善。

此外,ZGateway为负载均衡、跨区域容错、缓存和过载保护提供统一控制。在CPU利用率超过90%的受控测试中,约1350个租户存储桶只有6个被分流,其余租户处理了99.9%的请求且没有遭到拒绝。流量可按服务、分片前缀、比例或区域逐步切换,并支持全球紧急关闭开关回滚。Meta计划最终让全部ZippyDB流量经过该网关,同时研究代理控制机制、与ZServer选择性共置及多进程架构,以增强故障隔离能力。

分布式存储代理层高并发服务网格

本文基于公开渠道信息整理,内容可能存在不准确或遗漏之处,不代表本站立场,如内容涉及侵权或错误,请联系我们处理。

阅读原文