在单个webjob中是否有许多触发器(blob,servicebus,timer)会降低webjob的性能?
有什么办法可以通过许多触发器来提高webjob的性能?
可以将重量较重的webjob划分为重量较轻的webjob吗?
答案 0 :(得分:0)
将Azure WebJobs作为Azure App Service的功能来运行后台作业,如下the offical document所述。
WebJobs是Azure App Service的一项功能,使您可以在与Web应用程序,API应用程序或移动应用程序相同的上下文中运行程序或脚本。使用WebJobs无需支付额外费用。
虽说no additional cost
,但WebJob是一项简单而有用的功能,它是在Azure发布其他类似且功能更强大的服务(例如在下面的同一文档中引入“功能”)之前建立的。
Azure函数提供了另一种运行程序和脚本的方法。有关WebJob和功能之间的比较,请参见Choose between Flow, Logic Apps, Functions, and WebJobs。
在上面的参考文档中,Summary
部分推荐了最佳的应用场景。
摘要
Azure Functions可提供更高的开发人员生产力,更多的编程语言选项,更多的开发环境选项,更多的Azure服务集成选项以及更多的定价选项。在大多数情况下,这是最佳选择。
在以下两种情况下,WebJobs可能是最佳选择:
- 您需要对侦听事件的代码JobHost对象进行更多控制。函数提供了数量有限的方法来自定义host.json文件中的JobHost行为。有时您需要执行JSON文件中的字符串无法指定的操作。例如,只有WebJobs SDK允许您为Azure存储配置自定义重试策略。
- 您有一个要为其运行代码段的App Service应用程序,并且希望在同一DevOps环境中一起对其进行管理。
对于要运行代码片段以集成Azure或第三方服务的其他方案,请选择带有WebJobs SDK的WebJobs上的Azure功能。
同时,根据我在Azure上的经验,WebJobs和Functions仅适合一些简单且轻量级的任务工作。对于高性能要求,Azure Batch service是在成本和易用性之间取得平衡的理想选择。
答案 1 :(得分:0)
1。单个webjob中是否有许多触发器(blob,servicebus,timer)会降低webjob的性能? 前提是您的网络作业不是单例。您可以在Webjob中使用多个触发器来具有多个功能,并且性能不会降低。 (只要您的webapp计划足以应付所有负载。)
2。是否有任何方法可以通过许多触发器来提高webjob的性能? - 最好的方法是将webjob分成较小的webjob,并且每个webjob都有一个触发器。并根据负载扩展您的webjobs(添加更多实例)。同样,如果您的Web作业在5分钟内执行,您还可以选择使用Azure Function App。这提供了一个更好的选择。或者,假设执行webjob的时间超过5分钟,则可以将webjob exe作为docker映像,并使用ACI按需使用逻辑应用程序进行配置。在这种情况下,您将在逻辑应用程序中配置触发器。
1。可以将较重的webjob划分为较小的webjob吗? -是的,请参阅我以前的答案。