Node 微服务搭建

3 阅读1分钟

NestJS 创建微服务,可使用 NestJS CLI 的 monorepo 模式,在这种模式下:

  1. NestJS CLI 使用 nest-cli.json 来管理多个项目(应用和库)
  2. 所有项目共享一个根目录的 package.json
  3. 每个项目不需要自己的 package.json,因为它们通过 nest-cli.json 来定义 这种架构的好处是:
  • 单一依赖管理
  • 统一构建配置
  • 共享 node_modules

通常,微服务项目包含网关、 认证服务、消息中间件、公共模块

diagram-sequence.webp

通信方式

  • gRPC :微服务之间同步高性能通信
  • RabbitMQ :异步消息队列,解耦服务
  • Kafka :事件流处理,事件溯源
server/
├── apps/
│   ├── gateway/              # API网关
│   ├── auth-service/         # 认证服务
│   ├── user-service/         # 用户服务
│   ├── chat-service/         # 聊天服务
│   ├── aigc-service/         # AI生成服务
│   ├── rag-service/          # RAG服务
│   ├── square-service/       # 广场服务
├── libs/
│   └── common/               # 公共库(配置、常量、gRPC、消息队列)
├── proto/                    # gRPC proto文件
├── resources/                # 静态资源
├── scripts/                  # 工具脚本
└── ...

gRPC proto

Protocol Buffers 是定义语言(在 .proto​ 文件中创建)、proto 编译器生成的用于与数据交互的代码、特定于语言的运行时库、写入文件(或通过网络连接发送)的数据序列化格式以及序列化数据的组合。 定义文件时,需要指定包名、service 方法定义,Request、Response 的数据格式