HA gearman 作业服务器的最佳实践是啥
Posted
技术标签:
【中文标题】HA gearman 作业服务器的最佳实践是啥【英文标题】:What's best practice for HA gearman job serversHA gearman 作业服务器的最佳实践是什么 【发布时间】:2011-12-01 15:46:23 【问题描述】:从 gearman 的主页上,他们提到运行多个作业服务器,因此如果一个作业服务器死了,客户端可以选择一个新的作业服务器。鉴于下面的陈述和图表,作业服务器似乎不相互通信。
我们的问题是那些在死掉的作业服务器中排队的作业会发生什么?为这些服务器提供高可用性以确保作业不会因故障而中断的最佳做法是什么?
您可以运行多个作业服务器,并让客户端和工作人员连接到他们配置的第一个可用作业服务器。 这样,如果一台作业服务器死机,客户端和工作人员会自动故障转移到另一台作业服务器。您可能不想运行太多作业服务器,但拥有两三个是冗余的好主意.
Source
【问题讨论】:
【参考方案1】:据我所知,目前没有适当的方法来处理这个问题,但只要您使用永久队列运行两个作业服务器(使用 mysql 或其他数据存储 - 只是不要对两者使用相同的实际队列服务器),您只需重新启动作业服务器,它就会从数据库中加载其队列。这将允许将所有排队的任务提交给可用的工作人员,即使在服务器死机之后也是如此。
但是,当作业服务器出现故障时,没有自动执行此操作的方法,因此如果作业服务器和数据存储都出现故障(本地同时运行的服务器出现故障),任务将处于不确定状态,直到它重新联机.
永久队列仅在启动时读取(并在提交和完成任务时插入/删除)。
我不确定将此类功能添加到 gearmand 所需的复杂性以及它是否真的需要,但简单的“任务添加、任务分发、任务完成”——服务器之间的通知不应该太复杂而无法处理。
【讨论】:
以上是关于HA gearman 作业服务器的最佳实践是啥的主要内容,如果未能解决你的问题,请参考以下文章
DAO(数据访问对象)最佳实践 - 我看到的示例同时使用 DAO 和服务对象,这里的最佳实践是啥?
MVC 验证 - 使用服务层保持 DRY - 最佳实践是啥?