It is designed to be easier to teach than Paxos, while providing the same guarantees. In particular, the different parts of the algorithm are more clearly separated and the paper also describes a mechanism for cluster membership change. It has recently seen adoption in etcd inspired by ZooKeeper.

  • Raft is strictly single Leader protocol. Too much traffic can choke the system. Some variants of Paxos algorithm exist that address this bottleneck.
  • There are a lot of assumptions considered to be acting, like non-occurrence of Byzantine failures, which sort of reduces the real life applicability.
  • Raft is a more specialized approach towards a subset of problems which arise in achieving consensus.
  • Cheap-paxos(a variant of Paxos), can work even when there is only one node functioning in the server cluster. To generalise, K+1 replicated servers can tolerate shutting down of/ fault in K servers.
  • Raft DOESN’T protect against bad actors (bizantine failure).

Pros

  • Super fast with a default block minting at 50ms
  • Does not mint empty blocks, giving us a big saving on storage space
  • Transaction finality, insures we don’t get forks that would slow us down

Cons

  • No protection from bad actors, in fact historical block information could be modified and then the block hashes recalculated to edit the past.
  • A workaround could be to implement a custom solution that would store the block hashes on a separate system.

If we take a look at Figure 2 in the Raft paper, we get an idea for all the state we need to model.


Awesome implementations by Phil Eaton

https://notes.eatonphil.com/2023-05-25-raft.html

https://github.com/tikv/raft-rs

https://github.com/eatonphil/goraft

https://notes.eatonphil.com/distributed-postgres.html

https://notes.eatonphil.com/minimal-key-value-store-with-hashicorp-raft.html


This is an instructional implementation of the Raft distributed consensus algorithm in Go. It’s accompanied by a series of blog posts:

https://github.com/eliben/raft


https://www.geeksforgeeks.org/raft-consensus-algorithm/#:~:text=responses%20function%20somehow.-,What%20is%20the%20Raft%20protocol,pieces%20needed%20for%20practical%20systems

https://www.youtube.com/watch?v=RHDP_KCrjUc

[AWESOME] Explained Visually:

http://thesecretlivesofdata.com/raft/

https://raft.github.io/


🌱 Back to Garden