核心架构概览

ClickHouse 采用无共享的分布式架构来保障系统的横向扩展能力。集群中的每个节点通常是对等的,它们既负责底层数据的本地存储,也承担着上层查询的计算任务。这种设计避免了单点计算瓶颈,使得系统能够通过增加机器来线性提升处理性能。

集群拓扑设计

分布式集群主要通过分片与副本来组织海量数据。分片机制解决的是存储容量与计算性能的扩展问题,而副本机制解决的是单点故障与数据高可用的问题。

  • 数据分片:将海量表数据水平切分并打散存放在不同节点,用于成倍提升并行扫描能力
  • 数据副本:在多个节点间维护相同的数据拷贝,用于在部分节点宕机时依然能够对外提供读写服务

查询执行机制

分布式查询请求采用两阶段执行模式来完成计算。接收到客户端请求的节点会主动充当协调者,它首先将查询任务重写并下发给所有包含目标数据的数据节点。待各节点完成本地数据的聚合与过滤后,协调者再收集这些局部结果进行最终的全局汇总,并将其返回给客户端。

参考资料

  1. ClickHouse 学术概览:https://clickhouse.com/docs/zh/academic_overview