首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Docker作为微服务的服务注册表

使用Docker作为微服务的服务注册表
EN

Stack Overflow用户
提问于 2019-05-27 14:06:49
回答 2查看 179关注 0票数 1

我遵循了一些教程,介绍了如何设置3个微服务(应用程序、产品和反馈)和1个服务注册表。

在使用Docker一段时间后,我觉得服务注册表是多余的。因为Docker可以在通过环境变量相互注入主机名和端口的同时踢实例。

例如,在下面的Docker组合文件中,我将数据库凭据从MySQL微服务传递到Node.js微服务,并且以类似的方式,如果有其他Node.js微服务,我可以将它们连接起来。

代码语言:javascript
运行
复制
version: '3'

services:

  mysql:
    image: "mysql:5.7"
    container_name: "mysql"
    ports:
      - "6603:3306"
    volumes:
      - ./assets/schema.sql:/docker-entrypoint-initdb.d/init.sql
    environment:
      DATABASE_HOST: mysql
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: database
      MYSQL_USER: mysql
      MYSQL_PASSWORD: password

  products_service:
    build: .
    command: bash -c "/wait && npm start"
    volumes:
      - "./src/:/service/src/"
    image: "node"
    container_name: "products"
    ports:
      - "8080:8080"
    depends_on:
      - mysql
    environment:
      DATABASE_HOST: mysql
      MYSQL_PORT: 3306
      MYSQL_DATABASE: database
      MYSQL_USER: mysql
      MYSQL_PASSWORD: password
      WAIT_HOSTS: mysql:3306
    restart: on-failure

我真的需要在Node.js中对注册表服务进行编码和编程吗?

EN

回答 2

Stack Overflow用户

发布于 2019-05-27 19:27:56

假设您的产品服务公开了外部世界使用https://myserver/myservice的rest端点。

一段时间后,您的产品服务变得非常流行,您希望在不破坏当前合同(上面的端点)的情况下进一步扩展它。

要扩展您的产品服务,您将启动在相同或不同主机上运行的多个实例。

跟踪您的产品服务正在运行的实例数量的服务称为发现服务。

这是不够的,到达您的服务端点的外部流量应该被路由到您的产品服务的所有实例。这就是API网关的工作,它就像一个反向代理。您可以指定轮询等策略将流量路由到所有实例。

因此,API网关和服务发现一起为您的服务提供了可伸缩性和容错能力。

参考文献-

https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/architect-microservice-container-applications/direct-client-to-microservice-communication-versus-the-api-gateway-pattern

https://auth0.com/blog/an-introduction-to-microservices-part-3-the-service-registry/

票数 1
EN

Stack Overflow用户

发布于 2019-05-27 22:03:26

如果你想对流量负载和服务故障做出反应,你真的需要某种自动化,而不仅仅是组成容器。所有主要的容器管理工具都有一些策略来为您进行服务发现。此外,还有多种方法来执行服务发现(如心跳和游泳)。

坦率地说,你可以从为你的服务启动一些实例开始,然后为你的用户服务。但是你不能对负载和故障做出反应,也不能高效利用资源。这就是像k8s这样的工具大放异彩,为您处理服务发现和资源利用的地方。

查看this talk以了解有关服务发现的更多信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56320463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档