Ruby on rails Rails:我可以在不同的服务器上运行后台作业吗?
是否可以在一台服务器上托管应用程序,并在另一台服务器上对作业进行排队 可能的例子:Ruby on rails Rails:我可以在不同的服务器上运行后台作业吗?,ruby-on-rails,ruby-on-rails-3,delayed-job,beanstalkd,Ruby On Rails,Ruby On Rails 3,Delayed Job,Beanstalkd,是否可以在一台服务器上托管应用程序,并在另一台服务器上对作业进行排队 可能的例子: 两个不同的EC2实例,一个使用主服务器,另一个使用排队服务 在Heroku中托管应用程序,并将EC2实例与排队服务一起使用 可能吗 谢谢当然可以。我们在我工作的地方推迟了工作安排 要使其正常工作,有几个要求: 服务器必须有同步时钟。只要服务器时区都设置为相同,这通常不是问题 所有服务器都必须访问同一个数据库 要做到这一点,您只需在两台(或全部,如果超过两台)服务器上都有相同的应用程序,并在您想要处理作业的任何服务
谢谢当然可以。我们在我工作的地方推迟了工作安排 要使其正常工作,有几个要求:
接口
服务器、一个db
服务器和几个工作者
服务器。接口
服务器通过Apache/Passenger为应用程序提供服务,将Rails应用程序连接到db
服务器。workers
拥有相同的应用程序,尽管Apache没有运行,您无法通过http访问该应用程序。另一方面,他们确实拖延了工人们的工作。在一个常见场景中,接口
服务器在数据库
中对作业进行排队,而工作者
服务器处理这些作业
警告一句:如果您依赖于应用程序中的物理文件(附件、日志文件、下载的XML或其他文件),那么您很可能需要像S3这样的解决方案来保存这些文件。这是因为各个服务器可能没有实际的文件。例如,如果您的用户要在面向web的服务器上上载其个人资料图片,则文件可能存储在该服务器上。如果您有另一台服务器来调整配置文件图片的大小,那么该映像将不存在于辅助服务器上。只是为了提供另一个可行的选择:您可以使用一个新的辅助服务器服务,它完全依赖于EC2内的一个弹性云服务器场 通过这种方式,您可以对要运行的作业进行排队/调度,它们将在跨越多个服务器的大量线程之间并行化,而无需担心基础设施 不过,对数据库的处理也是一样的——它需要从外部进行访问
完整披露:我帮助构建。感谢您的回复。我现在了解了如何使用自己的服务器来实现这一点。使用Heroku+My server有没有办法做到这一点?这实际上取决于Heroku是否允许从外部服务器直接访问其数据库。我认为他们不会,所以答案是“不会”。那么
挂载如何?这不是一个可靠的解决方案吗?在不同的服务器上运行后台作业的主要原因是为了保留CPU和内存。使用挂载并不能真正做到这一点。