Gearman和失去的工人

时间:2014-07-04 12:33:51

标签: mysql symfony gearman

我想使用gearman作为webproject的队列系统。因此我尝试了齿轮手和齿轮手管,效果很好。但是知道,我问自己,如果工人,工作或服务器已经消失会发生什么(例如php错误或者原因可能是什么)。

  • 如果我在客户端(浏览器)中运行同步作业会发生什么 等待回调而工人/服务器崩溃了?
  • 如果有异步工作在工作时崩溃会怎么样?齿轮工会再次尝试(因为它被存储为mysql中的队列)还是齿轮工会忽略它?如果它不会被忽略而且工人一次又一次地崩溃会发生什么呢?

我想知道系统是否是scalabel(例如通过NFS)。你有我的例子或我可以获得的经验吗?

谢谢大家,周末愉快...

菲尔

1 个答案:

答案 0 :(得分:2)

  1. 如果服务器崩溃,您的客户端将无法连接任何内容。您如何处理这取决于您的应用程序。如果工作人员已经崩溃,并且您正在尝试运行同步任务,则客户端将等待工作人员可用,除非您提供了超时值。

  2. 如果执行异步任务且工人,齿轮工人将重新排列手头的任务。如果它抓住每个抓住它的工人,你可能会没有任何活跃的工人。 C版/ gearmand可以选择调整此行为:

    -j [--job-retries] arg(= 0)运行作业的尝试次数                                     在作业服务器删除它之前。这个                                     有助于确保不好的工作                                     崩溃所有可用的工人。默认是                                     没有限制。

  3. 如果部署损坏或易碎的代码,无论您使用哪种系统,都会遇到问题。坏代码破坏了应用程序: - )

    Gearman设置是可扩展的,但请记住,如果您使用持久性队列支持,则每个服务器需要才能拥有自己的后端。您不能跨服务器实例共享相同的数据库和表,因为只有在gearmand死亡且必须重新启动的情况下,持久性队列才会作为备份进行维护。如果需要,允许应用程序再次轻松地排队任务可能更有用。

相关问题