Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为不同的客户部署同一node.js express API的多个实例_Node.js_Api_Express_Deployment - Fatal编程技术网

如何为不同的客户部署同一node.js express API的多个实例

如何为不同的客户部署同一node.js express API的多个实例,node.js,api,express,deployment,Node.js,Api,Express,Deployment,我们目前为3个不同的客户部署了相同的node.js express API。它们都有自己的config.env文件,使用不同的端口、不同的数据库和不同的日志文件。它们还通过Apache拥有各自的反向代理 除此之外,所有后端源代码和node_模块都是相同的。 这意味着,每当我们需要更新后端时,我们都必须重新部署(即rsync)每个实例。它可以工作,但效率不高,特别是当我们增加越来越多的客户时 是否有一种方法可以将源代码部署在一个模板API中,并让每个实例指向它(除了.env文件)?我们可以将所有内

我们目前为3个不同的客户部署了相同的node.js express API。它们都有自己的config.env文件,使用不同的端口、不同的数据库和不同的日志文件。它们还通过Apache拥有各自的反向代理

除此之外,所有后端源代码和node_模块都是相同的。 这意味着,每当我们需要更新后端时,我们都必须重新部署(即rsync)每个实例。它可以工作,但效率不高,特别是当我们增加越来越多的客户时

是否有一种方法可以将源代码部署在一个模板API中,并让每个实例指向它(除了.env文件)?我们可以将所有内容都符号链接到此模板(除了.env文件),但是有很多文件,这似乎没有太多的好处。。想知道是否有人已经想出了更好的解决方案来做这样的事情


谢谢。

以您当前的方式实例化API有一些可扩展性优势—确保每个客户端都有一块计算、磁盘和内存将减轻单点故障、瓶颈和资源消耗。这通常会涉及一些额外的成本(但并非总是如此)

您的部署指令可以变得更加精简和自动化,以消除同步所有实例时遇到的一些挫折

将API分解为服务

您可以考虑将API分解为独立和封装的服务,这些服务可以跨多个更精简的实例使用——这意味着单个部署nano或micro服务可以(通常)被冰冷的客户端锁定实例使用。)

作为数据的客户端


根据您的数据保护和完整性需要,一种解决方案是将客户机/客户数据从文件移动到数据库,让所有客户使用相同的硬API接口,通过身份验证层加载他们的数据(并在数据库中存储任何客户机/客户配置)。然后您可以为每个人部署一次

我最终是如何做到这一点的: