如何组织不同的Node.js服务?

时间:2015-02-25 15:28:03

标签: node.js

这个问题不一定与Node项目结构的组织有关,更多的是如何表示单独的逻辑服务。在我们的团队中,我们需要创建和支持多个服务(即一组API端点)。这些服务没有直接关系,所以我最初的反应是它们应该是单独的项目,在单独的Node(或Express)服务器上运行单独的代码库。我想知道这种方法是否会使部署和管理复杂化。替代方案是具有单个“入口点”(即,单个节点服务器),其根据看到的上下文根或URL而委托给相应的服务。我很好奇哪种方法看起来更符合逻辑,现在人们如何在野外处理这些“微服务”?

1 个答案:

答案 0 :(得分:0)

  

这些服务没有直接关系

这些服务应该是具有不同入口点的单独项目/回购。

  

我想知道这种方法是否会使部署和管理复杂化。

是的,绝对的。我在生产中有几个NodeJS JSON API,每个都有2-3个环境(金丝雀,舞台,制作)。当你在野外获得大约3种生产服务时,如果没有一些纪律,事情会变得笨拙。

您可以通过文档(通过wiki或repo)管理每个服务及其环境以及任何其他依赖项(此服务所依赖的服务)。

这也有助于服务缓慢或无响应的紧急情况。有时,服务本身很好,但服务的依赖性可能会下降。例如,github API可能是依赖关系......它会关闭。

  

另一种方法是拥有一个“入口点”(即单个节点服务器),根据看到的上下文根或URL,委托各自的服务。

在某些情况下,您可能必须构建一个“网关”服务,该服务会消耗您的其他单一用途服务。这样做的一个原因是支持身份验证和授权(即OAuth)。

换句话说,您可能需要多个微服务和网关服务。