【问题标题】:Resque or Gearman - choosing the right tool for background jobs [closed]Resque 或 Gearman - 为后台作业选择合适的工具 [关闭]
【发布时间】:2011-01-24 10:24:44
【问题描述】:

我们正在开发一个 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 或其他东西,这取决于手头的工作。

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

【问题讨论】:

  • 我不同意关闭状态。 Q 的格式很好,并且有足够的细节来提供正确的答案。欢迎辩论,并且应该为解决方案提供不止一种观点。

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


【解决方案1】:

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

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

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

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

问候,

【讨论】:

  • 谢谢安德烈亚斯。我同意,在将其部署到生产环境之前,我们会在开发/模拟环境中工作一段时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-29
  • 1970-01-01
  • 2016-08-05
  • 1970-01-01
  • 2012-09-14
  • 2016-08-03
相关资源
最近更新 更多