2014-12-29 27 views
4

documentation我可以发现,我不明白在Openshift中热门部署node.js应用程序时究竟发生了什么。在Openshift上热点部署node.js应用程序会发生什么?

以下假设是否正确?

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

回答

0

我想回答这个问题最好的办法就是去source

作为构建生命周期的一部分(git commit),post_deploy控件操作是get的调用。

根据墨盒的配置方式(如果您使用npm以及您使用的是管理员),墨盒的行为会有所不同。如果使用NPM,则重新启动盒式磁带,如果不使用监督器,盒式磁带将重新启动。它只有在您使用NPM并且管理程序正在运行时,不是,热部署功能是否如documentation中所述那样工作。

热部署应用程序可以使您的更改无需重新启动应用程序盒式磁盘即可生效,从而提高部署速度并最大限度地减少应用程序停机时间。

+0

好的,因为我使用NPM,将会有一个重新启动。它总是有意义的。就我而言,热部署可能会避免数据库重新启动。 – JVerstry

+1

该数据库是一个独立的盒式磁带,具有自己的控制脚本以及构建完成时的操作。所以它应该独立于您的Web框架运行。 IE构建(重新启动)到node.js不会重新启动db数据盒。实际上构建操作,对应用程序不应该有效(一个[mysql盒式磁带](https://github.com/openshift/origin-server/blob/master/cartridges/openshift-origin-cartridge-mysql/bin/control# L256-L283),因为此盒式磁带未定义post_deploy操作)。 –

1

我试图找出一大堆从上openshift热部署的官方消息文档,但我没有看到任何东西比这些lines任何地方更多,

我就不多说了,我真的回答你的问题,但这里是一些关于热部署的方式,每个人都必须阅读this

它只是创造该款腕表更改您的JS文件, 现在一台服务器,您需要修改JS任何时候,代码会发现和替换本地的js与新的代码。任何现有的请求都将继续使用旧代码,而任何新的传入请求将使用新代码。所有这些都不会关闭服务器,反弹任何请求,过早地终止任何请求,甚至不依赖智能负载平衡器。

我猜openshift在启用热部署标记时会做同样的事情(我不确定,但情况可能并非如此)。现在,在这种情况下,回到你的问题:

  1. 现有的Node.js应用程序停止,与新推代码的新的Node.js应用程序启动:NO

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

+0

我们必须区分node.js应用程序和应用程序盒式磁带。据我了解(从https://developers.openshift.com/en/managing-modifying-applications.html#hot-deployment),一个新的node.js应用程序创建与脚本执行,但墨盒是没有重新启动。这意味着我的假设可能是对的。 – JVerstry

+0

是的。墨盒根本没有重新启动。 –

+0

重新启动应用程序仍然会造成停机时间吗?所以不能直接关闭和重新启动机制,所以你的假设数字1和2可能是错误的 –

相关问题