您好我正在研究的项目可能是在Heroku上使用RoR,它为另一个运行C ++服务器的EC2实例提供web服务。我知道有一些材料可以从Heroku(https://devcenter.heroku.com/articles/external-services)访问EC2实例,但我没有看到相反的方法。
我想知道如果两个实例都托管在美国东部地区,是否有办法从EC2 C ++服务器到Heroku服务执行低延迟请求? (在上面的链接中提到的某些东西,只是在相反的方向。)
我确信在C ++实例和Heroku之间使用正常的HTTP请求会有效,但我想知道是否有更好的解决方案。谢谢!
答案 0 :(得分:1)
我不熟悉Heroku,但由于它们在EC2连接上运行,因此两个实例都应该相当简单。为了使每个实例之间的延迟最小,您应该在美国东部地区设置C ++实例并使用实例的内部DNS。
如果你想从你的Heroku实例访问你的C ++实例,你可以使用net-ssh gem,它允许你通过ssh连接,并在你的C ++实例上直接做任何你想做的事。
在某些情况下,对C ++实例的处理需要一些时间,而rails应用程序必须“等待”结果,因此您可以考虑使用队列服务在实例之间进行通信。一个例子是Amazons SQS服务:只需设置一个队列,让C ++ - 实例将rails app所需的信息发布到队列中。您必须编写由cron定期启动的rake任务,或者您可以编写一个在后台连续运行的守护程序,以便rails应用程序从队列中收集信息。
写一个rake任务很简单,这应该让你开始:rake, rake, rake your boat这里有一个Railscast,可以给你一些编写守护进程的指示: #129 Custom Daemon