A distributed system for on/off switches
npm install switchesSwitches
========
Switches is a distributed, eventually consistent, circuit breaker type system
for applications. It enables you to turn features on and off while they're
running without having to take them completely offline or do a complete
deploy
What follows is a novel example where two Switches instances are
synchronized via streams. Seeing how synchronization is done via streams
the same synchronization interface can be used to synchronize the instances
over TCP, HTTP, Websockets or any other transport with a streaming interface
``javascript
var Switches = require("switches");
var defaults = require("./defaults");
// create two isolated switches instances with sane defaults
var switches1 = new Switches(defaults);
var switches2 = new Switches(defaults);
// connect the two instances together via streams
var s1 = switches1.createStream();
var s2 = switches2.createStream();
s1.pipe(s2).pipe(s1);
// check if registration is enabled in switches2
if (switches2.isEnabled("registration")) {
console.log("registration: enabled");
} else {
console.log("registration: disabled");
}
// disable registration in switches1
switches1.disable("registration");
process.nextTick(function() {
// check if registration is enabled in switches2 and switches1
if (switches2.isEnabled("registration")) {
console.log("registration: enabled");
} else {
console.log("registration: disabled");
}
if (switches1.isEnabled("registration")) {
console.log("registration: enabled");
} else {
console.log("registration: disabled");
}
// disable registration via switches2
switches2.enable("registration");
process.nextTick(function() {
if (switches1.isEnabled("registration")) {
console.log("registration: enabled");
} else {
console.log("registration: disabled");
}
});
});
``