flâneur — a map of the web's best reading

Implementing Raft: Part 3 - Persistence and Optimizations - Eli Bendersky's website

eli.thegreenplace.net · 3,264 words · saved by 1 readers

This is Part 3 in a series of posts describing the Raft distributed consensus algorithm and its complete implementation in Go. Here is a list of posts in the series: In this part we'll complete our basic implementation of Raft, by adding persistence and some optimizations. All the code for this part is located in this directory. The goal of a consensus algorithm like Raft is to create a system that has higher availability than its parts by replicating a task across isolated servers. So far, we've been focusing on the fault scenario of network partitions, where some servers in the cluster become disconnected from others (or from clients). Another mode of failure is crashes, wherein a server stops working and restarts. While for other servers it appears like a network partition - a server got temporarily disconnected, for the crashed server itself the situation is quite different because by restarting all its volatile memory state is lost. Precisely for this reason, Figure 2 in the Raft

This is Part 3 in a series of posts describing the Raft distributed consensus algorithm and its complete implementation in Go. Here is a list of posts in the series: Part 0: Introduction Part 1: Elections Part 2: Commands and log replication Part 3: Persistence and optimizations (this post) Part 4: Key/Value database Part 5: Exactly-once delivery In this part we'll complete our basic implementation of Raft, by adding persistence and some optimizations. All the code for this part is located in this directory . Persistence The goal of a consensus algorithm like Raft is to create a system that ha

Explore this link on the map →

related reading