zk-groupmembership
v2.0.1
Published
This package uses zookeeper to manage a group of members, allowing to register new group members and monitoring when members are added or removed.
Downloads
15
Maintainers
Readme
zk-groupmembership
This package allows you to initialize a member group in zookeeper, monitor its members, and register one or more members.
This is useful for instance to manage the nodes when implementing consistent hashing.
Usage
ZKGroupMembership class
const ZKGroupMembership = require("zk-groupmembership").ZKGroupMembership;
const Zookeeper = require('node-zookeeper-client');
console.log("Using zk-groupmembership");
const client = Zookeeper.createClient(zkConnStr);
client.connect();
const group
= new ZKGroupMembership(client, '/groups/sharding_example_cluster', {
timeout: 10000, //Optional timeout for registering, getting members, getting data etc
setupTimeout: 10000, //Optional timeout for the setup call.
});
group.setup()
.then(() => group.registerMember()) //Register a member with a generated id and no associated data
.then((member) => {
console.log("Registered Instance %s", member.id);
taskSharding.selfNode = member.id;
group.startMonitor(); //will cause the 'members', 'error' events to be emitted on the group instance.
}).catch(err => {
console.log("Couldn't participate in cluster:%s\%s", err.message, err.stack);
process.exit(1);
});
Events
group.on('error', err => {
console.log("Cluster Error:%s\%s", err.message, err.stack);
process.exit(1);
});
group.on('members', nodes => {
currentNodeCount = nodes.length;
taskSharding.setNodes(nodes);
});
Running the example
Please look here
Contributing
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality, lint and test your code.
To run lint and tests:
npm test npm run lint