@movable/hash_ring
v1.1.0
Published
Consistent hashing C++ Add-on for node.js
Downloads
105
Readme
node-hash-ring - Consistent Hashing C++ Add-on for node.js
See this blog post for background on the algorithm.
Installation
Via npm:
npm install @movable/hash_ringThe native addon is compiled on install via node-gyp (invoked automatically), so a C++ toolchain is required.
From source:
git clone https://github.com/movableink/node-hash-ring.git
cd node-hash-ring
npm installExample
const { HashRing } = require("@movable/hash_ring");
// Create a cluster of 3 servers weighted so that 127.0.0.2:8080 stores twice as many
// keys as 127.0.0.1:8080, and 127.0.0.3:8080 stores 4x as many keys as 127.0.0.1:8080
// and 2x as many keys as 127.0.0.2:8080
const ring = new HashRing({ "127.0.0.1:8080": 1, "127.0.0.2:8080": 2, "127.0.0.3:8080": 4 });
console.log(ring.getNode("users:102")); // Should be 127.0.0.3:8080
console.log(ring.getBuckets()); // ['127.0.0.1:8080', '127.0.0.2:8080', '127.0.0.3:8080']An optional second argument controls the number of replica points per bucket (precision):
const ring = new HashRing({ a: 5, b: 3 }, 500);TypeScript definitions are bundled (index.d.ts).
Tests
Tests run with mocha:
npm testLicense
MIT License
Author
Brian Noguchi
Maintained by Movable Ink.
