bigywater.tech
ZooKeeper · 102

ZooKeeper 与 Kafka、Dubbo、HBase 的关系

「谁在用 ZooKeeper」常被讲成一份名单,但名单很容易过时。这篇不列印象,而是查数据:拿 14 个常见项目最新正式版的 Maven 依赖图,看它们声明了哪个版本的 ZooKeeper,再看 Kafka 从 2.8 到 4.1 的依赖是怎么变的。它只能说明「声明了什么」,不能说明「怎么用」;怎么用的部分,本系列后面几篇会逐个实验。

7 / 14
依赖图里有 ZooKeeper 的项目数(最新正式版)
3.8.4 → 无
Kafka 3.9.2 → 4.0.2 依赖图中的 ZooKeeper
3.8.x + 3.9.x
ZooKeeper 同时维护的两个系列

14 个项目的依赖

实测 · 本机执行输出
  项目                                                  最新版         ZooKeeper 依赖            Curator
  org.apache.kafka:kafka_2.13                         4.2.2       (无)                     -
  org.apache.hbase:hbase-client                       3.0.0       3.8.6 DIRECT            client 5.2.0, framework 5.2.0, recipes 5.2.0
  org.apache.hadoop:hadoop-common                     3.5.0       3.8.6 DIRECT            client 5.2.0, framework 5.2.0, recipes 5.2.0
  org.apache.solr:solr-solrj-zookeeper                10.0.0      3.9.4 DIRECT            client 5.9.0, framework 5.9.0
  org.apache.flink:flink-runtime                      2.3.0       (无)                     -
  org.apache.storm:storm-client                       3.1.0       (无)                     -
  org.apache.pulsar:pulsar-metadata                   4.0.13      (无)                     -
  org.apache.bookkeeper:bookkeeper-server             4.18.1      3.9.5 DIRECT            -
  org.apache.accumulo:accumulo-core                   2.1.6       3.9.5 DIRECT            -
  org.apache.curator:curator-framework                5.9.0       3.9.3 INDIRECT          client 5.9.0, framework 5.9.0
  org.apache.dubbo:dubbo                              3.2.20      (无)                     -
  org.apache.druid:druid-processing                   查询失败 HTTP Error 404: Not Found
  org.apache.hive:hive-metastore                      4.2.1       3.8.4 INDIRECT          client 5.7.1, framework 5.7.1, recipes 5.7.1
  org.springframework.cloud:spring-cloud-zookeeper-core5.0.2       (无)                     -

数据是 deps.dev 解析 Maven Central 的依赖图得到的;「DIRECT」是 pom 里直接写的,「INDIRECT」是通过别的库带进来的(比如通过 Curator)。

Kafka 的变化

实测 · 本机执行输出
  kafka_2.13 2.8.2   → ZooKeeper 3.5.9 (DIRECT)
  kafka_2.13 3.0.2   → ZooKeeper 3.6.3 (DIRECT)
  kafka_2.13 3.3.2   → ZooKeeper 3.6.3 (DIRECT)
  kafka_2.13 3.6.2   → ZooKeeper 3.8.4 (DIRECT)
  kafka_2.13 3.7.2   → ZooKeeper 3.8.4 (DIRECT)
  kafka_2.13 3.8.1   → ZooKeeper 3.8.4 (DIRECT)
  kafka_2.13 3.9.2   → ZooKeeper 3.8.4 (DIRECT)
  kafka_2.13 4.0.2   → ZooKeeper 无
  kafka_2.13 4.1.2   → ZooKeeper 无

这只是依赖图上的变化。Kafka 4.0 具体怎么运行、从 ZooKeeper 迁移到 KRaft 的过程见第 103、104 篇。

ZooKeeper 的发布

实测 · 本机执行输出
  3.7 / 3.8 / 3.9 系列最近的 8 个版本: ['3.9.2 (2024-02-12)', '3.9.3 (2024-10-17)', '3.9.4 (2025-08-19)', '3.8.5 (2025-09-03)', '3.8.6 (2026-01-28)', '3.9.5 (2026-02-11)', '3.8.7 (2026-09-03)', '3.9.6 (2026-09-03)']

分步演示

生态数据
本步的对象

    本文用到的工具与边界

    • 本机 macOS 27 / ZooKeeper 3.9.6(brew 安装的 jar,用 java -cp 直接启动自己的实例,OpenJDK 17 Temurin,JVM 堆 128 MiB)/ 本机回环端口 7300+,数据在临时目录;默认 tickTime=2000;计时用 time.perf_counter,数字每次运行会有小幅抖动。数据来自 api.deps.dev 对 Maven Central 的依赖图(2026-10-01 查询,各项目「最新正式版」按发布时间取);没有逐个运行这些项目
    • 没有验证:依赖图里「无」的项目为什么没有(可选 / provided)、各项目运行时是否必须有 ZooKeeper、druid-processing 的查询失败(404)、非 Java 项目(如 ClickHouse)对 ZooKeeper 或 Keeper 的使用
    京ICP备2026067502号-1京公网安备11010502063487号