数据岗位面试题更新 2026-08-05

请从分布式架构设计角度阐述 Apache Druid 实现高可用的具体手段,并说明其采用了哪些机制来确保数据的持久性与可靠性,避免数据丢失或损坏。

数据风险判断系统设计技术原理Apache DruidHDFSZooKeeper

考察说明

考察对 Apache Druid 分布式架构中高可用设计(如多节点协调、数据冗余)和数据可靠性机制(如持久化、复制、恢复)的理解。

回答思路

  1. 【回答框架 1】Apache Druid 是分布式数据存储系统,高可用依赖组件无单点故障。Coordinator 和 Overlord 可通过 ZooKeeper 选主实现主备切换,其他节点如 Historical、Broker、MiddleManager 均为无状态或可水平扩展,通过 ZK 感知集群状态变化,实现故障转移。
  2. 【回答框架 2】数据可靠性通过多副本和深度存储实现。实时数据先写入 MiddleManager,并同步到 Kafka 等消息队列,防止实时丢失;生成的 segment 会被上传到 HDFS 或 S3 等深度存储,Historical 节点从深度存储加载 segment 并缓存到本地。每个 segment 在多个 Historical 节点上保留副本(默认 2),通过 Coordinator 管理副本数,节点故障时自动在其他节点重新复制。
  3. 【回答框架 3】查询路径中,Broker 将查询分发到多个 Historical 节点,若部分节点不可用,Broker 可从其他持有副本的节点获取数据,保证查询可用性。同时,Druid 使用 ZK 进行服务发现和协调,Leader 选举确保控制面高可用。此外,还有元数据存储(如 MySQL)保存 segment 元信息,通过事务保证一致性。
  4. 【回答框架 4】针对数据损坏,Druid 提供 segment 校验,定期进行 segment 合并和压缩,并通过快照和 WAL(预写日志)在 MiddleManager 上保证实时数据不丢失。Historical 节点本地缓存中损坏的 segment 会重新从深度存储加载,深度存储本身也可配置复制,形成多重保障。
  5. 【关键点 1】Druid 通过无单点组件和 ZK 主备选举实现控制面高可用。
  6. 【关键点 2】数据段多副本存储在深度存储和多个 Historical 节点上。
  7. 【关键点 3】实时数据通过消息队列和 MiddleManager 的 WAL 机制保证不丢失。
  8. 【关键点 4】组件故障时通过 ZK 感知和自动复制实现故障恢复。
  9. 【易错点 1】不要只说依赖 ZK 而忽略数据副本和深度存储的具体机制。
  10. 【易错点 2】避免混淆实时和批量数据路径的可靠性措施不同。
  11. 【易错点 3】不能认为高可用等同于数据零丢失,需说明持久化策略。