【问题标题】:Are databases attached to dynos in heroku?数据库是否附加到heroku中的测功机?
【发布时间】:2012-09-25 09:20:49
【问题描述】:

我想试试heroku,但不太确定我是否正确理解了所有术语。

我有一个带有 node.js 和 redis 的应用程序,我的主要关注点是扩展和速度。

在传统环境中,我会在负载均衡器前面有两台服务器;两台服务器完全独立,共享相同的代码并拥有自己的 redis 实例。两台服务器互不相识(数据由第三方服务器同步,但在这种情况下不感兴趣)。

然后我会在他们面前推一个负载平衡器。知道我可以轻松扩展,因为两个实例彼此不知道,如果我愿意,我可以添加更多实例。

我可以在测功机中镜像该环境还是无法将 redis 实例附加到测功机?

如果有不清楚的地方,请询问,因为我是 paas 的新手!

据我了解:我将为我的节点应用程序提供一个测功机,然后添加它的另一个实例。这很酷,但它们会共享相同的 redis 还是我可以让它们独立?

【问题讨论】:

    标签: node.js heroku redis


    【解决方案1】:

    你最好忘记传统架构,试着这样想:

    • dyno 是处理 HTTP 请求的进程,是 heroku 上应用实例的绝对最小值。
    • 对于一个应用程序实例,您可以拥有任意数量的测功机,并且 它是完全透明的。无需考虑服务器,负载 平衡等...一切都得到照顾。
    • redis 实例基本上是应用程序使用的服务 例如,因此通过一个或多个测功机。再次,服务器,加载 平衡等一切都得到照顾。

    也许您想再次查看 heroku.com 上的工作原理。

    【讨论】:

    • 谢谢。所以,如果我理解正确,多个 redis 实例是不可能的/不需要的,因为服务在应用程序实例级别运行?或者我可以运行我的应用程序的多个实例(这基本上是我想要的)?
    • 我仔细看了看。我想可以通过附加两个redis服务器并运行两个运行不同环境变量的测功机(其中变量在要使用的数据库之间划分)。
    • 有可能,是的,当然!对于多个环境,请检查:devcenter.heroku.com/articles/multiple-environments 基本上你应该设置两个实例(可以有 1..n 个 dynes),每个都获取它的 redis 实例。
    • 我有一个带有 2 个 dynos 和 redis 的实例启动并运行。谢谢。但是两个实例不会导致两个 URL 吗?
    • 我一直在想,如果两个 dynos 和一个在两个不同的 redis 实例上启动多个连接的 redis 管理器会是一个解决方案(所以一个应用程序实例位两个 dynos 和两个 redis)。
    【解决方案2】:

    您可以根据需要为一个 URL 设置任意数量的测功机 - 您只需更改控制器中的值。这实际上是 Heroku 的最佳特性之一——你不关心服务器,你增加了 dyno 的数量,从而增加了可以同时处理的请求数量。

    与 redis 相同 - 添加实例基本上不起作用,您只需切换到性能更高的计划,请参阅https://addons.heroku.com/redistogo。再次,忘记服务器。

    【讨论】:

    • 感谢您的回答。因此,redis2go 计划确实增加了 db 的数量。然后我不能从不同的测功机连接到不同的 db 吗? RAM 是按总还是按 db 测量的?我真希望他们能解释一下。
    • 不,您不能从 dynos 连接到不同的数据库。认为RAM是总共的。 Heroku 支持在回答我可能只提供一点帮助的问题方面非常出色且快速。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    • 2012-07-26
    相关资源
    最近更新 更多