34

一个非常简单的问题:
如果 Azure WebJobs 是免费的,为什么会有人使用 Azure Scheduler?

我找不到任何关于“azure webjobs vs azure scheduler”的话题

主要区别在于 webjob 包含调度程序可以执行的所有操作:

  • 调度程序可以进行 HTTP 调用
  • WebJob 可以做到这一点以及更多(运行 SQL 命令等)
4

4 回答 4

30

WebJobs 的实际调度位构建在调度程序之上。当您在后台按计划设置 Web 作业时,它会使用调度程序来启动它。WebJobs 提供了一个不错的小位置来托管要执行的代码。事实上,如果您为网站创建 WebJobs,请查看门户上的调度程序,您也会看到它们也列在那里。

另请注意,调度程序可能会调用未运行 Azure 的其他系统。如果您有需要定期调用的云服务中运行的某些内容,或者即使某些内容托管在其他地方(另一个提供商或本地),那么您可以在调度程序中进行设置。

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

于 2014-03-17T19:34:26.960 回答
16

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

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

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

重要说明: Azure 调度程序的频率限制为 1 小时或 1 分钟,具体取决于是否付费。但是,对于内部调度程序,您的应用服务需要 Always On 才能继续运行并启动作业。这种永远在线状态可能会影响您的定价。

于 2016-10-30T09:05:54.610 回答
12
  1. 连续作业受到监控,如果它们退出,它们将被重新执行。通过这种方式,它们更像是本地机器中的“服务”。有一个模块可以监控并保持您的应用程序正常工作。Always-ON 是一项功能,可帮助您的网站保持活力,从而使您的网络作业持续运行。

  2. 调度程序用于触发 webjobs。它使用调度程序用户帐户(而不是后端帐户)。通过这种方式,您可以退出调度程序的免费层,注册到更高层以满足您的需求。但本质上,调度程序所做的只是访问一个 https 端点(这是公共的,但需要您的身份验证)。

  3. 触发作业(计划和按需)由 https 调用调用。这些调用是负载平衡的 - 与具有许多实例的 Web 应用程序的负载平衡方式非常相似。连续作业默认并发运行,但可以设置为单例。

于 2015-04-03T21:20:19.427 回答
0

对于从版本 2 开始的 Webjobs,没有理由再使用 Azure 调度程序。事实上,Azure 门户已经将此功能标记为(旧版)。

从 WebJob SDK v2 开始,引入了额外的触发器,其中之一是 TimerTrigger,它与 CRON 表达式一起工作以安排执行。此执行模式不需要任何额外的 Azure 构造,您只需要将 webapp 设置为 AlwaysOn 以保证 webjob 运行。

与 TimerTriggers 一起使用的另一个 Azure 服务是 Azure Functions,它构建在允许无服务器执行的 WebJob SDK 之上。

于 2019-08-02T19:57:34.903 回答