简介

微服务和 http 服务之间用 TCP 通信。
notion image
用 nest 跑个微服务的步骤如下:
  • 用 nest new 创建一个 main 服务,一个微服务
  • 都要安装 @nestjs/microservices 包,因为用到其中的 api
  • 微服务里用 createMicroservice 启动服务,选择传输方式为 TCP,指定端口
  • 微服务里在 Controller 使用 MessagePattern 或者 EventPattern 注册处理消息的 handler
  • main 服务使用 ClientsModule.register 来注册微服务
  • main 服务里注入 ClientProxy 对象,调用它的 send 方法给微服务发消息
这就是 Nest 跑微服务的方式。
 
 
各自启动自己
然后main 使用 clientsModule 注册其他两个服务

参考代码

nest-microservice-demo
QuarkGluonPlasmaUpdated Dec 26, 2023

服务间通讯协议

Nest 内置了几种不同的微服务传输层实现,它们定义在 @nestjs/microservices 包的 Transport 模块内,我们简单的进行归类:
  • 直接传输:TCP
  • 消息中转:REDIS、NATS、MQTT、RMQ、KAFKA
  • 远程过程调度:GRPC

服务间通讯模式

Nest microservice中,通讯模式有两种:
  • Request-response模式,当需要在内部服务间交互讯息时使用,异步的response函数也是支持的,返回结果可以是一个Observable对象。
  • Event-based模式,当服务间是基于事件的时候—我们仅仅想发布事件,而不是订阅事件时,就不需要等待response函数的响应,此时Event-based模式就是最好的选择。
为了在微服务间进行准确的传输数据和事件,需要用到一个称作模式(pattern)的值,pattern是由我们进行自定义的一个普通的对象值,或者是字符串,模式相当于微服务之间交流的语言,当进行通讯时,它会被自动序列化并通过网络请求找到与之匹配的服务模块。

消息代理通信

notion image
Loading...
目录
文章列表
王小扬博客
产品
Think
Git
软件开发
计算机网络
CI
DB
设计
缓存
Docker
Node
操作系统
Java
大前端
Nestjs
其他
PHP