分布式

Raft Node Rejoin Bug

Analyzes a replication session isolation bug in Raft implementations. When a node rejoins the cluster within the same term, delayed AppendEntries responses can corrupt progress tracking, causing infinite retry loops. While data safety remains intact, it creates operational issues like resource exhaustion. Uses raft-rs as a case study to examine trigger conditions and solutions.

The Hidden Danger in Raft: Why IO Ordering Matters

Writing logs before persisting term in Raft can silently destroy committed data. Here’s why production systems like TiKV and HashiCorp Raft carefully control IO order—and three battle-tested solutions.

Paxos 中 Ballot number 的重用机制

本文探讨 Paxos 协议中 Ballot number 的重用机制,分析何时可重复使用,以及为何只能使用系统中已存在的值而非提议新值

Multi-Master-Paxos: 3

小孩子才选master, 成年人只用multi-master

200行代码实现基于paxos的kv存储

用200行代码实现一个基于paxos的kv存储, 以最简洁的形式展示paxos如何运行, 作为 paxos的直观解释 这篇教程中的代码示例部分

后分布式时代: 多数派读写的’少数派’实现

通过减少多数派读写中参与者的数量, 可以实现分布式系统某些特定场景的优化, 以及介绍这些优化对系统可用性产生的影响, 根据什么标准来选择和调整这些参数.

SlimTrie: 单机百亿文件的极致索引-实现篇

SlimTrie的代码级实现详解:通过Trie裁剪去除单分支节点将空间从O(n*k)降至O(n),再用compacted array压缩存储,最终每条索引仅需约6字节(加4字节value共10字节)。实测内存开销约为B-Tree的13%,查询速度约为其2.6倍。

SlimTrie: 单机百亿文件的极致索引-设计篇

单机100TB存储如何索引百亿小文件?经典的hash map和B-Tree索引的内存开销为O(k*n),无法全部放入内存。SlimTrie基于Trie裁剪和压缩,将空间复杂度降至O(n),实现每条索引仅约10字节,在1GB内存中即可建立100TB数据量的索引。