gpt4 book ai didi

node.js - 使用 Docker 作为微服务的服务注册中心

转载 作者:太空宇宙 更新时间:2023-11-03 23:15:13 25 4
gpt4 key购买 nike

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

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

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

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 中编码和编程注册表服务吗?

最佳答案

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

一段时间后,您的产品服务变得非常受欢迎,您希望在不违反当前契约(Contract)(上面的端点)的情况下进一步扩展它。

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

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

传入服务端点的外部流量还不够,应将其路由到产品服务的所有实例。这就是 API 网关的工作,它的作用类似于反向代理。您可以指定循环策略等策略将流量路由到所有实例。

因此,API 网关和服务发现共同为您的服务提供可扩展性和容错能力。

引用文献-

https://learn.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/

关于node.js - 使用 Docker 作为微服务的服务注册中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56320463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com