如图1,是大家常见的一种用法,所有CH节点参与分发数据的原因是因为大家想把唯一Key相同的数据分发到同一个节点,好做一些SQL查询。
如图2,也是常见的一种做法,就是数据存储在哪个节点无所谓,一般只算SUM、COUNT等聚合函数。如果业务可以使用该方案,非常OK,基本上无需考虑新方案了。
a. 优点:
b. 缺点:
如图3,使用几个高性能消费Kafka数据,然后分发到所有其他节点,其他节点只有LocalTable的写压力。测试后发现几个高性能节点来消费数据是OK的。
如图4,在图3的基础上支持多副本,集群规模不是特别大的情况下,zk的压力还是扛的住的。
a. 优点
b. 缺点
配置参数 | 默认值 | 推荐值 | 参数说明 |
---|---|---|---|
kafka_thread_per_consumer | 0 | 1 | 一个Consumer 对应一条线程,再大对数据消费意义不大 |
kafka_num_consumers | 1 | CPU核数/2 | 当前Kafka Engine表启动的Consumer数量,master分支最大值已经是和机器物理CPU核数一致了,主流分支还是最大16个。 |
kafka_max_block_size | 65536 | 1048576 | 每次从Kafka端拉取一批的最大消息数量 |
kafka_skip_broken_messages | 0 | 10 | 每批数据允许和Schema不匹配的数据条数,一般情况下用户都有脏数据。 |
在需要使用数据Hash的场景时,我们推荐使用图3、图4方案,降低查询集群的压力,降低长期的运维成本。
参考社区PR:https://github.com/ClickHouse/ClickHouse/issues/26640
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。