# compaction

Published articles for compaction.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## 【etcd】MVCC 数据模型：Revision、keyIndex 与 generation

DevFeed: [【etcd】MVCC 数据模型：Revision、keyIndex 与 generation](<https://devfeed.tech/articles/etcd-mvcc-revision-keyindex-generation-33986.md>)

Original publisher: [Read original article](<https://quant67.com/post/etcd/04-mvcc-model/04-mvcc-model.html>)

Author: Liao Tonglang

Published: 2026-08-26T00:00:00Z

Content type: tutorial

Language: zh

Sources: [土法炼钢 - 系统与基础设施](<https://devfeed.tech/sources/source-4.md>)

Topics: [etcd](<https://devfeed.tech/topics/etcd.md>), [Raft](<https://devfeed.tech/topics/raft.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>)

Tags: [compaction](<https://devfeed.tech/tags/compaction.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [etcd](<https://devfeed.tech/tags/etcd.md>), [generation](<https://devfeed.tech/tags/generation.md>), [keyindex](<https://devfeed.tech/tags/keyindex.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [mvcc](<https://devfeed.tech/tags/mvcc.md>), [raft](<https://devfeed.tech/tags/raft.md>), [revision](<https://devfeed.tech/tags/revision.md>), [treeindex](<https://devfeed.tech/tags/treeindex.md>), [v3](<https://devfeed.tech/tags/v3.md>), [v3-5](<https://devfeed.tech/tags/v3-5.md>), [v3-5-33](<https://devfeed.tech/tags/v3-5-33.md>), [watch](<https://devfeed.tech/tags/watch.md>)

### AI overview

This article analyzes etcd v3.5.33's MVCC data model through three concepts: globally ordered revisions, keyIndex generations that track key lifecycles, and the division of responsibilities between the in-memory treeIndex and the bbolt backend. It explains how these structures support historical Watch replay, transaction comparisons, compaction, and Kubernetes resourceVersion semantics, while distinguishing etcd revisions from Raft indexes.

### Source excerpt

拆解 etcd v3.5.33 的 Revision (main, sub) 全序、keyIndex/generation 生命周期与 treeIndex 分工；简要对照 v2 平面键空间，交代 MVCC 与 Watch/compaction 的语义基础。

## 【etcd】写入路径深读：Txn、mod revision 与 quota/alarm

DevFeed: [【etcd】写入路径深读：Txn、mod revision 与 quota/alarm](<https://devfeed.tech/articles/etcd-txn-mod-revision-quota-alarm-33989.md>)

Original publisher: [Read original article](<https://quant67.com/post/etcd/07-write-path/07-write-path.html>)

Author: Liao Tonglang

Published: 2026-08-26T00:00:00Z

Content type: tutorial

Language: zh

Sources: [土法炼钢 - 系统与基础设施](<https://devfeed.tech/sources/source-4.md>)

Topics: [etcd](<https://devfeed.tech/topics/etcd.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [Raft](<https://devfeed.tech/topics/raft.md>), [Remote Procedure Call (RPC)](<https://devfeed.tech/topics/rpc.md>), [maintenance](<https://devfeed.tech/topics/maintenance.md>)

Tags: [alarm](<https://devfeed.tech/tags/alarm.md>), [apiserver](<https://devfeed.tech/tags/apiserver.md>), [applied-index](<https://devfeed.tech/tags/applied-index.md>), [apply](<https://devfeed.tech/tags/apply.md>), [batch](<https://devfeed.tech/tags/batch.md>), [bbolt](<https://devfeed.tech/tags/bbolt.md>), [committed-index](<https://devfeed.tech/tags/committed-index.md>), [compaction](<https://devfeed.tech/tags/compaction.md>), [defrag](<https://devfeed.tech/tags/defrag.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [errcompacted](<https://devfeed.tech/tags/errcompacted.md>), [etcd](<https://devfeed.tech/tags/etcd.md>), [follower](<https://devfeed.tech/tags/follower.md>), [k8s](<https://devfeed.tech/tags/k8s.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [mod-revision](<https://devfeed.tech/tags/mod-revision.md>), [nospace](<https://devfeed.tech/tags/nospace.md>), [quota](<https://devfeed.tech/tags/quota.md>), [revision](<https://devfeed.tech/tags/revision.md>), [txn](<https://devfeed.tech/tags/txn.md>), [v3-5](<https://devfeed.tech/tags/v3-5.md>), [v3-5-33](<https://devfeed.tech/tags/v3-5-33.md>)

### AI overview

This tutorial explains the etcd v3.5.33 write path from gRPC requests through Raft proposal, quota checks, MVCC apply, and ModRevision assignment. It also describes proposal backpressure, backend quota accounting, and how a NOSPACE alarm blocks writes while reads, deletes, and maintenance operations can continue.

### Source excerpt

走读 etcd v3.5.33 写入路径：raftRequest 背压、Txn compare/mod 与 ModRevision 分配、backend quota 与 NOSPACE alarm 如何把集群推入只读。

## 【etcd】Watch 机制：watchableStore、synced/unsynced 与 ErrCompacted

DevFeed: [【etcd】Watch 机制：watchableStore、synced/unsynced 与 ErrCompacted](<https://devfeed.tech/articles/etcd-watch-watchablestore-synced-unsynced-errcompacted-33991.md>)

Original publisher: [Read original article](<https://quant67.com/post/etcd/09-watch/09-watch.html>)

Author: Liao Tonglang

Published: 2026-08-26T00:00:00Z

Content type: tutorial

Language: zh

Sources: [土法炼钢 - 系统与基础设施](<https://devfeed.tech/sources/source-4.md>)

Topics: [etcd](<https://devfeed.tech/topics/etcd.md>), [Raft](<https://devfeed.tech/topics/raft.md>), [Remote Procedure Call (RPC)](<https://devfeed.tech/topics/rpc.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>)

Tags: [apiserver](<https://devfeed.tech/tags/apiserver.md>), [apply](<https://devfeed.tech/tags/apply.md>), [compaction](<https://devfeed.tech/tags/compaction.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [errcompacted](<https://devfeed.tech/tags/errcompacted.md>), [etcd](<https://devfeed.tech/tags/etcd.md>), [io](<https://devfeed.tech/tags/io.md>), [k8s](<https://devfeed.tech/tags/k8s.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [lag](<https://devfeed.tech/tags/lag.md>), [leader](<https://devfeed.tech/tags/leader.md>), [lease](<https://devfeed.tech/tags/lease.md>), [mvcc](<https://devfeed.tech/tags/mvcc.md>), [notify](<https://devfeed.tech/tags/notify.md>), [raft](<https://devfeed.tech/tags/raft.md>), [range](<https://devfeed.tech/tags/range.md>), [restore](<https://devfeed.tech/tags/restore.md>), [revision](<https://devfeed.tech/tags/revision.md>), [rpc](<https://devfeed.tech/tags/rpc.md>), [v3-5](<https://devfeed.tech/tags/v3-5.md>), [v3-5-33](<https://devfeed.tech/tags/v3-5-33.md>), [watch](<https://devfeed.tech/tags/watch.md>), [watchablestore](<https://devfeed.tech/tags/watchablestore.md>)

### AI overview

This article examines the etcd v3.5.33 watchableStore implementation, including synced and unsynced watcher groups, victims caused by backpressure, Apply-time notification, historical synchronization, and the ErrCompacted client resynchronization boundary. It also discusses event ordering, follower watch progress, and interactions with Kubernetes apiserver watch caches.

### Source excerpt

钉 etcd v3.5.33 watchableStore 的 synced/unsynced/victims 三分法、Apply 后 notify 与历史追赶 syncWatchersLoop，以及 CompactRevision 触发 ErrCompacted 时的客户端重同步边界。

## 【etcd】treeIndex 与 Apply 管道：propose -\> commit -\> apply

DevFeed: [【etcd】treeIndex 与 Apply 管道：propose -\> commit -\> apply](<https://devfeed.tech/articles/etcd-treeindex-apply-propose-commit-apply-33988.md>)

Original publisher: [Read original article](<https://quant67.com/post/etcd/06-apply-pipeline/06-apply-pipeline.html>)

Author: Liao Tonglang

Published: 2026-08-26T00:00:00Z

Content type: tutorial

Language: zh

Sources: [土法炼钢 - 系统与基础设施](<https://devfeed.tech/sources/source-4.md>)

Topics: [etcd](<https://devfeed.tech/topics/etcd.md>), [Raft](<https://devfeed.tech/topics/raft.md>), [Back end](<https://devfeed.tech/topics/backend.md>)

Tags: [applied-index](<https://devfeed.tech/tags/applied-index.md>), [apply](<https://devfeed.tech/tags/apply.md>), [backend](<https://devfeed.tech/tags/backend.md>), [bbolt](<https://devfeed.tech/tags/bbolt.md>), [commit](<https://devfeed.tech/tags/commit.md>), [compaction](<https://devfeed.tech/tags/compaction.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [etcd](<https://devfeed.tech/tags/etcd.md>), [index](<https://devfeed.tech/tags/index.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [mvcc](<https://devfeed.tech/tags/mvcc.md>), [raft](<https://devfeed.tech/tags/raft.md>), [range](<https://devfeed.tech/tags/range.md>), [recovery](<https://devfeed.tech/tags/recovery.md>), [revision](<https://devfeed.tech/tags/revision.md>), [store](<https://devfeed.tech/tags/store.md>), [treeindex](<https://devfeed.tech/tags/treeindex.md>), [txn](<https://devfeed.tech/tags/txn.md>), [v3-5](<https://devfeed.tech/tags/v3-5.md>), [wal](<https://devfeed.tech/tags/wal.md>), [watch](<https://devfeed.tech/tags/watch.md>)

### AI overview

This tutorial explains the etcd v3.5.33 apply pipeline from Raft commit to MVCC application. It covers the separation between propose, commit, and apply; the roles of treeIndex and bbolt; consistent-index updates; watch notification timing; and troubleshooting committed-versus-applied lag.

### Source excerpt

走读 etcd v3.5.33 从 Raft commit 到 MVCC apply 的串行管道：treeIndex 与 bbolt 分工、consistent index、watchableStore 通知触发点，以及 committed/applied 分列排障。

## 【etcd】单 Raft 组与服务器角色：Leader、Follower、Learner 与 request 路由

DevFeed: [【etcd】单 Raft 组与服务器角色：Leader、Follower、Learner 与 request 路由](<https://devfeed.tech/articles/etcd-raft-leader-follower-learner-request-33984.md>)

Original publisher: [Read original article](<https://quant67.com/post/etcd/02-single-raft/02-single-raft.html>)

Author: Liao Tonglang

Published: 2026-08-26T00:00:00Z

Content type: article

Language: zh

Sources: [土法炼钢 - 系统与基础设施](<https://devfeed.tech/sources/source-4.md>)

Topics: [etcd](<https://devfeed.tech/topics/etcd.md>), [Raft](<https://devfeed.tech/topics/raft.md>), [gRPC](<https://devfeed.tech/topics/grpc.md>)

Tags: [apiserver](<https://devfeed.tech/tags/apiserver.md>), [apply](<https://devfeed.tech/tags/apply.md>), [atomic](<https://devfeed.tech/tags/atomic.md>), [commit](<https://devfeed.tech/tags/commit.md>), [compaction](<https://devfeed.tech/tags/compaction.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [etcd](<https://devfeed.tech/tags/etcd.md>), [etcdserver](<https://devfeed.tech/tags/etcdserver.md>), [follower](<https://devfeed.tech/tags/follower.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [leader](<https://devfeed.tech/tags/leader.md>), [learner](<https://devfeed.tech/tags/learner.md>), [linearizable](<https://devfeed.tech/tags/linearizable.md>), [raft](<https://devfeed.tech/tags/raft.md>), [request](<https://devfeed.tech/tags/request.md>), [single-raft-group](<https://devfeed.tech/tags/single-raft-group.md>), [v3](<https://devfeed.tech/tags/v3.md>), [v3-5](<https://devfeed.tech/tags/v3-5.md>), [v3-5-33](<https://devfeed.tech/tags/v3-5-33.md>), [wal](<https://devfeed.tech/tags/wal.md>), [watch](<https://devfeed.tech/tags/watch.md>)

### AI overview

This article explains how etcd v3.5.33 embeds a single Raft group, separates EtcdServer responsibilities from the Raft library, and routes requests across Leader, Follower, and Learner roles. It covers gRPC write forwarding, linearizable and serializable reads, and the handling of watch, lease, and mutating requests.

### Source excerpt

钉清 etcd v3.5.33 单 Raft 组拓扑、EtcdServer 与 go.etcd.io/raft/v3 边界、Leader/Follower/Learner 角色及 gRPC 写读路由；与 distributed/13 分工。

## 【etcd】选型收束与开放问题：排除树与系列边界关闭

DevFeed: [【etcd】选型收束与开放问题：排除树与系列边界关闭](<https://devfeed.tech/articles/etcd-33998.md>)

Original publisher: [Read original article](<https://quant67.com/post/etcd/16-selection/16-selection.html>)

Author: Liao Tonglang

Published: 2026-08-26T00:00:00Z

Content type: article

Language: zh

Sources: [土法炼钢 - 系统与基础设施](<https://devfeed.tech/sources/source-4.md>)

Topics: [etcd](<https://devfeed.tech/topics/etcd.md>), [Raft](<https://devfeed.tech/topics/raft.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>)

Tags: [apiserver](<https://devfeed.tech/tags/apiserver.md>), [backup](<https://devfeed.tech/tags/backup.md>), [compaction](<https://devfeed.tech/tags/compaction.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [etcd](<https://devfeed.tech/tags/etcd.md>), [exclusion-tree](<https://devfeed.tech/tags/exclusion-tree.md>), [foundationdb](<https://devfeed.tech/tags/foundationdb.md>), [guide](<https://devfeed.tech/tags/guide.md>), [k8s](<https://devfeed.tech/tags/k8s.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [lease](<https://devfeed.tech/tags/lease.md>), [open-questions](<https://devfeed.tech/tags/open-questions.md>), [raft](<https://devfeed.tech/tags/raft.md>), [selection](<https://devfeed.tech/tags/selection.md>), [tikv](<https://devfeed.tech/tags/tikv.md>), [v3](<https://devfeed.tech/tags/v3.md>), [v3-5-33](<https://devfeed.tech/tags/v3-5-33.md>), [zookeeper](<https://devfeed.tech/tags/zookeeper.md>)

### AI overview

This concluding article presents a mechanism-based decision tree for deciding when to retain etcd and when to migrate to TiKV or FoundationDB. It defines etcd's fit for small data sets with Watch and Lease dependencies, identifies disqualifying conditions such as quota pressure, sharding needs, cross-key transactions, Watch backpressure, and insufficient operational capacity, and clarifies the boundaries between related article series.

### Source excerpt

用机制排除树收束何时该留 etcd、何时迁 TiKV/FDB/ZK；回收 distributed/39、tikv-htap/18、foundationdb/18 的 etcd 叶；列出 Watch 背压、Lease+fencing、quota 迁移等开放问题；以 ADR 语言关闭续作边界。

## 【etcd】排障五轴：Raft/WAL/MVCC/Watch/Lease 口令表

DevFeed: [【etcd】排障五轴：Raft/WAL/MVCC/Watch/Lease 口令表](<https://devfeed.tech/articles/etcd-raft-wal-mvcc-watch-lease-33997.md>)

Original publisher: [Read original article](<https://quant67.com/post/etcd/15-troubleshoot/15-troubleshoot.html>)

Author: Liao Tonglang

Published: 2026-08-26T00:00:00Z

Content type: tutorial

Language: zh

Sources: [土法炼钢 - 系统与基础设施](<https://devfeed.tech/sources/source-4.md>)

Topics: [etcd](<https://devfeed.tech/topics/etcd.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>)

Tags: [apiserver](<https://devfeed.tech/tags/apiserver.md>), [applied-index](<https://devfeed.tech/tags/applied-index.md>), [apply](<https://devfeed.tech/tags/apply.md>), [committed-index](<https://devfeed.tech/tags/committed-index.md>), [compaction](<https://devfeed.tech/tags/compaction.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [errcompacted](<https://devfeed.tech/tags/errcompacted.md>), [etcd](<https://devfeed.tech/tags/etcd.md>), [five-axes](<https://devfeed.tech/tags/five-axes.md>), [incident](<https://devfeed.tech/tags/incident.md>), [keepalive](<https://devfeed.tech/tags/keepalive.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [lag](<https://devfeed.tech/tags/lag.md>), [lease](<https://devfeed.tech/tags/lease.md>), [mvcc](<https://devfeed.tech/tags/mvcc.md>), [node-lease](<https://devfeed.tech/tags/node-lease.md>), [raft](<https://devfeed.tech/tags/raft.md>), [restore](<https://devfeed.tech/tags/restore.md>), [troubleshooting](<https://devfeed.tech/tags/troubleshooting.md>), [ttl](<https://devfeed.tech/tags/ttl.md>), [v3](<https://devfeed.tech/tags/v3.md>), [v3-5](<https://devfeed.tech/tags/v3-5.md>), [v3-5-33](<https://devfeed.tech/tags/v3-5-33.md>), [wal](<https://devfeed.tech/tags/wal.md>), [watch](<https://devfeed.tech/tags/watch.md>)

### AI overview

This troubleshooting article organizes etcd failures into five diagnostic axes: Raft consensus, WAL persistence and recovery, MVCC storage and capacity, Watch client synchronization, and Lease TTL semantics. It maps symptoms to axes, explains relevant etcdctl health and status fields, and notes Kubernetes control-plane relationships, including apiserver and Node Lease behavior. The article is anchored to etcd v3.5.33.

### Source excerpt

按 Raft、WAL、MVCC、Watch、Lease 五轴做症状否证；解释 etcdctl endpoint status/health 字段语义；并对照 K8s 控制面 apiserver 超时与 Node Lease 漂移。

## 【etcd】Compaction、Defrag 与容量：quota、alarm 与 SLO

DevFeed: [【etcd】Compaction、Defrag 与容量：quota、alarm 与 SLO](<https://devfeed.tech/articles/etcd-compaction-defrag-quota-alarm-slo-33994.md>)

Original publisher: [Read original article](<https://quant67.com/post/etcd/12-compaction-quota/12-compaction-quota.html>)

Author: Liao Tonglang

Published: 2026-08-26T00:00:00Z

Content type: tutorial

Language: zh

Sources: [土法炼钢 - 系统与基础设施](<https://devfeed.tech/sources/source-4.md>)

Topics: [etcd](<https://devfeed.tech/topics/etcd.md>), [Raft](<https://devfeed.tech/topics/raft.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>)

Tags: [alarm](<https://devfeed.tech/tags/alarm.md>), [bbolt](<https://devfeed.tech/tags/bbolt.md>), [benchmark](<https://devfeed.tech/tags/benchmark.md>), [compaction](<https://devfeed.tech/tags/compaction.md>), [defrag](<https://devfeed.tech/tags/defrag.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [errcompacted](<https://devfeed.tech/tags/errcompacted.md>), [etcd](<https://devfeed.tech/tags/etcd.md>), [follower](<https://devfeed.tech/tags/follower.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [lag](<https://devfeed.tech/tags/lag.md>), [leader](<https://devfeed.tech/tags/leader.md>), [mvcc](<https://devfeed.tech/tags/mvcc.md>), [nospace](<https://devfeed.tech/tags/nospace.md>), [performance](<https://devfeed.tech/tags/performance.md>), [quota](<https://devfeed.tech/tags/quota.md>), [raft](<https://devfeed.tech/tags/raft.md>), [resourceversion](<https://devfeed.tech/tags/resourceversion.md>), [v3](<https://devfeed.tech/tags/v3.md>), [v3-5](<https://devfeed.tech/tags/v3-5.md>), [v3-5-33](<https://devfeed.tech/tags/v3-5-33.md>), [watch](<https://devfeed.tech/tags/watch.md>)

### AI overview

This technical article explains how etcd v3.5.33 compaction, defragmentation, quota handling, and the NOSPACE alarm interact. It distinguishes revision-history removal from bbolt file reclamation, describes periodic and revision-based auto-compaction, and connects retention, quota, defrag pauses, and Watch or Kubernetes control-plane behavior to operational SLOs.

### Source excerpt

钉 etcd v3.5.33 MVCC compaction 与 bbolt defrag 的分工、auto-compaction 保留窗口、quota-backend-bytes 与 NOSPACE alarm 写入门，以及 ErrCompacted 如何写进 Watch SLO。

## 【分布式系统百科】etcd 深度解剖：从 Watch 机制到 MVCC 存储引擎

DevFeed: [【分布式系统百科】etcd 深度解剖：从 Watch 机制到 MVCC 存储引擎](<https://devfeed.tech/articles/etcd-watch-mvcc-33979.md>)

Original publisher: [Read original article](<https://quant67.com/post/distributed/50-etcd/etcd.html>)

Author: Liao Tonglang

Published: 2026-04-13T00:00:00Z

Content type: article

Language: zh

Sources: [土法炼钢 - 系统与基础设施](<https://devfeed.tech/sources/source-4.md>)

Topics: [etcd](<https://devfeed.tech/topics/etcd.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [Raft](<https://devfeed.tech/topics/raft.md>)

Tags: [apiserver](<https://devfeed.tech/tags/apiserver.md>), [boltdb](<https://devfeed.tech/tags/boltdb.md>), [compaction](<https://devfeed.tech/tags/compaction.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [distributed-coordination](<https://devfeed.tech/tags/distributed-coordination.md>), [distributed-systems](<https://devfeed.tech/tags/distributed-systems.md>), [etcd](<https://devfeed.tech/tags/etcd.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [lease](<https://devfeed.tech/tags/lease.md>), [mvcc](<https://devfeed.tech/tags/mvcc.md>), [raft](<https://devfeed.tech/tags/raft.md>), [revision](<https://devfeed.tech/tags/revision.md>), [streaming](<https://devfeed.tech/tags/streaming.md>), [watch](<https://devfeed.tech/tags/watch.md>)

### AI overview

This article explains etcd's persistent Watch mechanism, revision-based event replay, MVCC storage, and its relationship with Raft and WAL. It also describes how Kubernetes components use etcd Watch events to propagate Deployment and Pod changes, and discusses compaction limits and recovery through full resynchronization.

### Source excerpt

深入剖析 etcd 的核心机制：持久化 Watch 与 Revision 追溯、Lease 租约机制、基于 BoltDB 的 MVCC 存储引擎、与 Raft 共识的联动方式，以及在 Kubernetes 中的关键角色。涵盖性能调优策略、容量限制与规模化方案。

## 【分布式系统百科】分布式 KV 存储对比：etcd、TiKV 与 FoundationDB

DevFeed: [【分布式系统百科】分布式 KV 存储对比：etcd、TiKV 与 FoundationDB](<https://devfeed.tech/articles/kv-etcd-tikv-foundationdb-33978.md>)

Original publisher: [Read original article](<https://quant67.com/post/distributed/39-kv-stores/kv-stores.html>)

Author: Liao Tonglang

Published: 2026-04-13T00:00:00Z

Content type: comparison

Language: zh

Sources: [土法炼钢 - 系统与基础设施](<https://devfeed.tech/sources/source-4.md>)

Topics: [etcd](<https://devfeed.tech/topics/etcd.md>), [Raft](<https://devfeed.tech/topics/raft.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>)

Tags: [bbolt](<https://devfeed.tech/tags/bbolt.md>), [boltdb](<https://devfeed.tech/tags/boltdb.md>), [compaction](<https://devfeed.tech/tags/compaction.md>), [coreos](<https://devfeed.tech/tags/coreos.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [distributed-systems](<https://devfeed.tech/tags/distributed-systems.md>), [errcompacted](<https://devfeed.tech/tags/errcompacted.md>), [etcd](<https://devfeed.tech/tags/etcd.md>), [go](<https://devfeed.tech/tags/go.md>), [k8s](<https://devfeed.tech/tags/k8s.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [lease](<https://devfeed.tech/tags/lease.md>), [mmap](<https://devfeed.tech/tags/mmap.md>), [mvcc](<https://devfeed.tech/tags/mvcc.md>), [raft](<https://devfeed.tech/tags/raft.md>), [readindex](<https://devfeed.tech/tags/readindex.md>), [revision](<https://devfeed.tech/tags/revision.md>), [single-raft-group](<https://devfeed.tech/tags/single-raft-group.md>), [ssd](<https://devfeed.tech/tags/ssd.md>), [v3](<https://devfeed.tech/tags/v3.md>), [wal](<https://devfeed.tech/tags/wal.md>), [watch](<https://devfeed.tech/tags/watch.md>)

### AI overview

This Chinese-language comparison examines etcd, TiKV, and FoundationDB as distributed key-value stores for metadata. It focuses on architecture, implementation, performance, and limitations, with detailed coverage of etcd's single Raft group, MVCC, Watch, Lease, bbolt storage engine, linearizable reads, compaction, and defragmentation.

### Source excerpt

一个典型的架构评审场景：团队需要一个分布式键值存储来承载新系统的元数据。候选方案三个----etcd、TiKV、FoundationDB。三者都提供强一致性保证，都经过大规模生产验证，但设计目标截然不同。选错了，轻则性能不达标，重则数据丢失后无法恢复。这篇文章从架构、实现、性能和局限四个维度，把三个系统拆开来看。

## Building an LSM Storage Engine from Scratch in Rust

DevFeed: [Building an LSM Storage Engine from Scratch in Rust](<https://devfeed.tech/articles/building-strata-39414.md>)

Original publisher: [Read original article](<https://n8z.dev/posts/building-strata/>)

Author: Nevin Zheng

Published: 2026-03-05T00:00:00Z

Content type: opinion

Language: en

Sources: [nevzheng](<https://devfeed.tech/sources/nevzheng.md>)

Topics: [Rust](<https://devfeed.tech/topics/rust.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [compaction](<https://devfeed.tech/tags/compaction.md>), [data-structures](<https://devfeed.tech/tags/data-structures.md>), [database](<https://devfeed.tech/tags/database.md>), [merge](<https://devfeed.tech/tags/merge.md>), [mvcc](<https://devfeed.tech/tags/mvcc.md>), [rust](<https://devfeed.tech/tags/rust.md>), [storage](<https://devfeed.tech/tags/storage.md>), [storage-engine](<https://devfeed.tech/tags/storage-engine.md>)

### AI overview

A personal engineering account of building an LSM storage engine from scratch in Rust. The author discusses choosing LSM trees, prioritizing correctness and developer experience, versioning keys for possible MVCC exploration, and considering key-value separation to reduce compaction costs.

### Source excerpt

Building my own perfectly imperfect LSM storage engine from scratch in Rust.