Web作业/功能中的Microsoft Azure并发任务处理

时间:2017-05-04 17:33:07

标签: c# azure asynchronous parallel-processing azure-functions

我们有一项服务,可以调用3 rd 方(处理 每个呼叫的 1个请求标准 )服务来获取数据&响应< 1秒。现在我们有了新的要求来获取100个不同标准的数据。由于3 rd 派对服务仅处理1个请求标准。我们计划创建一个包装器服务,以异步方式生成100个请求(针对每个条件)并聚合结果。我们计划在云上部署服务,我们需要保持相同的响应时间。 我们有两种方法:

  1. 创建Web应用程序并使用TAP进行并行处理
  2. 创建Azure功能(包装(主要功能),另一个用于调用3 rd 方 服务)并进行并行处理
  3. 任何人都可以提出最佳模式和做法吗?

3 个答案:

答案 0 :(得分:0)

对于这些新的聚合请求,您将很难实现相同的延迟,因为您的响应时间将成为这100次调用中最差的。

Web App解决方案可能性能更高,因为它没有您的链式函数解决方案所需的中间调用。

瓶颈似乎是第三方服务 - 你可以缓存你需要的标准吗?

答案 1 :(得分:0)

如前所述,你最大的瓶颈似乎是第三方的回应(除非你有一个巨大的请求机构或类似的东西)。
这里的一个大问题是,即使您设法立即推出100个请求,您也不能保证它们将以并行方式处理,因为可能另一端已备份且它将排队你的要求。也许您的请求也可能发出类似锁定的操作,这会妨碍另一端的可伸缩性。您也可能无法从第三方缓存中受益,因为所有请求都会立即进入...
您可能面临的另一个问题是,如果另一方面一切正常,那么您很有可能无法处理所有请求回复的回复,例如,您将被堵塞起来!毕竟,只有100个备用线程在...周围不常见...

我的建议是在你的武器库中使用所有武器:

  • 缓存任何可以避免不必要的呼叫的内容。
  • 批量您的请求,尝试批次25件。
  • 尝试通过更新相关信息来解决1秒的时间范围(是的,这通常被最终用户广泛接受)

答案 2 :(得分:0)

我认为最重要的是,无论你选择哪种解决方案,尽可能好,都会引入你以前不必担心的开销。 < / p>

话虽这么说,我在单个网络服务器上使用TAP取得了不错的成功,用于类似的项目(即在网络上发现摄像头)。我不确定你是否能够保持在1秒以内,但新的要求是100次。

我能想到用这种响应时间来完成这个请求的唯一方法就是让100&#34;温暖&#34;云服务正在运行并准备响应。但对于你正在做的事情来说,这绝对太贵了。

Azure Batch也会浮现在脑海中,但我认为这会产生更多的开销。