【发布时间】:2014-04-25 10:47:10
【问题描述】:
我必须在 AppEngine 的多租户环境中执行重复性任务。真正的用例是“实施经常性发票”。
我怀疑 3 种方法,从集中管理到分散每个命名空间到分散每个计划任务。寻求反馈。
集中管理:有一个“主任务队列”或 cron 作业定期检查必须执行哪些命名空间作业,然后将它们启动。每个命名空间查找要完成的任务。
每个命名空间去中心化:每个命名空间都有一个任务或 cron 作业,定期检查它所属的命名空间是否需要完成。
每个任务去中心化:当在命名空间中创建新作业时,立即在未来所需的时间为该任务安排一个任务队列。没有“管理”任务队列。
我对每种方法都提出了问题:
集中管理:CONTRA -> 无法扩展,它需要遍历所有“客户”命名空间。 PRO -> 更容易管理/控制正在发生的事情。
每个命名空间去中心化:两全其美?
每个任务去中心化:PRO -> 扩展性很好,没有管理开销; CONTRA -> 版本升级时怎么办,如果有错误和调度无法正常工作,你必须纠正……听起来像是一场噩梦。如果调度失败怎么办?我能否 100% 保证一年后计划的任务将得到执行?
有人有好的建议/经验吗?
【问题讨论】:
标签: google-app-engine multi-tenant task-queue