JSPM

load-balancer-algorithm

1.0.4
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 290
  • Score
    100M100P100Q105767F
  • License ISC

Load balancing algorithms using Node.js

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

Build Status Coverage Status version size

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-algorithm

Getting 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 test

if you need the specify test file to run

$ npx mocha -r ts-node/register  --file './test/weightedRandom.test.ts'