0.7.17 • Published 3 years ago

@nestcloud/loadbalance v0.7.17

Weekly downloads
491
License
MIT
Repository
github
Last release
3 years ago

NestCloud - Loadbalance

Description

This is a software load balancers primary for rest calls.

中文文档

Installation

$ npm i --save @nestcloud/consul consul @nestcloud/loadbalance

Quick Start

Import Module

import { Module } from '@nestjs/common';
import { ConsulModule } from '@nestcloud/consul';
import { LoadbalanceModule } from '@nestcloud/loadbalance';
import { BootModule } from '@nestcloud/boot';
import { NEST_BOOT } from '@nestcloud/common';

@Module({
  imports: [
      ConsulModule.register({dependencies: [NEST_BOOT]}),
      BootModule.register(__dirname, 'bootstrap.yml'),
      LoadbalanceModule.register({dependencies: [NEST_BOOT], customRulePath: __dirname})
  ],
})
export class ApplicationModule {}

Configurations

consul:
  host: localhost
  port: 8500
loadbalance:
  ruleCls: RandomRule
  rules:
    - {service: 'your-service-name', ruleCls: 'RoundRobinRule'}
    - {service: 'your-service-name', ruleCls: 'rules/CustomRule'}

Usage

import { Component } from '@nestjs/common';
import { InjectLoadbalancee, Loadbalance } from '@nestcloud/loadbalance';

@Component()
export class TestService {
  constructor(@InjectLoadbalancee() private readonly lb: Loadbalance) {}

  async chooseOneNode() {
      const node = this.lb.choose('your-service-name');
  }
}

Use Choose decorator

import { Injectable } from '@nestjs/common';
import { Choose } from '@nestcloud/loadbalance';

@Injectable()
export class TestService {
  @Choose('your-service-name')
  private readonly yourServiceServer: Iserver;
}

Custom Loadbalance Rule

import { Rule, Loadbalancer } from '@nestcloud/loadbalance';

export class CustomRule implements Rule {
    private loadbalancer: Loadbalancer;
    
    init(loadbalancer: Loadbalancer) {
        this.loadbalancer = loadbalancer;
    }

    choose() {
        const servers = this.loadbalancer.servers;
        return servers[0];
    }
}

API

class LoadbalanceModule

static register(options): DynamicModule

Import nest loadbalance module.

fieldtypedescription
options.dependenciesstring[]if you are using @nestcloud/boot module, please set NEST_BOOT
options.ruleClsstring | classlb rule,support:RandomRule, RoundRobinRule, WeightedResponseTimeRule or custom lb rule, use relative path
options.rulesRuleOptionone service use one rule, eg:[{service: '', ruleCls: ''}]

class Loadbalance

choose(service: string): Server

Choose a node that running the specific service.

fieldtypedescription
servicestringthe service name

state(): {service: string: IServer[]}

List all servers info for all services.

chooseLoadbalancer(service: string): Loadbalancer

Get loadbalancer.

fieldtypedescription
servicestringthe service name

Stay in touch

License

NestCloud is MIT licensed.

0.7.3-node1011

3 years ago

0.7.17

4 years ago

0.6.13

4 years ago

0.6.12

4 years ago

0.7.16

4 years ago

0.7.15

4 years ago

0.7.14

4 years ago

0.7.13

4 years ago

0.7.12

4 years ago

0.7.11

4 years ago

0.7.10

4 years ago

0.7.9

4 years ago

0.7.9-2

4 years ago

0.7.9-1

4 years ago

0.7.9-0

4 years ago

0.7.8

4 years ago

0.7.8-0

4 years ago

0.7.7-0

4 years ago

0.7.6

4 years ago

0.7.5

4 years ago

0.7.3

4 years ago

0.7.2

4 years ago

0.7.1

4 years ago

0.7.0

4 years ago

0.6.10-22

4 years ago

0.6.10

4 years ago

0.6.11

4 years ago

0.6.10-18

4 years ago

0.6.10-20

4 years ago

0.6.10-21

4 years ago

0.6.10-19

4 years ago

0.6.10-17

4 years ago

0.6.10-16

4 years ago

0.6.10-15

4 years ago

0.6.10-13

4 years ago

0.6.10-14

4 years ago

0.6.10-12

4 years ago

0.6.10-11

4 years ago

0.6.10-10

4 years ago

0.6.10-6

4 years ago

0.6.10-7

4 years ago

0.6.10-8

4 years ago

0.6.10-9

4 years ago

0.6.10-5

4 years ago

0.6.10-4

4 years ago

0.6.10-3

4 years ago

0.6.10-2

4 years ago

0.6.9

4 years ago

0.6.8

4 years ago

0.6.7

4 years ago

0.6.6

4 years ago

0.6.5

4 years ago

0.6.4

4 years ago

0.6.3

4 years ago

0.6.2

4 years ago

0.6.0

4 years ago

0.6.0-y.4

4 years ago

0.6.0-y.1

4 years ago

0.6.0-y.0

4 years ago

0.6.0-4

4 years ago

0.6.0-3

4 years ago

0.6.0-2

4 years ago

0.6.0-1

4 years ago

0.6.0-0

4 years ago

0.5.3

4 years ago

0.5.2

5 years ago

0.5.1

5 years ago

0.5.0-9

5 years ago

0.5.0-8

5 years ago

0.5.0-7

5 years ago

0.5.0-6

5 years ago

0.5.0-5

5 years ago

0.5.0-4

5 years ago

0.5.0-3

5 years ago

0.5.0-1

5 years ago

0.5.0-0

5 years ago

0.4.5-3

5 years ago

0.4.5-1

5 years ago

0.4.4

5 years ago

0.4.3

5 years ago

0.4.2

5 years ago

0.4.1

5 years ago

0.4.0

5 years ago