为 Resque 工作人员提供单独的服务器

为 Resque 工作人员提供单独的服务器

我正在尝试为 Rails 项目划分几台服务器,其中一部分是考虑将 Resque 工作程序隔离到它们自己的盒子中。我已经将 Redis 拆分出来了,但将 Resque 工作程序放在其他地方是否很常见?它们是否需要与应用程序本身绑定?

如果可以做到,是否有关于该主题的常见最佳实践或文章?如果没有,我是否最好在运行 Resque 工作程序的应用服务器上投入更多 RAM?

我计划使用 foreman 来监控这一切并创建新贵的工作。

答案1

我正在尝试为 Rails 项目划分一些服务器,其中一部分是考虑将 Resque 工作程序隔离到它们自己的盒子中。我已经将 Redis 拆分出来了,但将 Resque 工作程序放在其他地方是否很常见?

我将使其更通用一些。将作业处理工作者放在与应用程序不同的机器上是否很常见?当然。几乎在任何作业队列处理架构中,您都会看到这种情况。

它们是否需要与应用程序本身绑定?

不。应用程序可以编写为实时读取并将更新传递到队列……而它本身无法处理更新。它们只是应该这样做……[若有所思地望向远方]在云端. 无论是全部在一台机器上还是分布在庞大的网络上,只要有良好的分离设计就没问题。

如果可以做到,是否有关于该主题的常见最佳实践或文献?

回答“不”似乎不太妥当……但我确实不知道有什么。每个人在扩展方面面临的挑战都不同。能够编写可扩展的代码只是经验的体现。您可以尝试阅读其他人过去如何扩展应用程序的故事并尝试从中吸取教训,但没有包罗万象的“扩展指南”。

使用松散耦合和良好的流程分割(在流程图意义上),以便尽可能将它们分开。不要想太多。

如果没有的话,我是否最好在运行 Resque 工作程序的应用服务器上投入更多 RAM?

只要你能做到,而且没有其他瓶颈,就去做吧。扩展与其他任何事情一样,都是成本/收益评估。不过,请仔细考虑一下,你是否会达到机器所能容纳的最大容量,而突然发现获得一个支持更多内存的平台非常昂贵。如果你认为你不会达到那个程度,不要为此失眠。

相关内容