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

标签 node.js

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

最佳答案

These services aren't directly related

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

I'm wondering if this approach would complicate deployment and management.

是的,绝对。我在生产中有几个 NodeJS JSON API,对于每个 API,我有 2-3 个环境(金丝雀、登台、生产)。当您在野外使用大约 3 个生产服务时,如果没有一些纪律,事情可能会变得难以处理。

您可以使用有关每个服务及其环境以及任何其他依赖项(该服务所依赖的服务)的文档(通过 wiki 或存储库)来管理此内容。

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

The alternative would be to have a single "entry point" (i.e., a single Node server) that delegates to the respective services depending on which context root or URL is seen.

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

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

关于node.js - 如何组织不同的 Node.js 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28722903/

相关文章:

node.js - 上传的头像保存在哪里

node.js - Sequelize 嵌套关联与两个表

node.js - mongodb 和 geoWithin

mysql - 在 Node js es6 的异步函数中使用 for 循环时出现问题

javascript - 在 vue.js 组件模态窗口中传递变量

javascript - 为什么 "[[1, 2], [3, 4]].indexOf([1, 2])"返回-1?

PHP exec(node) 仅针对 -v 运行,但不适用于 .js 文件

node.js - req.login 在 Passport 上有什么作用

javascript - Express中间件意味着请求超时

javascript - 使用node.js 而不使用.ejs 实现用户身份验证?