Note: 仅用于学习
etcd is a distributed reliable key-value store for the most critical data of a distributed system, with a focus on being:
- Simple: well-defined, user-facing API (gRPC)
- Secure: automatic TLS with optional client cert authentication
- Fast: benchmarked 10,000 writes/sec
- Reliable: properly distributed using Raft
etcd is written in Go and uses the Raft consensus algorithm to manage a highly-available replicated log.
- etcd 官方文档
- raft dissertation
- The Raft Consensus Algorithm
- raft-zh_cn
- 深入浅出 etcd/raft
- etcd raft 处理流程图系列
- Raft 在 etcd 中的实现
- raft 笔记系列
- Etcd Raft 架构设计和源码剖析
- 分布式键值存储 etcd 原理与实现
- Implementing Raft: Part 0 - Introduction
- Diving into ETCD's linearizable reads
- Notes about ETCD
- Raft Consensus Protocol Made Simpler
- raft 算法中的集群成员变更问题
- 万级 K8s 集群背后 etcd 稳定性及性能优化实践
- Understanding performance aspects of etcd and Raft - Hitoshi Mitake, NTT Laboratories
- Understanding Distributed Consensus with Raft
- etcd-issues
- Data inconsistency in etcd version 3.5.0
- Small number of high latency requests after a leader election
- raft: liveness problems during apply-time configuration change
- Random performance issue on etcd 3.4
- Etcd cluster downgrade
- etcd move the boltdb freelist hashmap feature out of experimental
- Fully concurrent reads design proposal
- Task list: support raft learner in etcd
- Corrupted WAL and snapshot restoring process
- Leases may be auto-renewed indefinitely due to leader elections
- Prevent disruptive rejoining node
- Support non-voting members in etcd server
- raft: deadlock during PreVote migration process
- etcdserver: use PreVote so majority partition's leader isn't forced to step down
- raft: improve the availability related to member change
- ReadIndex may read stale value
- what is different about Revision, ModRevision and Version?
- server: set multiple concurrentReadTx instances share one txReadBuffer
- server: make applier use ReadTx() in Txn() instead of ConcurrentReadTx()
- raft: postpone MsgReadIndex until first commit in the term
- etcdserver: resend ReadIndex request on empty apply request
- raft: implement fast log rejection
- Lease Checkpoints fix
- mvcc: fully concurrent read
- add flags to setup backend related config
- lease: Persist remainingTTL to prevent indefinite auto-renewal of long lived leases
- mvcc: Clone for batch index compaction and shorten lock
- lease: Add a heap to optimize lease expiration checks
- configure Raft Pre-Vote to reduce disruptive rejoining servers
- raft: Avoid scanning raft log in becomeLeader
- implemented leader lease when quorum check is on
- rewrite snapshot merging and sending for v3
- Only send snapshot when member is online
- Implement etcd QoS POC