gpt4 book ai didi

node.js - NodeJS 中的微服务架构

转载 作者:IT老高 更新时间:2023-10-28 23:03:16 34 4
gpt4 key购买 nike

我正在做一个副项目,我决定将我的 Skelton 项目重新设计为微服务,到目前为止,我还没有找到任何遵循这种模式的开源项目。经过大量的阅读和搜索,我得出了这个设计的结论,但我仍然有一些问题和想法。

enter image description here

以下是我的问题和想法:

  • 如果我有来自同一个微服务的 2 个 Node ,如何使 API 网关足够智能以加载平衡请求?
  • 如果其中一个微服务发生故障,发现应该如何知道?
  • 有没有类似的实现?我的设计对吗?
  • 我应该使用 Eureka 还是类似的东西?

最佳答案

你的设计看起来不错。我们还在使用 API Gateway 方法构建我们的微服务项目。包括网关服务(GW)在内的所有服务都是容器化的(我们使用 docker) Java 应用程序(spring bootdropwizard)。也可以使用 nodejs 构建类似的架构。与您的问题相关的一些主题:

  • 身份验证/授权: GW 服务是客户端的单一入口点。所有的身份验证/授权操作都在 GW 中使用 JSON web tokens(JWT) 处理,它也有 nodejs 库。我们将用户角色等授权信息保存在 JWT token 中。一旦 token 在 GW 中生成并返回给客户端,客户端在每次请求时都会在 HTTP header 中发送 token ,然后我们检查 token 是否客户端具有调用特定服务所需的角色或 token 是否已过期。在这种方法中,您不需要在服务器端跟踪用户的 session 。实际上没有 session 。所需信息在 JWT token 中。
  • 服务发现/负载均衡:我们使用dockerdocker swarm是docker引擎捆绑的一个docker引擎集群工具(在docker之后v.12.1)。我们的服务是码头容器。使用 docker 的容器化方法可以轻松部署、维护和扩展服务。在项目开始的时候,我们一起使用了Haproxy、RegistratorConsul来实现服务发现和负载均衡,和你画的差不多。然后我们意识到,只要我们创建一个 docker 网络 并使用 docker swarm 部署我们的服务,我们就不需要它们来进行服务发现和负载平衡。使用这种方法,您可以通过为每个环境创建不同的网络,在一台或多台机器上轻松地为您的服务(如 dev、beta、prod)创建隔离环境。一旦您创建了网络并部署了服务,服务发现和负载平衡就不再是您关心的问题了。在同一个 docker 网络中,每个容器都有其他容器的 DNS 记录,并且可以与它们通信。使用 docker swarm,您可以通过一个命令轻松扩展服务。在对服务的每个请求中,docker 将请求分发(负载平衡)到服务实例。

关于node.js - NodeJS 中的微服务架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40448015/

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