首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >ClickHouse系列--分布式查询多副本的路由规则

ClickHouse系列--分布式查询多副本的路由规则

作者头像
IT云清
发布2021-12-06 14:19:06
发布2021-12-06 14:19:06
1.3K0
举报
文章被收录于专栏:IT云清IT云清

简介:在集群情况下,数据写入可以有写本地表和写分布式表2种方案,但是面向集群查询时,只能通过Distributed表引擎实现。本文主要介绍分布式查询多副本的路由规则。

该配置项为:load_balance=random/nearest_hostname/in_order/first_or_random

1.多副本的路由规则

查询数据时,如果一个分片shard有多个副本repIica,那么Distributed表引擎就需要面对副本选择的问题,选择查询究竟在哪个副本上执行。ck的负载均衡算法有以下四种:

  • random
  • nearest_hostname
  • in_order
  • first_or_random
1.1 random

这是默认的负载均衡算法。在ck的服务节点中,有一个errors_count全局计数器,当服务发生任何异常时,技术器加1。randdom算法会选择errors_count最小的那个repIica,如果多个repIica的errors_count相同,则在这几个里随机选择一个。

1.2 nearest_hostname

选择errors_count最小的那个,如果多个errors_count相同,则选择集群配置中host名称和当前host名称最相似的那个。相似比较的规则是与当前host的名称,按字节进行逐位对比,找到不同字节最少的那个。 例如当前host是a.bc.de,那么,a.bc.df就比a.bf.hh要更加相似。 a.bc.de a.bc.df a.bf.hh

1.3 in_order

选择errors_count最小的那个,如果多个errors_count相同,则按照集群配置顺序选择。

1.4 first_or_random

选择errors_count最小的那个,如果多个errors_count相同,则按照集群配置顺序选择第一个,如果第一个不可用,则随意选择一个其他的。

总结起来,其实这4个负载算法中,都是优先选择errors_count最小的那个,如果多个errors_count相同时,再根据不同的负载算法来选择。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/05/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 该配置项为:load_balance=random/nearest_hostname/in_order/first_or_random
  • 1.多副本的路由规则
    • 1.1 random
    • 1.2 nearest_hostname
    • 1.3 in_order
    • 1.4 first_or_random
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档