glad to see this project ,thanks very much
i'am very interested in this project,can you offer more demo;
can you offer more document or presentation
Unfortunately I don't have any documentation for kume yet, it's all in README file. However you can find examples in unit and integration tests in here: https://github.com/buremba/kume/tree/master/src/test/java/org/rakam/kume
how to run in different machine and how to join the cluster,leader election
Cluster.java->voteElection function is correct? and how to consistent data in different machine
When creating a cluster, you may set the nodes.
Cluster cluster = new ClusterBuilder()
.services(services)
.members(members) // here it is
.serverAddress(serverAddress)
.start();
Once the cluster is running, when a new node is started it send UDP multicast message to check if a cluster is already running and connects a cluster if there's already one.
If the nodes are in same network and your firewall allows UDP multicast message you don't need to do anything, they will discover each other and distribute the work & data automatically.
Leader election is done using Raft, voteElection is an internal method and when a node don't get any heartbeat from the leader for some time, it will be invoked so that a new leader can be elected. You may learn about Raft consensus algorithm from here: https://raft.github.io/
In fact, Kume is not ready for production and I don't know when it will be because I'm quite busy at the moment with other projects. :/ However, I think if you are looking for a distributed processing framework that implements decent distributed algorithms (Raft, CRDT etc.) in order to practice for distributed programming, it may help a lot.
Special Thanks, expect the follow blog post