Package Exports
- load-balancer-algorithm
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (load-balancer-algorithm) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
load-balancer-algorithm
Just load balancing algorithms implementation.
Currently supported load balancing algorithms include:
- Random
- Weighted Random
- Round Robin
- Weighted Round Robin
- Consistent Hash
You can debug the project in VS CODE.
Installation
$ npm i load-balancer-algorithm
# or
$ yarn add load-balancer-algorithmGetting Started
TypeScript
import LBA, { Random } from "load-balancer-algorithm";
const weightPool = [
{ host: "127.0.0.2:6061", weight: 2 },
{ host: "127.0.0.1:6062", weight: 3 },
{ host: "127.0.0.3:6063", weight: 10 },
];
const wrr = new LBA.WeightedRoundRobin(weightPool);
const wrrAddress = wrr.pick();
// should return { host }
console.log(wrrAddress)
// non-weighted
const pool = ["127.0.0.1", "127.0.0.3", "127.0.0.2", "127.0.0.4"];
const r = new Random(pool);
const rAddress = r.pick();
// should return { host }
console.log(rAddress)Commomjs
const LBA = require('load-balancer-algorithm');
const weightRandomPool = [
{ host: "127.0.0.2:6061", weight: 2 },
{ host: "127.0.0.1:6062", weight: 3 },
{ host: "127.0.0.3:6063", weight: 5 },
];
const weightedList = []
const loadBalance = new LBA.WeightedRoundRobin(weightRandomPool);
for(let i = 0; i < 10; i++){
const address = loadBalance.pick();
weightedList.push(loadBalance.getWeight(address.host))
}
// [5, 5, 3, 5, 2, 3, 5, 2, 3, 5]
console.log(weightedList)API
.pool
The property will be get pool of an instance.
.size
Returns the number of in pool object.
.pick(args?: array)
Will get a object from the pool based on the different algorithms.
.reset(pool: array)
Reset the instance fully.
.getWeight(host: string)
Returns a weight value associated to the host.
Build
execute npm run build from a terminal window
Test
let's run the test script
$ npm test
# or
$ yarn testif you need the specify test file to run
$ npx mocha -r ts-node/register --file './test/weightedRandom.test.ts'