单个 Heroku Web Dyno 到底是啥?

Posted

技术标签:

【中文标题】单个 Heroku Web Dyno 到底是啥?【英文标题】:What exactly is a single Heroku Web Dyno?单个 Heroku Web Dyno 到底是什么? 【发布时间】:2014-02-23 02:34:07 【问题描述】:

根据Why do people use Heroku when AWS is present? What distinguishes Heroku from AWS?,似乎多个 Heroku Web Dynos 运行在单个 Amazon EC2 CPU 上。

在一个 CPU 上运行多少个 Dynos?规格是什么?

在一个 CPU 上运行的大量 Dynos 是否会影响其他 Dynos?

【问题讨论】:

他们对他们有点模糊...... 值得一提的是,Heroku 路由网格并不那么智能,它会在您的测功机上随机分配请求。在有大量 dyno 的情况下,算法可以选择性地将其选择偏向与进行选择的路由器位于同一 AWS 可用区域中的 dyno。 【参考方案1】:

当您部署 Heroku 应用程序时,您会使用一个或多个 buildpacks 构建一个名为 slug 的虚拟机映像。当一个虚拟机实例从这个slug 启动时,它被称为dyno

每个dyno 在您的应用程序虚拟机中运行一个进程。 Heroku 没有正式描述如何配置 dyno,但轶事分析表明,许多 dyno 在单个 Amazon XL EC2 实例上运行,在所有 dyno 之间共享磁盘、CPU 和内存。共享资源时肯定有“吵闹的邻居”,但没有提供直接数据或统计数据。我只能分享我的轶事经验,这确实发生了。

每个测功机都在 EC2 主机中隔离,但共享底层资源。这类似于docker 和其他应用程序容器的工作方式。

Dynos 已在 Heroku Routing Mesh 中注册,这是一种智能负载均衡器,可将传入的 Web 流量映射到应用程序 dyno。每个测功机都有一个分配的 TCP 端口,该端口已在路由网格中注册。

Heroku 是基于 Amazon EC2 的更高级别的服务。他们以比原始 EC2 托管更高的成本实施部署、供应、监控、可用性和自动扩展。您可以运行自己的 EC2 实例,但需要自己实现这些服务。

免责声明:我不是 Heroku 员工,除了作为大型、高流量 Rails 应用程序的用户外,我对 Heroku 没有任何特殊知识。

更新: Heroku 今天早上推出了PX size dynos,它托管在一个专用的 EC2 c1.xlarge 实例上,它解决了我上面提到的所有嘈杂邻居和资源争用问题.在一个沉重的价格标签。详情在这里:https://blog.heroku.com/archives/2014/2/3/heroku-xl

【讨论】:

嗯,它是一个“专用”的 ec2 实例,它本身是共享的,所以仍然存在嘈杂邻居的问题。之前它更像是一个吵闹的室友和吵闹的邻居:) 一些测功机在共享的底层 EC2 实例上,一些(PX 类)测功机在专用 EC2 实例上。 同意,但我的意思是“专用”ec2 实例位于共享服务器上,它不是具有单个实例的专用服务器,因此“嘈杂邻居”的概念是仍然存在。 是的,虚拟机一直向下。 虚拟机镜像是什么意思?什么是构建包?

以上是关于单个 Heroku Web Dyno 到底是啥?的主要内容,如果未能解决你的问题,请参考以下文章

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

Heroku到底是啥?

你能以编程方式访问当前的 Heroku dyno id/name 吗?

每月一天限制Heroku dyno

为啥我的 heroku 工人 dyno 不工作?

即使在 Procfile 中添加了 Heroku 工人 dyno 也没有出现