副本特点
副本机制
ClickHouse利用ZooKeeper,通过ReplicatedMergeTree引擎(Replicated 系列引擎)实现了副本机制。副本机制是多主架构,可以将INSERT语句发送给任意一个副本,其余副本会进行数据的异步复制。
副本机制功能:
- ClickHouse 副本机制的设计可以最大限度的减少网络数据传输,用以在不同的数据中心进行同步,可以用来建设多数据中心、异地多活的集群架构。
- 副本机制是实现:高可用(HA)、负载均衡(Load Balance)、迁移/升级(Migration/Upgrade)功能的基础。
- 高可用:系统会监视副本数据的同步情况,识别故障节点,并在节点恢复正常时进行故障恢复,保证服务整体高可用。
分布式查询
ClickHouse通过分片和分布式表机制提供了线性扩展的能力。
- 分片机制:用来解决单节点的性能瓶颈,通过将数据进行水平切分,将一张表中的数据拆分到多个节点,不同节点之间的数据没有重复,这样就可以通过增加分片对ClickHouse进行线性扩展。
- 分布式表:在查询分片的数据时,通过分布式表进行查询,分布式表引擎自身不存储任何数据,仅是一层代理,能够自动路由到集群中的各个分片节点获取数据,即分布式表需要和其他数据表一起协同工作。
如图图1所示,在查询时,我们需要查询分布式表 table_distributed,分布式表会将查询请求自动路由到各个分片节点上,并进行结果的汇聚。
MergeTree引擎
MergeTree(合并树)及其系列(*MergeTree)是ClickHouse最强大的存储引擎,被设计用于插入大量数据到一张表中。数据以数据块的形式被快速写入,数据块在后台会进行异步合并,确保高效的插入和查询性能。
主要支持的功能点有:
- 主键排序、稀疏索引
- 支持数据分区
- 支持副本机制 (ReplicatedMergeTree 系列)
- 支持数据采样
- 并发数据访问
- 支持TTL
- 支持二级索引(Data Skipping Index 跳数索引)