0

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

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

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

4

1 回答 1

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 自定义守护程序

于 2012-06-08T09:26:39.240 回答