ClickHouse Keeper: 一个用 C++ 编写的 ZooKeeper 替代品

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
简介: ClickHouse Keeper: 一个用 C++ 编写的 ZooKeeper 替代品介绍




ClickHouseClickHouseKeeperClickHouseZooKeeperClickHouse使

ClickHouseKeeper使ClickHouseKeeper使ClickHouseKeeperZooKeeper使ZooKeeper1/46


ClickHouseZooKeeper广使API

ClickHouseZooKeeperJavaC++使使ZooKeeperClickHouseKeeper

ClickHouseKeeperZooKeeper

  • ClickHouseKeeperC++JavaClickHouse

  • ZooKeeper1MB
  • ZXIDZooKeeper20亿
  • 使
  • ClickHouseKeeperZooKeeper-线quorum_readsClickHouseKeeper线
  • ClickHouseKeeper使

ClickHouseKeeper20212ClickHouseJepsen-6

ClickHouseKeeper20225ClickHouseCloud

ClickHouseKeeperKeeper


ClickHouse使

ClickHouseKeeper

  • Keepershared-nothingClickHouse
  • MergetreeKeeperblock-hash-sums
  • Keeperpartpartmutation
  • KeeperKeeperMap使使Keeper线
  • ClickHouse
  • KafkaConnectSink使
  • KeeperS3Queue
  • DatabaseKeeper
  • KeeperONCLUSTER
  • UDFKeeper
  • 访Keeper
  • KeeperClickHouseCloud


Keeper

ClickHouseCloudKeeperWikiStat3ClickHouseCloud30CPU120GBRAM使ClickHouseKeeper3Keeper3CPU2GBRAM

10074046亿ClickHouseClickHouse使107GB

0 rows inset. Elapsed:101.208 sec. Processed 4.64 billion rows,40.58 GB (45.86 million rows/s.,400.93 MB/s.)Peak memory usage:107.75 GiB.

Part

3ClickHouse240partpart1934100MiB46亿

┌─parts──┬─rows_avg──────┬─size_avg───┬─rows_total───┐
│ 240.00 │ 19.34 million │ 108.89 MiB │ 4.64 billion │
└────────┴───────────────┴────────────┴──────────────┘

s3ClusterpartClickHouseCloud3ClickHouse

┌─n─┬─parts─┬─rows_total───┐
│ 1 │ 86.00 │ 1.61 billion │
│ 2 │ 76.00 │ 1.52 billion │
│ 3 │ 78.00 │ 1.51 billion │
└───┴───────┴──────────────┘

part

ClickHouse1706part

┌─merges─┐
│   1706 │
└────────┘

Keeper

ClickHouseKeeperClickHousepartpartpartClickHouse使KeeperpartpartpartblobKeeper

partpart18,000Keeper12,000ClickHouseKeeper800

total_requests:      17705
multi_requests:      11642
watch_notifications: 822

ClickHouse

┌─n─┬─total_requests─┬─multi_requests─┬─watch_notifications─┐
│ 1 │           5741 │           3671 │                 278 │
│ 2 │           5593 │           3685 │                 269 │
│ 3 │           6371 │           4286 │                 275 │
└───┴────────────────┴────────────────┴─────────────────────┘

Keeper

70%Keeper

KeeperClickHouseKeeper

ClickHouse

使1033使SharedMergeTree

0 rows in set. Elapsed: 33.634 sec. Processed 4.64 billion rows, 40.58 GB (138.01 million rows/s., 1.21 GB/s.)
Peak memory usage: 57.09 GiB.

3Keeper

total_requests:      60925
multi_requests:      41767
watch_notifications: 3468

使3ClickHousepart~25使使~1partClickHouse使9

0 rows in set. Elapsed: 121.421 sec. Processed 4.64 billion rows, 40.58 GB (38.23 million rows/s., 334.19 MB/s.)
Peak memory usage: 12.02 GiB.

part2404

┌─parts─────────┬─rows_avg─────┬─size_avg─┬─rows_total───┐
│ 4.24 thousand │ 1.09 million │ 9.20 MiB │ 4.64 billion │
└───────────────┴──────────────┴──────────┴──────────────┘

part

┌─merges─┐
│   9094 │
└────────

Keeper147k17k

total_requests:      147540
multi_requests:      105951
watch_notifications: 7439

使~1partWikiStat24kpart

─parts──────────┬─rows_avg─────┬─size_avg─┬─rows_total────┐
│ 23.75 thousand │ 1.10 million │ 9.24 MiB │ 26.23 billion │
└────────────────┴──────────────┴──────────┴───────────────┘

┌─merges─┐
│  28959 │
└────────┘

680kKeeper

total_requests:      680996
multi_requests:      474093
watch_notifications: 32779


Keeper

`keeper-bench-suite`ClickHouseKeeper`keeper-bench-suite`N3ClickHouseKeeper

`keeper-bench`KeeperZooKeeperNClickHouseKeeper`KeeperBenchSuite`使Keeper

使AWSEC2Python

3EC2m6a.4xlargeKeeperDockercAdvisorRediscAdvisor3Keeper

`keeper-bench`使

cAdvisorKeeperPrometheus

ClickHouseCloudSQLGrafana便

ClickHouseKeeperZooKeeperPrometheusCPU使cAdvisorKeeperDocker使KeeperCPU


Keeper

使DockerClickHouseKeeperZooKeeper1CPU+1GBRAM3CPU+1GBRAM6CPU+6GBRAM

Keeper使`keeper-bench`ClickHouseKeeper3101005001000

Keeper使`keeper-bench`Keeper1~1000使

ClickHouse1/32/3


Prometheus

使cAdvisorPrometheus

  • 使container_memory_working_set_bytes
  • CPU使container_cpu_usage_seconds_total

使ClickHouseKeeperZooKeeperPrometheusKeeperPrometheusZooKeeperJVM使

Keeper


使`keeper-bench-suite`ClickHouseKeeperZooKeeper10ClickHouseCloud使SQL


  • 95
  • 99

使ClickHouseKeeper23.5ZooKeeper3.8OpenJDK11216


3ClickHouseKeeper使3CPU2GBRAM99

使

ClickHouseKeeperZooKeeper使3ClickHouse640ClickHouseKeeper使ZooKeeper46

ZooKeeper使1GiBJVMJVMFLAGS-Xmx1024m-Xms1024mJVMJava使~1GiB使Docker使JVM使JVMJVM使JVMClickHouseKeeper使

ZooKeeper使1GiBJVM使2GiBJVMZooKeeper使2GiBJVM1.56GiBClickHouseKeeperZooKeeper

CPU使

CPU使

ClickHouseKeeperZooKeeperClickHouseKeeper使CPU使


Keeper

ClickHouseCloudKeeper使ClickHouseCloudKeeperClickHouse使Keeper


-2-2part使KeeperKeeperpartpartblobKeeperznodepartpart使ClickHousepartznodesClickHouseKeeperKeeper


part

server-2partpart使Keeperpart-2partpart使Keeperpart

KeeperKeeperClickHousepartClickHouseKeeper线


线

ZooKeeperClickHouseKeeperZABRaftpart

ZABZooKeeper2008

Raft2021KeeperC++

线使ClickHouseKeeperznodesKeeper线

ZooKeeper使线KeeperNuRaft使线

线使CPUZooKeeperClickHouseKeeper99

ZooKeeperClickHouseKeeper使136CPU500128

线ZABRaftCPU


KeeperKeeperRaft

KeeperKeeperRaft

线Multi-groupRaftKeeper使RaftKeeper

RaftKeeper/ClickHouse

ClickHouseKeeperZooKeeperClickHouseCloud使ClickHouseKeeper使线


云数据库 ClickHouse 版是阿里云提供的全托管 ClickHouse服务,是国内唯一和 ClickHouse 原厂达成战略合作并一方提供企业版内核服务的云产品。 企业版较社区版 ClickHouse 增强支持实时update&delete,云原生存算分离及Serverless 能力,整体成本可降低50%以上,现已开启邀测,欢迎申请体验(链接:https://www.aliyun.com/product/apsaradb/clickhouse

产品介绍(https://www.aliyun.com/product/apsaradb/clickhouse

技术交流群:

image.png

ClickHouse官方公众号:

image.png

相关文章
|
存储 分布式计算 数据挖掘
clickhouse集群zookeeper平滑搬迁实践
clickhouse集群zookeeper平滑搬迁实践
817 0
clickhouse集群zookeeper平滑搬迁实践
|
存储 网络协议 Cloud Native
ClickHouse Keeper 源码解析
ClickHouse 社区在21.8版本中引入了 ClickHouse Keeper。ClickHouse Keeper 是完全兼容 Zookeeper 协议的分布式协调服务。本文对开源版本 ClickHouse v21.8.10.19-lts 源码进行了解析。
ClickHouse Keeper 源码解析
|
2月前
|
存储 关系型数据库 数据库
【DDIA笔记】【ch2】 数据模型和查询语言 -- 多对一和多对多
【6月更文挑战第7天】该文探讨数据模型,比较了“多对一”和“多对多”关系。通过使用ID而不是纯文本(如region_id代替"Greater Seattle Area"),可以实现统一、避免歧义、简化修改、支持本地化及优化搜索。在数据库设计中,需权衡冗余和范式。文档型数据库适合一对多但处理多对多复杂,若无Join,需应用程序处理。关系型数据库则通过外键和JOIN处理这些关系。文章还提及文档模型与70年代层次模型的相似性,层次模型以树形结构限制了多对多关系处理。为克服层次模型局限,发展出了关系模型和网状模型。
37 6
|
2月前
|
XML NoSQL 数据库
【DDIA笔记】【ch2】 数据模型和查询语言 -- 概念 + 数据模型
【6月更文挑战第5天】本文探讨了数据模型的分析,关注点包括数据元素、关系及不同类型的模型(关系、文档、图)与Schema模式。查询语言的考量涉及与数据模型的关联及声明式与命令式编程。数据模型从应用开发者到硬件工程师的各抽象层次中起着简化复杂性的关键作用,理想模型应具备简洁直观和可组合性。
23 2
|
2月前
|
SQL 人工智能 关系型数据库
【DDIA笔记】【ch2】 数据模型和查询语言 -- 文档模型中Schema的灵活性
【6月更文挑战第8天】网状模型是层次模型的扩展,允许节点有多重父节点,但导航复杂,需要预知数据库结构。关系模型将数据组织为元组和关系,强调声明式查询,解耦查询语句与执行路径,简化了访问并通过查询优化器提高效率。文档型数据库适合树形结构数据,提供弱模式灵活性,但在Join支持和访问局部性上不如关系型。关系型数据库通过外键和Join处理多对多关系,适合高度关联数据。文档型数据库的模式灵活性体现在schema-on-read,写入时不校验,读取时解析,牺牲性能换取灵活性。适用于不同类型或结构变化的数据场景。
28 0
|
2月前
|
SQL JSON NoSQL
【DDIA笔记】【ch2】 数据模型和查询语言 -- 关系模型与文档模型
【6月更文挑战第6天】关系模型是主流数据库模型,以二维表形式展示数据,支持关系算子。分为事务型、分析型和混合型。尽管有其他模型挑战,如网状和层次模型,但关系模型仍占主导。然而,随着大数据增长和NoSQL的出现(如MongoDB、Redis),强调伸缩性、专业化查询和表达力,关系模型的局限性显现。面向对象编程与SQL的不匹配导致“阻抗不匹配”问题,ORM框架缓解但未完全解决。文档模型(如JSON)提供更自然的嵌套结构,适合表示复杂关系,具备模式灵活性和更好的数据局部性。
33 0
|
2月前
|
敏捷开发 存储 缓存
【DDIA笔记】【ch1】 可靠性、可扩展性和可维护性 -- 可维护性
【6月更文挑战第4天】本文探讨了Twitter面临的一次发推文引发的巨大写入压力问题,指出用户粉丝数分布是决定系统扩展性的关键因素。为解决此问题,Twitter采用混合策略,大部分用户推文扇出至粉丝主页时间线,而少数名人推文则单独处理。性能指标包括吞吐量、响应时间和延迟,其中高百分位响应时间对用户体验至关重要。应对负载的方法分为纵向和横向扩展,以及自动和手动调整。文章强调了可维护性的重要性,包括可操作性、简单性和可演化性,以减轻维护负担和适应变化。此外,良好设计应减少复杂性,提供预测性行为,并支持未来改动。
33 0
|
2月前
|
缓存 关系型数据库 数据库
【DDIA笔记】【ch1】 可靠性、可扩展性和可维护性 -- 可扩展性
【6月更文挑战第3天】可扩展性关乎系统应对负载增长的能力,但在产品初期过度设计可能导致失败。理解基本概念以应对可能的负载增长是必要的。衡量负载的关键指标包括日活、请求频率、数据库读写比例等。推特的扩展性挑战在于"扇出",即用户关注网络的广度。两种策略包括拉取(按需查询数据库)和推送(预计算feed流)。推送方法在推特案例中更为有效,因为它减少了高流量时的实时计算压力。
29 0
|
2月前
|
存储 消息中间件 缓存
【DDIA笔记】【ch1】 可靠性、可扩展性和可维护性 -- part1 可靠性
【6月更文挑战第2天】本书探讨现代数据系统,阐述其在信息社会中的关键作用,包括数据库、缓存、搜索引擎、流处理、批处理和消息队列等组成部分。随着技术发展,工具如Kafka、Spark和Redis等多功能组件使得系统设计更为复杂。面对可靠性、可扩展性和可维护性的挑战,书中强调了容错和韧性的重要性,区分了硬件故障、软件错误和人为错误,并提出了应对措施。可靠性关乎用户数据、企业声誉和生存,因此是系统设计的核心考量。
36 0

热门文章

最新文章