Azure功能如何扩展?

时间:2016-05-18 23:22:16

标签: azure azure-functions webhooks

scaling documentation for Azure Functions对Azure Functions如何决定何时添加更多应用实例的细节有所了解。

比如说我有一个由Github webhook触发的函数。 10,000人同时提交Github仓库(没有合并冲突;)),Github在很短的时间内调用我的功能10,000次。

我可以期待什么?具体来说,

  1. Azure功能会限制webhook调用吗?即,如果我的功能应用程序处于高负载状态,Azure功能是否会拒绝某些函数调用?
  2. Azure Functions会以某种方式对请求进行排队吗?如果是的话,在哪里/如何?
  3. Azure功能在此方案中创建了多少个我的功能应用实例?每个请求一个(即10,000个),每个请求并行运行?
  4. 如果我的app功能缩小到零实例,因为没有加载,我可以期望在第一个函数执行之前看到一些“预热时间”吗?大概多久了?

2 个答案:

答案 0 :(得分:22)

  1. Azure Functions不会拒绝webhook调用,但在突然,极端负载的情况下,某些请求可能会超时。对于web apis,请在客户端重试,作为最佳做法。
  2. 他们没有在任何持久的地方排队。它们是由IIS管理的(实现细节)。
  3. (实现细节)实例数不是硬件。我们已经有了一些未公开的保护措施,但我们的设计规模相当远。您的请求将由多个实例处理。
  4. 是。现在,它非常沉重(秒),但我们将努力改进它。对于性感敏感的情况,建议使用金丝雀或定时器触发器使其保持清醒状态。
  5. 我来自Azure Functions团队。我标记为实施细节的事情不是承诺,也可能随着我们的服务发展而改变;只是尝试透明度。

答案 1 :(得分:5)

  1. 今天进行了测试。花了不止几秒钟:(
  2. ACTUAL PERFORMANCE
    --------------
    ClientConnected:  13:58:41.589
    
    ClientBeginRequest:   13:58:41.592
    
    GotRequestHeaders:    13:58:41.592
    
    ClientDoneRequest:    13:58:41.592
    
    Determine Gateway:    0ms
    
    DNS Lookup:       65ms
    
    TCP/IP Connect:   40ms
    
    HTTPS Handshake:  114ms
    
    ServerConnected:  13:58:41.703
    
    FiddlerBeginRequest:  13:58:41.816
    
    ServerGotRequest: 13:58:41.817
    
    ServerBeginResponse:  14:00:36.790
    
    GotResponseHeaders:   14:00:36.790
    
    ServerDoneResponse:   14:00:36.790
    
    ClientBeginResponse:  14:00:36.790
    
    ClientDoneResponse:   14:00:36.790
    
    
    Overall Elapsed:  **0:01:55.198**