0

我正在测试分子微服务框架以建立基础设施。我将使用打字稿(https://github.com/moleculerjs/moleculer-template-project-typescript)。我的想法是根据文档是:

  • 使用 API Gateway 创建一个项目 => make doker => 使用 N 个副本进行 k8s 部署
  • 每个微服务创建 1 个项目 => dockerize => 使用 N 个副本进行 k8s 部署
  • 每个微服务创建 2 个项目 => dockerize => 使用 N 个副本进行 k8s 部署 ...
  • 每个微服务创建 N 个项目 => dockerize => 使用 N 个副本进行 k8s 部署

我将使用 redis 作为传输器。我也想在开发中使用redis。

我有这个疑问,因为您可以在同一个项目中创建所有微服务,但是这样,您正在开发一个单一的应用程序(并且仅在一个线程中)。我认为您需要在独立(打字稿)项目中分离每个微服务,以便在部署阶段在 docker 映像和 k8s 中的 make pod 之后制作它。

4

1 回答 1

2

您可以将每个微服务分成一个单独的项目,但使用 Moleculer 您不需要它。您可以将所有服务放入一个项目中。开发将简单快速,并且在部署时您可以控制将加载哪些服务。因此,您可以生成一个 docker 映像并使用环境变量控制加载的服务。

例如,在这里您可以SERVICES在 docker-compose.yml 中看到 env var: https ://moleculer.services/docs/0.14/deploying.html#Docker-Compose

version: "3.2"

services:

  api:
    build:
      context: .
    image: moleculer-demo
    container_name: moleculer-demo-api
    env_file: docker-compose.env
    environment:
      SERVICES: api # Runner will start only the 'api' service in this container
      PORT: 3000    # Port of API gateway

  greeter:
    build:
      context: .
    image: moleculer-demo
    container_name: moleculer-demo-greeter
    env_file: docker-compose.env
    environment:
      SERVICES: greeter # Runner will start only the 'greeter' service in this container
于 2021-02-19T10:04:24.280 回答