Resque或Gearman - 为后台工作选择合适的工具

时间:2010-03-06 10:55:44

标签: ruby-on-rails asynchronous redis gearman resque

我们正在开发一个Web应用程序,其中有大约50%的写入请求,我们最终将数据推送到多个数据存储,并在这些数据存储中插入和更新大量记录。为了缩短响应时间,我们希望在后台异步处理此类请求。

我们的Web应用程序是用Ruby on Rails编写的。

我倾向于的两种解决方案是Resque和Gearman。

Resque:更多信息:http://github.com/blog/542-introducing-resque Resque似乎非常适合Ruby,它特别适用于后台作业处理。 “后台作业可以是任何响应执行的Ruby类或模块。您现有的类可以轻松转换为后台作业,或者您可以专门创建新类来完成工作。”

Gearman:它并不仅仅适用于异步处理的后台作业,但这绝对可以做到。显然更加强大,或者看起来如此。 Gearman的另一个优点是,虽然您的客户端代码可能在Ruby中,但工作人员代码可能就在PHP中。虽然现在我们完全是Ruby on Rails应用程序,谁知道将来我们可能会根据手头的工作使用PHP或其他东西。

你会推荐什么?你有两个经验吗?在两者之间进行选择时,我应该记住哪些现实生产中的挑战?我甚至在这里比较苹果和苹果吗?

1 个答案:

答案 0 :(得分:2)

当我在寻找可以为异步提供工作负载分配的分布式分叉机制时,我对Gearman有一些经验。在集群环境中处理。

我可以告诉你,这是在“模拟”情况下工作的,其中异步处理被分派到2台机器上(每台机器上有2名工人= 4名工人)。不是在一个真实的情况下(无论告诉你什么)。当“模拟”提供有用的信息时,将实施真实案例场景。

您要选择的机制只是工作负载分配中的一个因素,因此当并行工作的分布式“Workers”开始在数据存储上写入时,请确保不会最终导致数据损坏或无效。

我建议采用我所做的“模拟”方法,然后在决定使用哪种方法之前进行测试。

的问候,