一个非常简单的问题:
如果Azure WebJobs是免费的,为什么有人会使用Azure Scheduler?
我找不到任何关于" azure webjobs vs azure scheduler"
的话题主要区别在于webjob包含调度程序可以执行的所有操作:
答案 0 :(得分:30)
WebJobs的实际调度位建立在调度程序之上。当您按计划安排Web作业时,它会使用调度程序将其启动。 WebJobs提供了一个很好的小位置来托管执行的代码。事实上,如果您为网站创建WebJobs,请查看门户网站上的调度程序,您也会在其中看到它们。
另请注意,调度程序可以调用其他未运行Azure的系统。如果您在Cloud Service中运行需要定期调用的东西,或者即使某些东西托管在其他地方(另一个提供商或内部),也可以在调度程序中进行设置。
关于成本方面,调度程序还有一个免费层:http://www.windowsazure.com/en-us/pricing/details/scheduler/。
答案 1 :(得分:15)
2016年。以下答案不再准确。
WebJobs现在还有一个内置的调度程序,并且可以通过cron表达式来定义计划。
发布到Azure时,您可以选择是否要让Scheduler或WebJob内部调度程序启动WebJob。
重要说明: Azure计划程序的频率限制为1小时或1分钟,具体取决于是否付费。但是,对于内部计划程序,您的App Service要求Always On继续运行并解雇作业。此永远在线状态可能会影响您的定价。
答案 2 :(得分:11)
监视连续作业,如果它们退出则重新执行。通过这种方式,他们更像是"服务"在你的本地机器上。有一个模块可以监控并保持您的应用程序正常运行。 Always-ON是一项功能,可以帮助您的网站保持活力,从而使您的网络工作能够持续运行。
调度程序用于触发webjobs。它使用调度程序用户帐户(而不是后端帐户)。这样您就可以退出调度程序的免费层,注册更高层以满足您的需求。但实际上,所有调度程序正在执行的操作是访问https端点(这是公开的,但需要您的身份验证)。
https调用会调用已触发的作业(已计划和按需)。这些调用是负载平衡的 - 与具有许多实例的Web应用程序负载平衡的方式非常相似。默认情况下,连续作业会同时运行,但可以设置为单例。
答案 3 :(得分:0)
对于从版本2开始的Webjob,不再需要使用Azure Scheduler。实际上,Azure门户已经将该功能标记为(旧版)。
从WebJob SDK v2开始,引入了其他触发器,其中之一是TimerTrigger,它与CRON表达式配合使用以调度执行。这种执行模式不需要任何其他Azure构造,您只需要将Web应用程序设置为AlwaysOn即可保证Web作业能够运行。
与TimerTriggers一起使用的另一项Azure服务是Azure Functions,它建立在WebJob SDK的基础之上,该SDK允许无服务器执行。