Deployment Heroku部署过程到底是如何工作的?
当我将新版本的服务部署到Heroku时,会发生什么 假设我现在有N个网络动态节点在线,其中M个当前正在为请求提供服务Deployment Heroku部署过程到底是如何工作的?,deployment,heroku,Deployment,Heroku,当我将新版本的服务部署到Heroku时,会发生什么 假设我现在有N个网络动态节点在线,其中M个当前正在为请求提供服务 在新版本开始上线之前,它们是否都关闭了?当前正在服务的任何挂起请求会发生什么情况 有停机时间吗?(假设我只有一个无状态服务,没有任何迁移) 是否有用于执行自定义迁移(例如迁移数据库表)的钩子 我是否可以启动运行新版本的N台服务器,让它们开始服务请求,并且仅在不服务任何请求时才关闭以前的N台服务器 答案是否取决于堆栈/语言?(Aspen/Bambol/Cedar、Ruby/Nod
- 在新版本开始上线之前,它们是否都关闭了?当前正在服务的任何挂起请求会发生什么情况李>
- 有停机时间吗?(假设我只有一个无状态服务,没有任何迁移)
- 是否有用于执行自定义迁移(例如迁移数据库表)的钩子
- 我是否可以启动运行新版本的N台服务器,让它们开始服务请求,并且仅在不服务任何请求时才关闭以前的N台服务器
- 答案是否取决于堆栈/语言?(Aspen/Bambol/Cedar、Ruby/Node.js/Java/…)
我没有任何关于这方面的官方文件,只是相反的帖子(有人说很热)。是否有关于部署过程和上述问题的官方详细信息?我可以回答此问题的“是否有用于执行自定义迁移(例如,迁移数据库表)的钩子?”。我通过编写一个shell脚本来处理运行迁移,该脚本在发出“git-push-heroku”之后立即执行“heroku-rake-db:migrate”。我不知道是否有更“hook”-y的方法来实现这一点。以下是Heroku部署期间发生的情况(当前为2011年10月20日*)[1]:
- Heroku收到你的git推送
- 新版本是根据应用程序的最新版本编译并存储的
- [这些几乎同时发生]
- dyno网格收到终止[2]应用程序所有运行进程的信号
- dyno网格将发出信号,启动应用程序的新进程
- dyno网格会发出信号,以统一应用程序的所有空闲进程
- HTTP路由器收到信号,开始将HTTP流量路由到运行新版本的web dynos
Heroku或任何其他专有框架在这里似乎不太受欢迎。@RHT-1725问题似乎“足够受欢迎”,不是吗?你是对的,那么它很受欢迎,我认为它是专有的吗?Heroku是一家云托管提供商。您将web应用程序上载到Heroku,Heroku会自动运行。如果您使用它,则可以通过rake deploy在部署过程中执行类似操作,您还可以设置HTTP deploy挂钩,调用应用程序本身上的端点,从而触发迁移等。感谢提供详细信息。你是Heroku的员工吗?如果没有,你在哪里找到了细节?另外,了解哪些受支持的web服务器提供了如您所述的优雅关机功能也是很有意思的。。。也许这适合另一个问题。