Rob*_*sen 6 azure-functions azure-function-async
Azure函数允许我编写在某些条件下执行的C#/ F#(和更多)函数.这些函数可以是异步的(通过返回任务).
关于azure功能的一个很酷的事情是它们会根据负载自动扩展.关于"经典"服务器上的异步/等待模式的一个很酷的事情是,您可以更好地利用核心,以便您可以处理更多请求.
由于azure函数可以自动扩展,因此编写异步函数对我有什么好处吗?
您async在Azure Functions中使用的原因与在任何其他应用程序中使用的原因相同.对于阻止可能长时间运行的外部I/O的操作,它将更有效地使用资源.Azure Functions完全支持运行时核心中的异步,因此如果使用正确,它将允许在单个Function App上实现更多并行性和更好的吞吐量,因为线程不会被阻塞等待I/O并且可用于处理更多请求/触发器.
如果您的功能应用程序在Classic SKU上运行,那么您需要为Always On实例付费,因此很明显您希望尽可能高效地使用资源.
在Dynamic SKU中运行时,我认为您的问题是,如果我们只是根据需要扩展您的功能,那么谁在乎他们是否有效地使用资源?我仍然会说你最好对你的功能进行编码,以便它们尽可能高效地运行.这样我们只会在真正需要时将您扩展出来,并在我们启动它们时尽量减少新实例的冷启动时间.
在动态计划上使用Azure功能的异步时,您仍然会受益.这是因为您的应用程序消耗的资源更少(特别是线程),从而使其更高效,因此更便宜.想到一些例子:
一旦现有(忙)线程的数量达到"最小"线程数,ThreadPool将限制每500毫秒将新线程注入一个线程的速率.这意味着如果您的系统需要一个IOCP线程,那么它将非常快速地处理该工作.但是,如果突发工作超过配置的"最小"设置,则处理某些工作会有一些延迟,因为ThreadPool会等待两件事之一发生1.现有线程可以自由处理工作2.现有线程在500ms内没有空闲,因此创建了一个新线程.
如果这不是很多工作,我强烈建议您利用函数中的异步模式.除了上面提到的原因之外,最好不要对平台的容量或动态规模逻辑的效率做太多假设,因为不准确的假设最终可能会花费你更多的钱.:)
| 归档时间: |
|
| 查看次数: |
531 次 |
| 最近记录: |