【问题标题】:Accessing a service on a Heroku app from another EC2 instance从另一个 EC2 实例访问 Heroku 应用程序上的服务
【发布时间】:2012-06-12 06:30:23
【问题描述】:

您好,我正在开发一个项目,可能正在 Heroku 上使用 RoR,该项目为另一个运行 C++ 服务器的 EC2 实例提供 Web 服务。我知道有从 Heroku (https://devcenter.heroku.com/articles/external-services) 访问 EC2 实例的材料,但我还没有看到相反的材料。

我想知道如果两个实例都托管在美国东部地区,是否有办法从 EC2 C++ 服务器向 Heroku 服务发出低延迟请求? (沿着上面链接中提到的路线,只是在相反的方向。)

我确信在 C++ 实例和 Heroku 之间使用正常的 HTTP 请求会起作用,但我想知道是否有更好的解决方案。谢谢!

【问题讨论】:

    标签: ruby-on-rails heroku amazon-ec2 amazon-web-services


    【解决方案1】:

    我不熟悉 Heroku,但由于它们在 EC2 连接上运行,因此两个实例都应该相当简单。为了尽量减少每个实例之间的延迟,您应该在美国东部地区设置您的 C++ 实例并使用实例的内部 DNS。

    如果您想从 Heroku 实例访问您的 C++ 实例,您可以使用 net-ssh gem,它允许您通过 ssh 连接并直接在您的 C++ 实例上执行任何您想做的事情。

    在某些情况下,对 C++ 实例的处理需要一些时间,并且您的 Rails 应用程序必须“等待”结果,因此您可以考虑使用队列服务在实例之间进行通信。一个例子是 Amazon 的 SQS 服务:只需设置一个队列,然后让 C++ 实例将 rails 应用程序需要的信息发布到队列中。您必须编写一个由 cron 定期启动的 rake 任务,或者您可以编写一个在后台连续运行的守护进程,让 rails 应用程序从队列中收集信息。

    编写一个 rake 任务很容易,这应该可以帮助您入门:rake, rake, rake your boat 这里是一个 Railscast,它应该为您提供一些编写守护程序的指导: #129 Custom Daemon.

    【讨论】:

    • 感谢您的回答,我认为当 C++ 实例想要调用 Heroku 上的 rails 应用程序时,这会以相同的方式工作吗?但是,正如您所说您不熟悉 Heroku,您能否阐明是否必须进行任何类型的安全配置才能使其正常工作?
    • 如果你想通过 SSH 连接到你的 Heroku 实例,你必须打开端口 22。或者你可以设置另一个 SQS 队列来向你的 Rails 应用程序发送任务/命令(记得为rails 应用程序来监听来自 SQS 队列的命令)。
    猜你喜欢
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 2018-02-27
    • 2017-12-27
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多