首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Windows Azure中的异步重复任务调度程序

Windows Azure中的异步重复任务调度程序
EN

Stack Overflow用户
提问于 2013-10-04 04:08:37
回答 3查看 949关注 0票数 0

我们希望使我们的客户能够计划每天,每周和每月的重复任务。线性可伸缩性对我们来说真的很重要,这就是为什么我们使用Windows Azure表存储而不是SQL Azure。当前的设计如下:-调度信息存储在表存储表中。例如:任务A,每天;任务B,每周;... -有工作进程,每小时运行一次并查询此表。然后决定,他们是否必须运行给定的任务。

但是,如果多个工作角色开始运行相同的任务呢?

其他一些要求:-工作进程可以在不同的时区。

Windows Azure队列存储可以解决上面提到的所有cuncurrency问题,但它也引入了一些新的问题:-我们应该生成多少个队列项目?-如果客户更改了重复率或取消了计划怎么办?

因此,我的问题是:如何使用Windows Azure Storage设计一个具有多个异步工作进程的重复任务调度器?

EN

回答 3

Stack Overflow用户

发布于 2013-11-06 10:09:28

也许新的Azure Scheduler服务可以有所帮助?

http://www.windowsazure.com/en-us/services/scheduler/

票数 3
EN

Stack Overflow用户

发布于 2013-10-04 11:05:29

一些想法:

但是,如果多个工作者角色开始运行同一任务怎么办?

这很有可能发生。为了避免这种情况,您可以做的是让一个工作者角色实例(池中的任何工作者角色实例)从表中读取消息并推送队列中的消息。当此实例执行此工作时,所有其他实例都在等待。要确定哪个实例执行此工作,您可以使用blob租用功能。

一些其他要求:-工作进程可以在不同的时区。

对此不太确定。假设你谈论的是Cloud Services Worker Roles,它们可能在不同的数据中心,但它们都在UTC时区。

我们应该生成多少个队列项目?

这真的取决于需要做多少工作。您可以将所有消息放入一个队列中。一个客户端一次最多只能将32条消息从队列出队。因此,如果您有100个任务,因此有100条消息,那么每个实例在对队列服务的一次调用中最多只能从队列中读取32条消息。

如果客户更改了重复率或取消了计划,该怎么办?

这应该没问题,因为一旦任务完成,您必须从队列中删除消息。下次调用任务时,您可以再次从表中读取,它将为您提供有关表中任务的最新信息。

票数 1
EN

Stack Overflow用户

发布于 2013-10-04 04:20:52

我会继续使用Azure Table Storage,但在工作人员开始工作之前将进程标记为“正在进行”。由于ATS支持由Etags控制的并发性,因此您可以放心,两个进程不会启动同一进程

但是,当作业意外失败时,我会考虑重试逻辑,并且有一个重新启动看似孤立的作业的进程

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19168326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档