mongodb - 为 MongoDB 调度 MapReduce 作业

标签 mongodb scheduled-tasks

这更多是一个实现问题,但是使用像 cron 这样简单的东西来为 MongoDB 安排像 mapreduce 这样的任务有什么缺点吗?说需要每小时执行一次,这似乎是一种合适的方式......但我想我只是问,因为那里有所有流行的工作排队系统,比如 Resque 和其他人。

我想我的问题更像是,cron 是否提供了足够可靠的解决方案?想法?

最佳答案

Cron 已经使用了几十年,并且相当可靠和稳固;如果您的 cron 不可靠,那么我建议您与您的操作系统供应商进行一次严厉的讨论。此外,MongoDB 文档讨论了 cron 作业(例如,谷歌“site:mongodb.org cron”),因此,据推测,MongoDB 可以预期 cron 作业。

也就是说,如果您已经为另一个调度系统设置了一堆基础架构,那么可能没有理由将 cron 用于 MongoDB,而将其他东西用于其他任务。

在任何情况下,如果您的 cron 作业可能需要足够长的时间来重叠并且您一次只希望运行一个,您可能希望在一个简单的 PID 文件锁定系统上分层:

  • cron 作业在启动时会查找 PID 文件。
  • 如果找到该文件,它会从该文件中读取旧作业的 PID 并检查它是否仍在运行。
    • 如果旧的正在运行,那么新的会报错并退出。
    • 如果旧的没有运行,那么新的将继续运行。
  • 当新作业决定可以开始时,它会将其 PID 写入 PID 文件。
  • 新作业完成后,它会在退出前立即删除 PID 文件(或使用 atexit 处理程序或您的环境支持的任何类似功能)。

关于mongodb - 为 MongoDB 调度 MapReduce 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6285171/

相关文章:

node.js - 我是否使用 mongoose 正确执行此 API Put 请求?

javascript - 统计 Meteor 中帖子的评论数

javascript - 使用 Node-schedule 安排作业

C# - 安排任务每 X 分钟运行一次

powershell - 任务计划程序 PowerShell 启动进程未运行

mongodb - ElasticSearch架构和托管

node.js - 蒙戈访问量最大

mongodb聚合嵌入文档值

asp.net - 使用计划任务运行 ASPX 页面时出现问题

windows - SchTasks/Delete 是同步操作吗?