Live data from Hacker News

A Raft implementation in Haskell

github.com

11–19 of 19 posts

Re: A Raft implementation in Haskell

#12
post #4

Earlier quoted context omitted.

Ah, I didn't know Paxos was on the decline or that etcd uses raft

I wouldn't call Paxos on the decline. It has several nice properties that Raft lacks[1]. However, implementing it correctly is more brutal than Raft, which is cut into easier-to-understand components. Also, the paper introducing Paxos[2] is famously obfuscated, while the Raft website[3] trivializes the problem, and has ready-to-use libraries. As a result, there are more recently-developed systems in Raft than Paxos,…

As a member of a team that has implemented Raft in production (https://fauna.com) and in conversation with others who have, the general consensus is that Raft, Paxos, and even Viewstamped Replication are variants of the same fundamental algorithm.

There is an interesting paper about the commonalities in consensus here: https://arxiv.org/pdf/1309.5671.pdf

Re: A Raft implementation in Haskell

#13
post #3
post #2

Does anyone actually use raft these days

Is there another distributed consensus algorithm that you think is more prominent? Paxos is on the decline. AFAIK Raft underlies most new distributed systems. Kubernetes for example relies on etcd which is a Raft implementation.

The Citus team recently created a Postgres extension implementing Paxos.

https://www.citusdata.com/blog/2016/04/13/masterless-distrib...

Re: A Raft implementation in Haskell

#14
post #3
post #2

Does anyone actually use raft these days

Is there another distributed consensus algorithm that you think is more prominent? Paxos is on the decline. AFAIK Raft underlies most new distributed systems. Kubernetes for example relies on etcd which is a Raft implementation.

There’s Tendermint: https://tendermint.com/, which is gaining popularity in distributed systems projects. It’s Byzantine fault tolerant, unlike Raft and Paxos.

Re: A Raft implementation in Haskell

#15

Earlier quoted context omitted.

I wouldn't call Paxos on the decline. It has several nice properties that Raft lacks[1]. However, implementing it correctly is more brutal than Raft, which is cut into easier-to-understand components. Also, the paper introducing Paxos[2] is famously obfuscated, while the Raft website[3] trivializes the problem, and has ready-to-use libraries. As a result, there are more recently-developed systems in Raft than Paxos,…

As a member of a team that has implemented Raft in production ( https://fauna.com ) and in conversation with others who have, the general consensus is that Raft, Paxos, and even Viewstamped Replication are variants of the same fundamental algorithm. There is an interesting paper about the commonalities in consensus here: https://arxiv.org/pdf/1309.5671.pdf

Thank you for sharing an interesting paper. The similarity between Raft and Viewstamped Replication is easy to gauge. The original Raft paper too acknowledges this similarity. OTOH, the similarity between Paxos and Raft is not very apparent (to me). The paper in the link seems to predate Raft, and only considers VR, Zab and multi-Paxos.

Re: A Raft implementation in Haskell

#16
post #14
post #3

Earlier quoted context omitted.

Is there another distributed consensus algorithm that you think is more prominent? Paxos is on the decline. AFAIK Raft underlies most new distributed systems. Kubernetes for example relies on etcd which is a Raft implementation.

There’s Tendermint: https://tendermint.com/ , which is gaining popularity in distributed systems projects. It’s Byzantine fault tolerant, unlike Raft and Paxos.

I had to get drunk after reading this.

No, Tendermint is not useful where Raft is. This is such a crass category error it makes me wonder what your actual skillset is.

Re: A Raft implementation in Haskell

#17
post #14

Earlier quoted context omitted.

There’s Tendermint: https://tendermint.com/ , which is gaining popularity in distributed systems projects. It’s Byzantine fault tolerant, unlike Raft and Paxos.

I had to get drunk after reading this. No, Tendermint is not useful where Raft is. This is such a crass category error it makes me wonder what your actual skillset is.

Care to enlighten us without resorting to a personal attack Dave?

Re: A Raft implementation in Haskell

#18
post #17

Earlier quoted context omitted.

I had to get drunk after reading this. No, Tendermint is not useful where Raft is. This is such a crass category error it makes me wonder what your actual skillset is.

Care to enlighten us without resorting to a personal attack Dave?

Raft is not designed for adversarial use; while it is fault-tolerant, it is not Byzantine fault tolerant. Raft (or Paxos et al) are better suited for wholly-owned distributed databases, where a BFT consensus algorithm like Tendermint would usually be inappropriate because of the overhead of cryptographic operations. If you think a large number of your nodes might get hacked, though, you may want a blockchain anyways :)

Re: A Raft implementation in Haskell

#19
post #17

Earlier quoted context omitted.

I had to get drunk after reading this. No, Tendermint is not useful where Raft is. This is such a crass category error it makes me wonder what your actual skillset is.

Care to enlighten us without resorting to a personal attack Dave?

After you name a system that decided to switch from a Raft-based consensus implementation to Tendermint, sure.
Post reply on HN