This project is based on "A Gossip-Style Failure Detection Service" https://www.cs.cornell.edu/home/rvr/papers/GossipFD.pdf.
In the paper once a member has been declared faulty, it's removed from the membership list when t-cleanup has expired. T-cleanup is normally 2 X t-fail, that's why in my implementation t-cleanup is not an option in the config.edn, because I'm using 2 X t-fail directly.
I've also added the paremeter fanout
, in the paper in each cycle each member gossiped with one member.
The idea is simple, in each node you should setup the initial nodes and the parameters. A configuration file must have: { :initial-nodes [ {:address "127.0.0.1" :port 5555 :local true} {:address "127.0.0.1" :port 5556} {:address "127.0.0.1" :port 5557} ] :t-fail 5000 :cycle 1000 :fanout 2 }
In members/active-nodes you can get the view of this node.
##Usage
Start up a node with: lein run -c config.edn
If you can test it in your machine you can start three nodes with different ports.
$ lein run -c config-5555.edn
$ lein run -c config-5556.edn
$ lein run -c config-5557.edn
Copyright © 2016 Félix López Luis
Distributed under the MIT License