0

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

那么,我如何才能坚持定期任务并使其在农场安全?我曾在一个持久和共享的队列中思考过,但我很困惑。

有任何想法吗?

提前致谢。

4

3 回答 3

1

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

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

如果您有真正扩展所需的时间和金钱,您应该考虑控制重新配置,这是您所寻求的容错类型的基础。当然,这将意味着一个控制器(@jldupont 称之为监督机器)以及将所有东西保持在一起的大量机制和努力。

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

于 2009-12-11T11:44:26.887 回答
1

从 1 到 >1 始终是一大步。

选项1

您将需要(除其他外):

  • 主管机
  • 心跳协议/故障检测
  • 作业调度程序的选举协议
  • 作业调度程序
  • 工作报告

等等

选项 2

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

于 2009-12-11T11:36:11.787 回答
1

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

于 2009-12-20T06:33:11.377 回答