3.5.1 • Published 5 years ago
nest-consul-loadbalance v3.5.1
Description
A component of nestcloud. NestCloud is a nest framework micro-service solution.
This is a software load balancers primary for rest calls.
Installation
$ npm i --save nest-consul consul nest-consul-loadbalance
Quick Start
Import Module
import { Module } from '@nestjs/common';
import { ConsulModule } from 'nest-consul';
import { LoadbalanceModule } from 'nest-consul-loadbalance';
@Module({
imports: [
ConsulModule.register({
host: '127.0.0.1',
port: 8500
}),
LoadbalanceModule.register({
rules: [
{service: 'test-service', ruleCls: 'RandomRule'},
{service: 'user-service', ruleCls: '../rules/CustomRule'}
]
})
],
})
export class ApplicationModule {}
If you use nest-boot module.
import { Module } from '@nestjs/common';
import { ConsulModule } from 'nest-consul';
import { LoadbalanceModule } from 'nest-consul-loadbalance';
import { BootModule } from 'nest-boot';
import { NEST_BOOT } from 'nest-common';
@Module({
imports: [
ConsulModule.register({dependencies: [NEST_BOOT]}),
BootModule.register(__dirname, 'bootstrap.yml'),
LoadbalanceModule.register({dependencies: [NEST_BOOT]})
],
})
export class ApplicationModule {}
Nest-boot config file
consul:
host: localhost
port: 8500
loadbalance:
rules:
- {service: 'test-service', ruleCls: 'RandomRule'}
- {service: 'user-service', ruleCls: '../rules/CustomRule'}
Usage
import { Component } from '@nestjs/common';
import { InjectLoadbalancee, Loadbalance } from 'nest-consul-loadbalance';
@Component()
export class TestService {
constructor(@InjectLoadbalancee() private readonly lb: Loadbalance) {}
async chooseOneNode() {
const node = this.lb.choose('user-service');
}
}
Custom Loadbalance Rule
import { Rule, Loadbalancer } from 'nest-consul-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 consul loadbalance module.
field | type | description |
---|---|---|
options.dependencies | string[] | if you are using nest-boot module, please set NEST_BOOT |
options.ruleCls | string | class | lb rule,support:RandomRule, RoundRobinRule, WeightedResponseTimeRule or custom lb rule, use relative path |
options.rules | RuleOption | one service use one rule, eg:[{service: '', ruleCls: ''}] |
class Loadbalance
choose(service: string): Server
Choose a node that running the specific service.
field | type | description |
---|---|---|
service | string | the service name |
chooseLoadbalancer(service: string): Loadbalancer
Get loadbalancer.
field | type | description |
---|---|---|
service | string | the service name |
Stay in touch
- Author - NestCloud
License
NestCloud is MIT licensed.
3.5.1
5 years ago
3.5.0
5 years ago
3.4.0
5 years ago
3.3.2
5 years ago
3.3.1
5 years ago
3.3.0
5 years ago
3.2.1
6 years ago
3.2.0
6 years ago
3.1.0
6 years ago
3.0.0
6 years ago
3.0.0-alpha3
6 years ago
3.0.0-alpha2
6 years ago
3.0.0-alpha1
6 years ago
1.1.0
6 years ago
1.0.2
6 years ago
1.0.1
6 years ago
1.0.0
6 years ago
0.0.4
6 years ago
0.0.3
6 years ago
0.0.1
6 years ago