知其然,知其所以然
Elasticsearch 2026-10-01

delete_by_query 的批量删除机制

本机真实验证delete_by_query精确删除匹配文档,wait_for_completion=false的异步任务模式,以及_tasks API里真实支持的任务取消能力。

Elasticsearch 真实验证 动画演示
Elasticsearch 2026-10-01

字段类型一旦建立后为什么不能随便修改

本机真实验证integer改long这种看似安全的类型扩容依然被拒绝,但新增字段、追加多字段、调整ignore_above等参数都是被允许的增量修改。

Elasticsearch 真实验证 动画演示
Elasticsearch 2026-10-01

Analyzer 的完整执行链路

本机真实用_analyze的explain:true逐级打印char_filter/tokenizer/token_filter的完整输出,验证停用词删除后position留空位而不紧凑重排的真实设计。

Elasticsearch 真实验证 动画演示
Elasticsearch 2026-10-01

Character Filter、Tokenizer、Token Filter 的区别

本机真实对比有无html_strip char_filter时HTML文本的分词结果差异,并证明tokenizer参数结构上只接受单值,跟可叠加的char_filter/token_filter角色不同。

Elasticsearch 真实验证 动画演示
ZooKeeper 内部原理 2026-10-01

ZooKeeper 与 Kafka、Dubbo、HBase 的关系

用 deps.dev 解析 14 个常见项目的 Maven 依赖图:7 个声明了 ZooKeeper 依赖(3.8.x / 3.9.x);Kafka 3.9.2 依赖 ZooKeeper 3.8.4、4.0.2 起依赖图里没有 ZooKeeper;依赖图里没有不等于不使用。

ZooKeeper 生态 Maven 依赖 真实验证 动画演示
ZooKeeper 内部原理 2026-10-01

ZooKeeper 在 Kafka 旧版本中的职责

真实运行 Kafka 3.9.2 的 ZooKeeper 模式(3 个 broker):看它在 ZooKeeper 里建的节点(brokers/controller/分区状态)、消费组 offset 不在 ZooKeeper 里、kill -9 controller 后 5.7 s 换主(会话超时 6 s)、空闲集群的 ZooKeeper 负载。

ZooKeeper Kafka controller 真实验证 动画演示
ZooKeeper 内部原理 2026-10-01

ZooKeeper 迁移到 KRaft

真实把一个 Kafka 3.9.2 的 3 broker 集群从 ZooKeeper 迁移到 KRaft(控制器 → 滚动重启 → 切纯 KRaft → 停 ZooKeeper):过程中后台生产者确认写入 2702 条,读回 2702 条、丢失 0、重复 0,最长写入停顿 1.0 s,主题与消费组 offset 不变。

ZooKeeper Kafka KRaft 迁移 真实验证 动画演示
ZooKeeper 内部原理 2026-10-01

HBase 使用 ZooKeeper 的真实路径

真实运行 HBase 2.6.6(1 master + 2 region server + backup master)连我的 ZooKeeper:列出 /hbase 下的真实 znode 与数据;region 位置不在 ZooKeeper;kill -9 region server 后节点 4.7 s 消失、客户端 6 次失败;kill -9 active master 后 5.7 s 切到 backup、读写 0 失败。

ZooKeeper HBase Region Server 真实验证 动画演示
ZooKeeper 内部原理 2026-10-01

Spring Cloud 与 ZooKeeper

真实运行 Spring Boot 3.3.5 + Spring Cloud 2023.0.4 的 ZooKeeper 服务发现与配置中心:/services/<应用>/<uuid> 临时节点与 JSON 内容;kill -9 后 20.6 s 才摘除(会话协商 20 s);配置节点 27/31 ms 生效、应用专属配置压过全局默认。

ZooKeeper Spring Cloud 服务发现 配置中心 真实验证 动画演示
ZooKeeper 内部原理 2026-10-01

ZooKeeper 与 Kubernetes 控制面

从 v1.37.1 源码编译真实的 kube-apiserver 并连本机 etcd:空集群 /registry 已有 57 个 key;创建 namespace 与 ConfigMap 后在 etcd 里找到它们(值是 k8s\x00 开头的 protobuf);resourceVersion 等于 etcd 的 mod_revision;源码里只有 etcd3 存储;把 --etcd-servers 指向 ZooKeeper 则启动失败。

ZooKeeper Kubernetes etcd apiserver 真实验证 动画演示
ZooKeeper 内部原理 2026-10-01

ZooKeeper 与 etcd 对比

3 节点 ZooKeeper 与 3 节点 etcd 3.7.2 同机对比:写延迟中位 5.1 vs 7.0 ms;快速更新时 watch 收到 12 次回调 vs 208 个事件;崩溃发现 2.4–3.4 vs 2.7–2.9 s;杀 leader 窗口 421–1122 vs 1053–1349 ms;etcd 值上限 1.4 MiB 可、2 MiB 拒绝。

ZooKeeper etcd 对比 真实验证 动画演示
ZooKeeper 内部原理 2026-10-01

ZooKeeper 迁移到 etcd

把一份 4948 个 znode 的 ZooKeeper 数据真实迁移到 etcd:0.21 s 搬完且逐个核对一致;搬不过去的语义(版本号、临时节点残留 10 个、ACL、顺序节点、目录前缀查询);用 watch 做增量同步 300 次随机变更后零差异、延迟中位 9 ms。

ZooKeeper etcd 迁移 真实验证 动画演示
京ICP备2026067502号-1京公网安备11010502063487号