【发布时间】:2021-07-19 00:20:09
【问题描述】:
我正在构建一个相对复杂的分布式节点系统。假设有两个进程(节点应用程序),A 和 B。它们在不同的项目中定义。
此外,还有几个定制的节点模块,在A和B中都使用。我们称它们为M和N。另外,M使用N。
我应该如何正确处理环境变量?
我想我应该为两个主要进程(A 和 B)定义 .env,从那里处理所有 ENV 变量,然后简单地将所需的 env 变量从那里传递到 M 和 N。这样,M 和 N(以及其他内部模块)将在创建时接收作为参数传递的自己的 ENV 变量。
这种方法正确吗?
【问题讨论】:
-
我会说是的 - 定制的节点模块是纯粹供内部使用的,它们可以使用
process.env,或者它们可以使用来自其环境变量的 A 和 B 的参数进行初始化. -
在单体架构中不存在这些挑战。新的网络、技术、用户需求迫使我们像您的设计一样设计分布式系统。 #1 您的问题只是针对您的本地主机和图书馆级别的吗? #2 你是在使用 npm 模块还是 A & B 是 nodejs Web 应用程序? #3 您打算如何在暂存或生产环境中部署您的应用程序?我有一个从基础架构角度管理分布式环境中变量的策略。
-
这是一个分布式系统,A 和 B 可以在不同的实例(docker、EC2 等)上运行。两者都创建和使用 M 和 N,它们被实现为 NPM 模块。我不确定 M 和 N 是否应该拥有自己的 .env 或者 env vars 是否应该在 A 或 B 创建时“注入”。
标签: node.js environment-variables distributed-system