superagent-load-balancer
Load balancer plugin for superagent
Installation
$ npm install superagent-load-balancer
Examples
View the ./examples directory for working examples.
API
get
-
backends
the backend list-
name
The name of backend -
host
The host of backend -
protocol
The protocol, optional, default is 'http' -
ip
The ip of backend, optional -
port
The port of backend, optional -
weight
The weight of backend, it is for 'round-robin' -
backup
Set the backend as backup, optional
-
-
type
balance algorithm:url
,leastconn
,round-robin
,first
,url-path
, default isround-robin
const request = ;const Balancer = ;const balancer = host: 'domain.com' ip: '192.168.1.1' port: 8080 weight: 10 host: 'domain.com' ip: '192.168.1.2' port: 8080 weight: 2 ;const plugin = balancer; request ;
startHealthCheck
-
options
{ping: function, interval: ms}-
ping
ping function, the function will return promise. If resolve, the backend is healthy. If reject, the backend is sick. -
ms
check interval -
window
each check the total count of ping -
threshold
each check the healthy count is bigger than threshold, the backend is healthy. Otherwise is sick
-
const request = ;const Balancer = ;const balancer = host: 'domain1.com' weight: 10 host: 'domain2.com' weight: 2 ;const ping = { const url = `http:///ping`; return request;};balancer; const plugin = balancer; request ;
on
Add listener function to healthy
or sick
event
const request = ;const Balancer = ;const balancer = host: 'domain1.com' weight: 10 host: 'domain2.com' weight: 2 ;const ping = { const url = `http:///ping`; return request;};balancer; balancer;balancer; const plugin = balancer; request ;
getAvailableServers
Get the available server list. It is not disabled and backup.
const request = ;const Balancer = ;const balancer = host: 'domain1.com' weight: 10 host: 'domain2.com' weight: 2 backup: true ;const ping = { const url = `http:///ping`; return request;};balancer;// [ { id: '51d27b36cb9c34ff', host: 'domain1.com', weight: 10 } ]console;
addAlgorithm
Add the custom load balance algorithm
-
name
The algorithm's name -
fn
The algorithm, it should return an integer.
const request = ;const Balancer = ;const balancer = host: 'domain1.com' host: 'domain2.com' 'getByUrl';balancer; const plugin = balancer; request ;
License
MIT