如果我的web api/Azure函数将服务于大量请求,我应该遵循什么Azure体系结构?

如果我的web api/Azure函数将服务于大量请求,我应该遵循什么Azure体系结构?,azure,azure-functions,azure-web-app-service,Azure,Azure Functions,Azure Web App Service,我正在使用Azure Function应用程序服务计划来服务客户端请求。选择Azure服务计划的原因是,请求是长期运行的,需要10分钟以上的时间 我正在寻找实现Azure体系结构,这将是经济高效的,并执行大量的请求更好 关于我可以使用什么Azure组件或应该遵循什么体系结构的任何建议 关于工作负载的更多细节和特征对于提供可靠的建议(例如,它是内存、cpu密集型的吗?它是否依赖于下游资源等)来说确实是必要的。根据您的工作负载,功能和\或应用程序服务可能不合适 在很高的水平上考虑是否重构这个10分钟

我正在使用Azure Function应用程序服务计划来服务客户端请求。选择Azure服务计划的原因是,请求是长期运行的,需要10分钟以上的时间

我正在寻找实现Azure体系结构,这将是经济高效的,并执行大量的请求更好


关于我可以使用什么Azure组件或应该遵循什么体系结构的任何建议

关于工作负载的更多细节和特征对于提供可靠的建议(例如,它是内存、cpu密集型的吗?它是否依赖于下游资源等)来说确实是必要的。根据您的工作负载,功能和\或应用程序服务可能不合适

在很高的水平上考虑是否重构这个10分钟的过程是一种选择。很多时候,长时间运行的任务实际上是许多可以分解的较小任务,因此它们各自的执行时间是合理的,然后您可以利用无服务器(Azure函数)的可伸缩性。如果是这样的话,但是分解它太复杂了,不能用类似的持久功能或逻辑应用程序来为你提供协调。 一般来说,如果我有长时间运行的请求,从用户的角度来看,这通常意味着它是异步的,延迟不是问题,所以另一个选择是使用Http触发器(API)在消费计划上运行的Azure函数上,它将根据需要进行扩展,并接受请求并将其置于队列中,但队列侦听器处于专用计算上,没有时间限制(例如,应用程序服务计划上的函数、Azure容器实例等)。请记住,您需要注意队列长度,因为您可能会在队列中收到大量请求,但在可接受的时间范围内,在专用计算机上处理这些请求的资源有限


最后,虽然“成本效益”和“性能”通常是一个棘手的问题(在无服务器系统之外),我的建议是,如果可以的话,重构您的工作负载。

关于工作负载的更多细节和特征对于提供任何可靠的建议来说都是非常必要的(例如,它是内存、cpu密集型的吗?它是否依赖于下游资源等)。取决于您的工作负载,功能和\或应用程序服务可能并不合适

在一个很高的水平上考虑重构这个10分钟的过程是一个选项。许多长时间运行的任务实际上是许多可以被分解的较小任务,因此它们的个体执行时间是合理的,然后可以利用无服务器(Azure函数)的缩放方面。如果是这样的话,但是分解它太复杂了,不能用类似的持久功能或逻辑应用程序来为你提供协调。 一般来说,如果我有长时间运行的请求,从用户的角度来看,这通常意味着它是异步的,延迟不是问题,所以另一个选择是使用Http触发器(API)在消费计划上运行的Azure函数上,它将根据需要进行扩展,并接受请求并将其放置在队列上,但队列侦听器处于专用计算上,没有时间限制(例如,应用程序服务计划上的函数、Azure容器实例等)。请记住,您需要注意队列长度,因为您可能会在队列中收到大量请求,但在可接受的时间范围内,在专用计算机上处理这些请求的资源有限


在一天结束时,虽然“成本效益”和“性能”通常是一个棘手的问题(在无服务器系统之外),我的建议是如果可以的话重构您的工作负载。

函数在做什么类型的工作?什么需要这么长的时间(>10分钟)。它完成两个系统之间的集成。它每小时运行一次,检查一个系统中的任何更新记录,并将这些更新复制到另一个系统。可能需要更新1000或2000条记录,这需要很长时间。按照Josh在下面的回答中所说的,需要更多和更深入的细节知识来设计g针对您的问题的ood架构。根据不同的事实,Azure持久功能可能是一个选项。该功能正在做什么类型的工作?什么需要这么长时间(>10分钟)。它完成两个系统之间的集成。它每小时运行一次,检查一个系统中的任何更新记录,并将这些更新复制到另一个系统。可能需要更新1000或2000条记录,这需要很长时间。按照Josh在下面的回答中所说的,需要更多和更深入的细节知识来设计g您的问题的ood架构。根据不同的事实,Azure持久功能可能是一个选项。