Giter Site home page Giter Site logo

load-balancers's Introduction

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'

load-balancers's People

Contributors

chay-xu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

load-balancers's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.