'NestJS tcp microservice load balance
I have a nestjs app as follows:
- Gateway - HTTP
 - Microservice1 - TCP (ms1)
 - Microservice2 - TCP (ms2)
 
Gateway calling ms1 and ms2. ms1 and ms2 are the same duplicated microservice.
I would like to load the balance between ms1 and ms2. How do accomplish that in nestjs?
Thanks
Solution 1:[1]
Many cloud platforms have a built-in load balancer and I recommend using them. There is a fundamental problem with this TCP story from my point of view. I think that a load balancer could not distribute the TCP packets correctly because it would not know which packets belong together as a logical unit.
Since the NestJS documentation says: "... a microservice is fundamentally an application that uses a different transport layer than HTTP", you could simply create a new Nest application that runs separately but is still accessible via HTTP, because the difference is only in the transport protocol and the cloud built-in load balancer can handle HTTP in any case.
That mean:
- Gateway - HTTP
 - Microservice-a (n instances) - HTTP
 
Communication goes via the HttpModule:
@Injectable()
export class SomeService {
  constructor(private httpService: HttpService) {}
  findAll(): Observable<AxiosResponse<Entity[]>> {
    return this.httpService.get('http://host-ms-a:port/my-entities');
  }
}
    					Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source | 
|---|---|
| Solution 1 | Mateusz Klimentowicz | 
