Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
Javascript 在Openshift上热部署node.js应用程序时会发生什么?_Javascript_Node.js_Openshift - Fatal编程技术网

Javascript 在Openshift上热部署node.js应用程序时会发生什么?

Javascript 在Openshift上热部署node.js应用程序时会发生什么?,javascript,node.js,openshift,Javascript,Node.js,Openshift,从我所能找到的数据来看,我不知道当Openshift中热部署node.js应用程序时会发生什么 以下假设是否正确 现有的node.js应用程序已停止 启动一个新的node.js应用程序,其中包含新推送的代码 现有node.js应用程序中内存中的任何内容都不会传输到新应用程序 如果这些应用程序使用数据库(在其他盒式磁带中),则不会重新启动该数据库。现有应用程序关闭其连接,新应用程序创建一个新的连接 因此,如果需要运行新推送的node.js代码所需的数据库脚本,则不建议进行热部署 我试图从一些官方来

从我所能找到的数据来看,我不知道当Openshift中热部署
node.js
应用程序时会发生什么

以下假设是否正确

  • 现有的
    node.js
    应用程序已停止
  • 启动一个新的
    node.js
    应用程序,其中包含新推送的代码
  • 现有
    node.js
    应用程序中内存中的任何内容都不会传输到新应用程序
  • 如果这些应用程序使用数据库(在其他盒式磁带中),则不会重新启动该数据库。现有应用程序关闭其连接,新应用程序创建一个新的连接
  • 因此,如果需要运行新推送的
    node.js
    代码所需的数据库脚本,则不建议进行热部署

  • 我试图从一些官方来源找到很多关于openshift热部署的文档,但我在任何地方都没有看到比这些更多的东西

    我不是说我真的在回答你的问题,但这里有一些关于热部署方法的内容,每个人都必须阅读

    它只是创建一个服务器,监视js文件的更改, 现在,无论何时修改js,代码都会注意到并用新代码替换本地js。任何现有请求都将继续使用旧代码,而任何新的传入请求都将使用新代码。所有这些都不需要关闭服务器、跳转任何请求、过早终止任何请求,甚至不需要依赖智能负载平衡器

    我猜openshift在启用热部署标记时也会做同样的事情(我不确定,可能不是这样)。现在回到你的问题上来:

  • 停止现有的node.js应用程序,并启动具有新推送代码的新node.js应用程序:NO

  • 如果这些应用程序使用数据库(在其他盒式磁带中),则不会重新启动该数据库。现有应用程序将关闭其 连接,新应用程序将创建一个新应用程序:YES


  • 我认为回答这个问题的最好办法是去图书馆

    作为构建生命周期的一部分使用的post_部署控制操作(git commit)就是get的名称

    根据盒带的配置方式(如果您使用npm,如果您使用主管),盒带的行为将有所不同。如果使用了NPM,盒带将重新启动;如果您不使用管理器,盒带将重新启动。只有当您使用NPM且supervisor正在运行时,热部署功能才能按照中的说明工作

    热部署应用程序使您的更改能够在不重新启动应用程序盒带的情况下生效,从而提高部署速度并最大限度地减少应用程序停机时间


    我们必须区分node.js应用程序和应用程序盒带。据我现在(从中)了解,一个新的node.js应用程序是通过脚本执行创建的,但盒带不会重新启动。这意味着我的假设可能是正确的。重新启动应用程序仍然会造成停机,对吗?所以必须没有直接的关闭和重启机制,所以你的假设1和2可能是错误的,如果不看代码,我不能100%确定这里的所有语句都是正确的。通常,热部署背后的想法是防止服务器重新启动。然而,为了做到这一点,您的容器需要提供一种机制来实现这一点。在OpenShift中,为node.js应用程序执行此操作的容器似乎是supervisor。这就要求热部署能够正常工作。好的,因为我使用了NPM,所以会重新启动。这完全有道理。在我的例子中,热部署可能会避免重新启动数据库。数据库是一个单独的盒式磁带,有自己的控制脚本,并且在构建完成时会执行操作。因此,它应该独立于您的web框架运行。IE对node.js的构建(重新启动)不会重新启动db盒带。事实上,应用程序上的生成操作不应影响(因为此盒带未定义后期部署操作)。