Architecture 在农场中共享定期任务的最佳策略

Architecture 在农场中共享定期任务的最佳策略,architecture,server-farm,Architecture,Server Farm,我这里有个问题。假设您有一项业务定期任务,例如每月生成余额。该任务可以在服务器场中运行,因此,如果运行定期任务的计算机失败,则必须将其传递给另一台计算机 那么,我怎样才能坚持一项周期性的任务,并使它在农场里安全呢?我一直在一个持久的、共享的队列中思考,但我被卡住了 有什么想法吗 提前感谢。从1到>1总是一大步 选择1 您需要(除其他事项外): 监督机器 心跳协议/故障检测 作业调度器的选择协议 作业调度器 工作报告 等等 选择2 只需让多台机器执行该任务,并从其中一台机器中选择成功的输出(如

我这里有个问题。假设您有一项业务定期任务,例如每月生成余额。该任务可以在服务器场中运行,因此,如果运行定期任务的计算机失败,则必须将其传递给另一台计算机

那么,我怎样才能坚持一项周期性的任务,并使它在农场里安全呢?我一直在一个持久的、共享的队列中思考,但我被卡住了

有什么想法吗


提前感谢。

从1到>1总是一大步

选择1 您需要(除其他事项外):

  • 监督机器
  • 心跳协议/故障检测
  • 作业调度器的选择协议
  • 作业调度器
  • 工作报告
等等

选择2
只需让多台机器执行该任务,并从其中一台机器中选择成功的输出(如果您觉得需要,也可以使用多数投票)。

从1到>1总是一大步

选择1 您需要(除其他事项外):

  • 监督机器
  • 心跳协议/故障检测
  • 作业调度器的选择协议
  • 作业调度器
  • 工作报告
等等

选择2
只需让多台机器执行任务,并从其中一台机器中选择成功的输出(如果您觉得需要,也可以使用多数投票)。

您的问题中缺少很多因素。您如何访问任务?它是web服务吗?远程过程调用?它是否自行运行,然后将结果存储在共享文件夹中

如果只是web服务,那么解决方案可能只是按顺序查询它们,如果其中一个不可用,则继续下一个。。。可能rpc可以用相同的过程来处理。当然,这并不能很好地扩展,它有点特别,但如果你没有时间做其他事情,它可能会起作用

如果你有足够的时间和金钱来进行真正的扩展,你应该看看哪一个是你所寻求的容错的基础。当然,这意味着需要一个控制器(如@jldupont所称的监控机器)以及大量的机制和努力来将所有东西保持在一起


只有当你真的需要它的时候,它才是值得的。在时间和金钱上都是一项巨大的投资,所以不要仅仅因为它很酷就大胆地去做。

你的问题缺少很多因素。您如何访问任务?它是web服务吗?远程过程调用?它是否自行运行,然后将结果存储在共享文件夹中

如果只是web服务,那么解决方案可能只是按顺序查询它们,如果其中一个不可用,则继续下一个。。。可能rpc可以用相同的过程来处理。当然,这并不能很好地扩展,它有点特别,但如果你没有时间做其他事情,它可能会起作用

如果你有足够的时间和金钱来进行真正的扩展,你应该看看哪一个是你所寻求的容错的基础。当然,这意味着需要一个控制器(如@jldupont所称的监控机器)以及大量的机制和努力来将所有东西保持在一起


只有当你真的需要它的时候,它才是值得的。在时间和金钱上都是一项巨大的投资,所以不要仅仅因为它很酷就大胆地去做。

不确定你的技术堆栈是什么,但看看(或者你是否使用.NET堆栈)。Quartz是一个具有强大故障转移/HA功能的企业作业调度程序。

不确定您的技术堆栈是什么,但请查看(或者您是否使用.NET堆栈)。Quartz是一个企业作业调度器,具有强大的故障转移/HA功能