在 Airbnb 构建容错指标存储系统 笔记

在 Airbnb 构建容错指标存储系统

Airbnb 开发了一套内部存储系统,用于处理每秒 5000 万个样本以及 2.5 PB 的时间序列数据。这一转变的必要性源于其不断演进的产品和基础设施中广泛部署的代码监控所产生的海量数据。主要工程挑战在于如何高效地持久化并服务这一庞大的数据集。为应对如此巨大的规模,Airbnb 采用了多租户架构,按服务或进程对租户进行隔离,以实现稳定的分组与归因。他们实施了 Shuffle Sharding 机制,将租户工作负载隔离开来,通过将租户仅写入并查询部分节点,从而提升了系统的容错能力。针对租户接入和配置管理等运营复杂性,系统引入了统一的控制平面,自动化租户接入流程并简化配置更新。该系统的关键需求包括:每秒处理超过 5000 万个样本、支持大量仪表板和告警,并保持低查询执行延迟。初期通过影子集群进行的验证揭示了可靠性问题、压缩延迟以及在大数据量负载下查询性能缓慢等问题。解决这些挑战的第一步是确保单个集群的可靠性,重点通过基准测试、防护机制和查询路径隔离,来稳定写入、读取和压缩操作。系统通过在三可用区部署具备状态感知能力的组件实现了容错。同时,实施了副本级限制和租户级控制,以有效管理集群规模并保护系统。随后,系统演进为多集群架构,以降低故障影响范围并增强灵活性。然而,多集群方案也带来了指标发现、查询以及运营开销等方面的复杂性。这些问题通过租户与集群映射工具以及基于 Kubernetes Operator 的自动化部署策略得到了缓解。引入带有自定义增强的 Promxy 后,实现了跨集群查询与告警功能。此次实践的关键经验包括:跨集群查询成本高昂,以及部署一致性的重要性——这可通过自动化和标准化部署来实现。其理念逐渐演变为将集群视为可替换的资源(类似“牲畜”),而非关键且独特的“宠物”,从而更易于扩展和维护。最终,构建该平台需要架构创新、严谨的运营实践,以及在管理预期方面的文化转变。
CdXz5zHNQW_oUKNz5mUz5.jpeg