🦜 brig ~ raft consensus for pirates
Raft is a crash-fault-tolerant consensus algorithm for distributed synchronized state machines. This package provides a flexible implementation in plain JavaScript with zero dependencies.
install
npm install @yipsec/brig
usage
const { randomUUID } = require('node:crypto');
const { Client, Server } = require('@yipsec/scarf');
const { events, consensus } = require('@yipsec/brig');
// Give this node an ID
const id = randomUUID();
// Create a brig cluster
const cluster = new consensus.Cluster(id);
// Implement a message receiver
const server = new Server(cluster.createProtocolMapping());
server.listen();
// Simple connection pool example
const pool = new Map();
// Implement a message transmitter
function deliverMsg(id, msg) {
let client = pool.get(id);
if (!client) {
client = new Client();
client.stream.on('connect', () => {
pool.set(id, client);
client.invoke(msg.constructor.method, [msg]);
}).on('error', (err) => {
pool.delete(id);
});
client.connect(p.port);
} else {
client.invoke(msg.constructor.method, [msg]);
}
}
// Add a peer to the cluster
cluster.addPeer(new consensus.Peer(randomUUID(), deliverMsg));
// Begin cluster bootstrapping
cluster.join();
// Update the cluster log
cluster.broadcast({ key: 'value' });
// Persist log to disk.
cluster.state.serialize(); // Buffer <...>
copying
anti-copyright 2025, yipsec
licensed lgpl-3.0