首页 > 其他分享 >ClickHouse系列--分布式表写入流程

ClickHouse系列--分布式表写入流程

时间:2023-01-13 22:36:15浏览次数:39  
标签:-- 写入 分片 cluster2 cluster1 节点 ClickHouse 分布式


摘要:在向ck集群写入数据的过程,有2种方案,一种是直接写本地表,一种是通过Distributed表引擎写分布式表。本文介绍写分布式表的核心流程。
先假定场景和统一命名:
我们假设有cluster1,和cluster2两个集群。
本地表log_local对应的分布式表为log_all。
假设请求A进来后请求到cluster1的分布式表log_all,要写入100条数据。

1.第一个分片写本地数据

1)cluster1节点接收到请求后,会根据分片键/分片表达式计算这100条数据的分片划分,一部分应该到cluster1,一部分应该到cluster2。
2)将应该到cluster1分片的数据直接写入log_local。

2.与远端建立连接

1)cluster1将需要写入到远端的数据以分片为单位,写入cluster1节点的临时目录下。比如有2个分片,则写入2个目录。
2)cluster1节点尝试与远端cluster2节点建立连接;

3.发送数据到远端分片

cluster1会有监听任务,监听cluster1特定目录下的文件变化,将目录下的数据压缩后发送到对应的远端节点。

4.远程分片接收数据并写入本地

1)cluster2节点确认和cluster1节点建立连接,然后接受cluster1发送的数据。
2)将接收到的数据写入到本地表。

5.第一个分片确认数据发送完成

cluster1节点会确认数据发送完毕。

同步于异步

在Distributed表向远端节点发送数据时,有2种模式,可以通过配置项设置:

1.同步写

在当前分片本地写入完成后,会等待所有分片写入完毕,才会返回写入成功的消息。
同步写可以设置超时时间。

2.异步写

在当前分片本地写入完成后,即返回写入成功的消息。


标签:--,写入,分片,cluster2,cluster1,节点,ClickHouse,分布式
From: https://blog.51cto.com/u_15936016/6006750

相关文章