Heroku dyno 如何在被子下睡觉和醒来?

Posted

技术标签:

【中文标题】Heroku dyno 如何在被子下睡觉和醒来?【英文标题】:How does Heroku dyno sleeping & waking work under the covers? 【发布时间】:2016-07-16 02:43:16 【问题描述】:

这是我一直想知道的——具体来说,如何在收到连接请求时打开容器或服务器(在 x 分钟不活动后让它进入睡眠状态非常容易)。

假设我在 AWS 上有一个已关闭的 EC2 实例。在导航到其 DNS URL 或 IP 地址后,我希望服务器唤醒并将其内容提供给客户端。 Heroku 目前正在设法做到这一点,我一直想知道幕后发生了什么……而且我知道像 AWS 这样的云服务器通常不具备网络唤醒功能。

我对可能发生的事情有一些想法 - 也许睡眠测功机实际上并没有“关闭”,而是被强制闲置。它们也有可能是连接到一个更大的“母亲”服务器的容器,该服务器正在接收连接请求,假脱机休眠的服务器,然后将连接转发到激活的服务器。有建筑知识的人知道秘诀是什么吗?

您可能会说,我对开发操作或管理服务器几乎一无所知。这只是我的好奇心。

【问题讨论】:

【参考方案1】:

只是一个假设! 想象一个Kubernetes 环境,其中水平吊舱autoscaler (HPA) 配置为保持0 吊舱处于活动状态。 这将使 Node 仍然拥有保留的资源,但是未被使用,从而允许将其分配给其他客户端和/或应用程序。 当您执行wake-up 时,实际上是在配置HPA 以使活动的pod 保持在0 之上,给人一种关闭并重新启动应用程序的印象。

【讨论】:

Kubernetes 与 Amazon Web Services 有何关系? 我目前认为,具有可用性、可扩展性和可重复性的出色服务基于 Kubernetes,就 AWS 而言,基于 EKS 服务。正如一些 AWS re: Invent 中所示,Heroku 使用这些服务是有弹性的。【参考方案2】:

AWS EC2 有一个 API,您可以使用它来控制/配置服务器,就像通过他们的仪表板一样。

【讨论】:

启动 EC2 实例需要更长的时间。 Heroku dynos 在几秒钟内启动,有时是 2、3 秒。

以上是关于Heroku dyno 如何在被子下睡觉和醒来?的主要内容,如果未能解决你的问题,请参考以下文章

Heroku中的进程类型和Dynos有啥区别

如何在 Heroku 上使用 Node.js 通信 Web 和 Worker dynos?

如何通过 Procfile 在 Heroku 上禁用 Rails web dyno?

如何关闭我的 heroku 应用程序?

是否可以在没有 Web dyno 的情况下将 Node.js 应用程序部署到 Heroku?

如何使用 springboot-gradle 为多 Web 服务器设置 dynos 和 procfile