0
  1. 在一个 webjob 中有很多触发器(blob、servicebus、timer)会降低 webjob 的性能吗?

  2. 有没有办法通过许多触发器来提高 webjob 的性能?

  3. 一个重量级的 webjob 可以分成较小的重量级 webjob 吗?

4

2 回答 2

1

将 Azure WebJobs 作为 Azure App Service 的一项功能来运行后台作业,如下面的官方文档所述。

WebJobs 是 Azure 应用服务的一项功能,使你能够在与 Web 应用、API 应用或移动应用相同的上下文中运行程序或脚本。使用 WebJobs 无需额外费用。

虽然它说no additional cost,WebJob 作为一个简单而有用的功能是在 Azure 发布其他类似和更强大的服务之前创建的,如下面的同一个文档中介绍了 Functions。

Azure Functions 提供了另一种运行程序和脚本的方法。有关 WebJobs 和 Functions 之间的比较,请参阅在 Flow、Logic Apps、Functions 和 WebJobs 之间进行选择

在上面的参考文档中,该Summary部分推荐了它的最佳应用场景。

概括

Azure Functions 提供更高的开发人员生产力、更多编程语言选项、更多开发环境选项、更多 Azure 服务集成选项和更多定价选项。对于大多数情况,它是最佳选择。

以下是 WebJobs 可能是最佳选择的两种情况:

  • 您需要更多地控制监听事件的代码,即 JobHost 对象。Functions 提供了有限数量的方法来自定义 host.json 文件中的 JobHost 行为。有时您需要做一些 JSON 文件中的字符串无法指定的事情。例如,只有 WebJobs SDK 允许您为 Azure 存储配置自定义重试策略。
  • 你有一个要为其运行代码片段的应用服务应用,并且希望在同一个 DevOps 环境中一起管理它们。

对于要运行代码片段以集成 Azure 或第三方服务的其他方案,请选择 Azure Functions over WebJobs 和 WebJobs SDK。

同时,根据我在 Azure 上的经验,WebJobs 和 Functions 只适用于一些简单、轻量级的任务工作。对于高性能要求,Azure Batch 服务是在成本和易用性之间取得平衡的不错选择。

于 2018-12-28T09:24:43.523 回答
0

1. 单个webjob中有很多触发器(blob、servicebus、timer)会降低webjob的性能吗? 前提是您的网络作业不是单例。您可以通过多个触发器在您的网络作业中拥有多个功能,并且性能不会降低。(前提是你的 webapp 计划足够强大,可以处理所有负载。)

2.有没有什么办法可以提高具有许多触发器的webjob的性能?- 最好的方法是将 webjob 分成更小的 webjobs,每个 webjob 都有一个触发器。并根据负载扩展您的网络作业(添加更多实例)。此外,如果您的网络作业在 5 分钟内执行,您还可以选择使用 Azure Function App。这提供了一个更好的选择。或者,假设 webjob 执行需要超过 5 分钟,您可以将 webjob exe 作为 docker 映像,并使用 ACI 按需使用逻辑应用程序配置它们。在这种情况下,您将在逻辑应用中配置触发器。

1. 一个重量级的网络作业可以分成较小的重量级网络作业吗?-是的,请参阅我之前的答案。

于 2018-12-28T10:23:17.570 回答