抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

etcd 是一个强一致、高可用的分布式键值存储,使用 Raft 协议复制日志,常用于配置管理、服务发现、分布式锁、Leader 选举和 Kubernetes 集群状态存储。

本文基于 etcd 3.7.2(2026-09)和官方 latest 文档重写,覆盖架构、数据模型、etcdctl、集群、TLS/RBAC、compaction/defrag、备份恢复、监控调优、Kubernetes 实践,以及 Raft/MVCC/Watch/Lease 的深入机制。

名字来源:etc 代表 /etc 配置目录,d 代表 distributed。etcd 适合存储控制面元数据,不适合当对象存储、日志库或大 Value 数据库。

ZooKeeper 是一个高可用、强一致的分布式协调服务,用类似文件系统的 znode 树存储少量协调数据,并提供 Watch、会话、ACL、顺序节点等原语。Hadoop、HBase、Kafka(旧版本)、Dubbo 等系统都用它做选主、配置、注册和分布式锁。

本文基于 Apache ZooKeeper 3.9.6(current,2026-10)官方文档重写,按「数据模型 → 会话/Watch → 一致性 → Zab/选举 → 持久化 → 运维 → 客户端/Recipes → 故障」展开 deep dive。

ZooKeeper 适合存控制面元数据,不适合大 Value、日志、图片或高吞吐业务数据。默认单 znode 数据上限约 1 MiB(jute.maxbuffer),生产建议控制在 KiB 级。

分布式系统不是“把单体拆成多个服务”,而是在不可靠网络、部分失败、无全局时钟、并发执行的前提下,仍然让系统对外表现出可预测的行为。架构师的工作不是消灭故障,而是设计故障发生时的行为、边界和恢复路径。

本文以资深分布式系统架构师视角重写,按「理论 → 复制/共识 → 数据分布 → 事务 → 通信 → 弹性 → 多地域 → 决策」展开,重点讲清 trade-off、失败模式和落地取舍。