Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
A Raft implementation in Haskell (github.com/adjoint-io)
159 points by lambdaxdotx on Nov 17, 2018 | hide | past | favorite | 17 comments


There is an older Haskell implementation of Raft with additional changes for Byzantine failures: https://github.com/kadena-io/juno


A great README file, explaining things in detail, from the ground up.

Kudos.


Agreed, very nice docs, both for how it works and examples, and also for using the code.

For Haskell fans, you might also like tha Pact DLT contract language, implemented in Haskell with, Lisp syntax.



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.


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, but I expect there is more volume hitting Paxos systems than Raft ones in the world.

[1]: http://rystsov.info/2017/02/15/simple-consensus.html

[2]: https://lamport.azurewebsites.net/pubs/lamport-paxos.pdf

[3]: https://raft.github.io/


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.


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?


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 :)


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


> Paxos is on the decline

You really need to back up a claim like that with facts.


The Citus team recently created a Postgres extension implementing Paxos.

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




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: