Consensus Algorithms and Distributed Systems
Consensus algorithms for distributed systems represent a growing field focused on increasing the efficiency of these systems while decreasing their vulnerability to attack and component failure. These recent blog posts offer some theory and practice on consensus algorithms.
The Space Between Theory and Practice in Distributed Systems: Marc Brooker at Marc’s Blog discusses the gap between theory and practice in materials on distributed systems, using consensus algorithms as an example. Much material exists on the theory end of the continuum; much exists on the practice end of the continuum. What’s in the middle?
Raft: Understandable Distributed Consensus and The Raft Consensus Algorithm: Diego Ongaro and John Ousterhout of Stanford University provide both a guided and an interactive visualization of their consensus algorithm for managing a replication log. Raft is designed to be easier for system builders and students to learn.
How Consensus Algorithms Solve Issues with Bitcoin’s Proof of Work: Daniel Cawrey at The Bitcoin Society Blog explains that the mining process of confirming bitcoin transactions used to be trivial but now “requires tens of thousands of dollars in equipment, electricity, and optional hosting expenses.” Consensus algorithms may be a fitting solution because they rely on trust-confirming methods similar to Bitcoin’s.
On Stake: Vitalik Buterin at Ethereum Blog offers “proof of stake” as an alternative to the “proof of work” that Bitcoin describes. Proof of stake is a consensus algorithm in which stakeholders vote not with their CPU power but with the internal currency of the system.
Call Me Maybe: Elasticsearch: Kyle Kingsbury at Aphyr evaluates Elasticsearch, a distributed search engine, and how it behaves under network failure. He concludes that its current definition of quorum “ invalidates, well, basically every proof about non-dominating coterie consensus,” and it needs “a real consensus algorithm.”