commit | 65f13b9052e3b4c49d4032e938c3872ff99592e1 | [log] [tgz] |
---|---|---|
author | edwardcapriolo <edlinuxguru@gmail.com> | Wed Jan 14 11:08:48 2015 -0500 |
committer | edwardcapriolo <edlinuxguru@gmail.com> | Wed Jan 14 11:08:48 2015 -0500 |
tree | 7052add78ddeb946eed4f0cdf9b0d48926b572d0 | |
parent | 46ceb972bfae03f2dc9dc9e723dd5b2e5378a8ac [diff] |
Update README.md
Gossip protocol is a method for a group of nodes to discover and check the livelyness of a cluster. More information can be found at http://en.wikipedia.org/wiki/Gossip_protocol.
The original implementation was forked from https://code.google.com/p/java-gossip/. Several bug fixes and changes have already been added.
To gossip you need one or more seed nodes. Seed is just a list of places to initially connect to.
GossipSettings settings = new GossipSettings(); int seedNodes = 3; ArrayList<GossipMember> startupMembers = new ArrayList<GossipMember>(); for (int i = 1; i < seedNodes+1; ++i) { startupMembers.add(new RemoteGossipMember("127.0.0." + i, 2000, i + "")); }
Here we start five gossip processes and check that they discover each other. (Normally these are on different hosts but here we give each process a distinct local ip.
ArrayList<GossipService> clients = new ArrayList<GossipService>(); int clusterMembers = 5; for (int i = 1; i < clusterMembers+1; ++i) { GossipService gossipService = new GossipService("127.0.0." + i, 2000, i + "", LogLevel.DEBUG, startupMembers, settings); clients.add(gossipService); gossipService.start(); }
Later we can check that the nodes discover each other
Thread.sleep(10000); for (int i = 0; i < clusterMembers; ++i) { Assert.assertEquals(4, clients.get(i).get_gossipManager().getMemberList().size()); }
You can get this software from maven central.
<dependency> <groupId>io.teknek</groupId> <artifactId>gossip</artifactId> <version>0.0.0</version> </dependency>