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

针对 Apache Druid 集群,当面临高并发查询负载时,通常会采用哪些策略实现请求的负载均衡与故障转移?请说明其实现机制和主要优缺点。

数据系统设计技术原理方案权衡Apache Druid

考察说明

考察对分布式查询引擎在负载均衡与容错方面的架构设计理解。

回答思路

  1. 【回答框架 1】方案一:代理层负载均衡,通过 Router 节点或外部负载均衡器(如 Nginx、HAProxy)将查询请求分发到多个 Broker 节点,实现请求级负载均衡。优点是配置简单,且能通过健康检查剔除故障 Broker。
  2. 【回答框架 2】方案二:Broker 节点内部协调,Broker 接收查询后,将查询计划分发到多个 Historical 节点并行执行,节点间通过 Zookeeper 进行服务发现与状态同步,实现数据分片级别的并行与容错。
  3. 【回答框架 3】方案三:数据冗余与迁移,Druid 对 segment 数据保留多副本,当某个 Historical 节点故障时,Coordinator 会协调将 segment 副本迁移到其他节点,保证数据可用性。
  4. 【回答框架 4】容错方面,Broker 节点通常无状态,可水平扩展,节点故障时由负载均衡器重新路由,查询失败可重试。此外,设置合理的查询超时和队列管理,防止慢查询导致系统雪崩。
  5. 【关键点 1】负载均衡基于请求分发和数据分片并行执行两层实现。
  6. 【关键点 2】Broker 节点无状态,通过水平扩展和代理层实现高可用。
  7. 【关键点 3】数据副本机制保证节点故障时数据不丢失,查询可继续。
  8. 【关键点 4】Zookeeper 用于服务发现和集群状态管理。
  9. 【易错点 1】仅依赖外部负载均衡无法感知 Druid 内部节点状态,可能将请求路由到已过载的 Broker。
  10. 【易错点 2】忽略查询队列和并发控制,慢查询可能耗尽资源,导致雪崩。
  11. 【易错点 3】数据副本数配置过低时,节点故障可能导致某些 segment 临时不可用。