Zoologist
A Curator-esque ZooKeeper framework for Node.js.

Installation
npm install zoologist --save
Examples
Service Registration
'use strict';
var Zoologist = require('zoologist').Zoologist;
var ServiceInstanceBuilder = require('zoologist').ServiceInstanceBuilder;
var ServiceDiscoveryBuilder = require('zoologist').ServiceDiscoveryBuilder;
var zoologistClient = Zoologist.newClient('127.0.0.1:2181');
zoologistClient.start();
var serviceInstance = ServiceInstanceBuilder
.builder()
.address('127.0.0.1')
.port(process.env.PORT)
.name('my/service/name/v1')
.build();
var serviceDiscovery = ServiceDiscoveryBuilder
.builder()
.client(zoologistClient)
.thisInstance(serviceInstance)
.basePath('services')
.build();
serviceDiscovery.registerService(function onRegister(err, data) {
console.log({
id: data.id,
name: data.name,
address: data.address,
port: data.port
});
});
Service Discovery
'use strict';
var Zoologist = require('zoologist').Zoologist;
var ServiceInstanceBuilder = require('zoologist').ServiceInstanceBuilder;
var ServiceDiscoveryBuilder = require('zoologist').ServiceDiscoveryBuilder;
var zoologistClient = Zoologist.newClient('127.0.0.1:2181');
zoologistClient.start();
var serviceInstance = ServiceInstanceBuilder
.builder()
.address('127.0.0.1')
.port(process.env.PORT)
.name('my/service/name/v1')
.build();
var serviceDiscovery = ServiceDiscoveryBuilder
.builder()
.client(zoologistClient)
.thisInstance(serviceInstance)
.basePath('services')
.build();
var serviceProvider = serviceDiscovery.serviceProviderBuilder()
.serviceName('my/service/name/v1')
.providerStrategy('RoundRobin')
.build();
serviceProvider.getInstance(function onInstanceReturn(err, data) {
console.log({
id: data.id,
name: data.name,
address: data.address,
port: data.port,
serviceUrl: serviceUrl
});
});