Azure webjobs vs scheduler



一个很简单的问题:
如果Azure WebJobs是免费的,为什么有人会使用Azure调度器?

我找不到任何关于"azure webjobs vs azure scheduler"的主题


主要区别在于webjob包含了调度器可以做的所有事情:

  • WebJob可以做的更多(运行SQL命令等)

WebJobs的实际调度位构建在调度程序之上。当你在底层的日程表上设置一个Web Job时,它使用调度程序来启动它。WebJobs提供了一个漂亮的小位置来存放要执行的代码。事实上,如果你为一个网站创建WebJobs,看看门户网站上的Scheduler,你会看到它们也列在那里。

还要注意,调度程序可以调用到其他没有运行Azure的系统。如果你有一些东西在云服务中运行,需要定期调用,或者即使有些东西托管在其他地方(另一个提供商或本地),调度程序是你可以设置的地方。

关于成本方面,调度程序也有一个免费的层:http://www.windowsazure.com/en-us/pricing/details/scheduler/.

现在是2016年。以下答案不再准确。

WebJobs现在也有一个内置的调度程序,这个调度程序可以通过一个cron表达式来定义。

发布到Azure时,您可以选择是由调度程序触发WebJob还是由WebJob内部调度程序触发。

重要提示: Azure调度器的频率限制为1小时或1分钟,具体取决于是否付费。然而,对于内部调度器,你的App Service需要Always On来保持运行并启动作业。Always On状态可能会影响您的定价。

  1. 监视连续作业,如果它们退出,则重新执行它们。通过这种方式,它们的行为更像是本地机器中的"服务"。有一个模块监控并保持你的应用程序工作。Always-ON是一个功能,可以帮助您的网站保持活跃,从而使您的webjob持续运行。

  2. Scheduler用于触发webjobs。它使用调度器用户帐户(而不是后端帐户)。这样,您就可以从免费的调度器层移出,注册到更高的层以满足您的需求。但本质上,所有调度器所做的就是访问https端点(这是公共的,但需要您的授权)。

  3. 触发的作业(计划的和按需的)由https调用调用。这些调用是负载均衡的——就像一个有很多实例的web应用是负载均衡的一样。默认情况下,连续作业并发运行,但可以设置为单例。

对于从版本2开始的Webjobs,没有理由再使用Azure Scheduler了。事实上,Azure Portal已经将此功能标记为(Legacy)。

从WebJob SDK v2中引入了额外的触发器,其中之一是TimerTrigger,它与CRON表达式一起调度执行。这种执行模式不需要任何额外的Azure结构,你只需要将webapp设置为AlwaysOn来保证webjob的运行。

另一个与TimerTriggers一起工作的azure服务是azure Functions,它建立在WebJob SDK之上,允许无服务器执行。

最新更新