2016-05-18 11 views
16

The scaling documentation for Azure Functions to trochę więcej szczegółów na temat tego, jak funkcje Azure decydują, kiedy dodać więcej wystąpień aplikacji.Skalowanie funkcji platformy Azure?

Powiedzmy, że mam funkcję uruchamianą przez webhook Github. 10 000 osób jednocześnie zobowiązuje się do repozytorium Github (bez konfliktów scaleniowych;)), a Github wywołuje moją funkcję 10 000 razy w bardzo krótkim czasie.

Czego mogę się spodziewać? W szczególności,

  1. Czy funkcje Azure dławią wywołania webhook? Czy funkcja Azure Functions odrzuci określone wywołania funkcji, jeśli moja aplikacja funkcjonalna znajduje się pod dużym obciążeniem?
  2. Czy Azure Functions w jakiś sposób kolejkuje żądania? Jeśli tak, gdzie/jak?
  3. Ile instancji mojej aplikacji funkcji będzie tworzyć Azure Functions w tym scenariuszu? Jeden na każde żądanie (tj. 10 000), a każdy będzie działać równolegle?
  4. Jeśli funkcja mojej aplikacji została zmniejszona do zera instancji, ponieważ nie było w niej obciążenia, czy mógłbym oczekiwać pewnego "czasu rozgrzewania" przed wykonaniem pierwszej funkcji? Z grubsza jak długo?

Odpowiedz

17
  1. Azure funkcje nie będą odrzucać połączenia webhook, ale w przypadku nagłego, ekstremalnego obciążenia, niektóre wnioski mogą timeout. W przypadku web apis, prosimy o ponowną próbę na kliencie, jako najlepszą praktykę.
  2. Nie są one umieszczane w kolejce w żadnym trwałym miejscu. Są to (szczegóły implementacji) zarządzane przez IIS.
  3. (Szczegóły implementacji) Liczba wystąpień nie jest trudnym zadaniem. Mamy pewne, niepublikowane zabezpieczenia, ale jesteśmy zaprojektowani tak, aby skalować się dość daleko. Twoje żądania będą obsługiwane przez wiele instancji.
  4. Tak. W tej chwili jest dość mocny (sekundy), ale będziemy pracować nad jego poprawą. W sytuacjach wrażliwych na perfekcję zalecane jest użycie spustu kanarkowego lub wyzwalacza zegarowego.

Jestem z zespołu Azure Functions. Rzeczy oznaczone jako szczegóły implementacji nie są obietnicami i prawdopodobnie również ulegną zmianie wraz z rozwojem naszych usług; tylko próba przejrzystości.

+0

Mógłbyś rozwinąć roztworze wyzwalania zegara? Czy mogę mieć inną funkcję timera na funkcję App uruchomiony, a od tego zależy utrzymanie HTTP wyzwalane funkcje "ciepłe"? – Shrulik

+1

Jeśli posiadasz inną funkcję, taką jak wyzwalacz czasowy w tej samej aplikacji funkcyjnej, zachowa ona ciepłą instancję do następnego wykonania, dzisiaj, tak –

+0

Dzięki. "Dzisiaj" jest trochę niepokojące, ale doceniam szczerość: – Shrulik

2
  1. testowany dzisiaj. zajęło ponad sekund :(
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**