在 gearman 的主页上,他们提到运行多个作业服务器,因此如果一个作业服务器挂掉,客户端可以选择一个新的作业服务器。根据下面的陈述和图表,作业服务器似乎不相互通信。
我们的问题是那些在死亡的作业服务器中排队的作业会发生什么?为这些服务器提供高可用性以确保作业不会因故障而中断的最佳实践是什么?
您可以运行多个作业服务器,并使客户端和工作人员连接到为其配置的第一个可用作业服务器。这样,如果一台作业服务器挂掉,客户端和工作人员会自动故障转移到另一台作业服务器。您可能不想运行太多作业服务器,但拥有两到三个冗余是一个好主意。
Source http://gearman.org/index.php#how_is_gearman_useful
据我所知,目前没有正确的方法来处理这个问题,但只要您使用永久队列运行两个作业服务器(使用 MySQL 或另一个数据存储 - 只是不要为两个服务器使用相同的实际队列),您只需重新启动作业服务器,它就会从数据库加载其队列。这将允许所有排队的任务提交给可用的工作人员,即使在服务器挂掉之后也是如此。
然而,当作业服务器出现故障时,没有自动方法可以执行此操作,因此,如果作业服务器和数据存储都出现故障(本地运行的服务器都出现故障),任务将处于不确定状态,直到它重新上线。
永久队列仅在启动时读取(并在任务提交和完成时插入/删除)。
我不确定向 gearmand 添加此类功能所需的复杂性以及是否确实需要它,但简单的“添加任务、分发任务、完成任务”——服务器之间的通知不应该太复杂而无法处理。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)