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

这个问题不一定涉及Node项目结构的组织,更多的是如何表示单独的逻辑服务。 在我们的团队中,我们需要创build和支持多种服务(即一组API端点)。 这些服务并不直接相关,所以我最初的反应是它们应该是独立的项目,它们分别运行在单独的Node(或Express)服务器上。 我想知道这种方法是否会使部署和pipe理复杂化。 另一种方法是拥有一个单一的“入口点”(即单个节点服务器),根据所看到的上下文根或URL来委派相应的服务。 我很好奇哪种方法似乎更符合逻辑,现在人们如何处理这些“微服务”?

这些服务不是直接相关的

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

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

是的,一点没错。 我有几个NodeJS JSON API在生产和每个,我有2-3个环境(金丝雀,阶段,生产)。 当你在野外得到大约3种生产服务时,如果没有一定的纪律,事情就会变得很难处理。

您可以通过关于每个服务及其环境以及任何其他依赖关系(该服务所依赖的服务)的文档(通过维基或回购)来pipe理此问题。

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

另一种方法是拥有一个单一的“入口点”(即单个节点服务器),根据哪个上下文根或URL可以被委托给相应的服务。

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

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