12

从 gearman 的主页上,他们提到运行多个作业服务器,所以如果一个作业服务器死了,客户端可以选择一个新的作业服务器。鉴于下面的陈述和图表,作业服务器似乎不相互通信。

我们的问题是那些在死掉的作业服务器中排队的作业会发生什么?为这些服务器提供高可用性以确保作业不会因故障而中断的最佳实践是什么?

您可以运行多个作业服务器,并让客户端和工作人员连接到他们配置的第一个可用作业服务器。这样,如果一个作业服务器死机,客户端和工作人员会自动故障转移到另一台作业服务器。您可能不想运行太多的作业服务器,但拥有两三个是冗余的好主意。

在此处输入图像描述

资源

4

1 回答 1

3

据我所知,目前还没有合适的方法来处理这个问题,但是只要您使用永久队列运行两个作业服务器(使用 MySQL 或其他数据存储 - 只是不要对两个服务器使用相同的实际队列),您只需重新启动作业服务器,它就会从数据库中加载其队列。这将允许所有排队的任务提交给可用的工作人员,即使在服务器已经死亡之后。

但是,当作业服务器出现故障时,没有自动执行此操作的方法,因此,如果作业服务器和数据存储都出现故障(本地运行的服务器都出现故障),任务将处于不确定状态,直到它重新联机。

永久队列仅在启动时读取(并在提交和完成任务时插入/删除)。

我不确定将此类功能添加到 gearmand 所需的复杂性以及它是否真的需要,但简单的“添加任务、分发任务、完成任务”——服务器之间的通知不应该太复杂而无法处理。

于 2011-10-17T14:23:58.140 回答