Megosztás a következőn keresztül:


Eseményvezérelt skálázás az Azure Functionsben

A Használat, a Rugalmas használat és a Prémium csomagokban az Azure Functions úgy skálázza az erőforrásokat, hogy több példányt ad hozzá a függvényt kiváltó események száma alapján.

Fontos

A Rugalmas használat csomag jelenleg előzetes verzióban érhető el.

A függvényalkalmazás méretezésének módja az üzemeltetési tervtől függ:

  • Használati terv: A Functions-gazdagép minden példánya korlátozott, jellemzően 1,5 GB memóriára és egy CPU-ra. A gazdagép egy példánya támogatja a teljes függvényalkalmazást. Így a függvényalkalmazások összes függvénye egyszerre skálázható egy példányban. Ha a függvényalkalmazások ugyanazzal a használati csomaggal rendelkeznek, akkor is egymástól függetlenül skálázhatók.

  • Rugalmas kihasználtságú csomag: A terv egy determinisztikus függvényenkénti skálázási stratégiát használ, amelyben az egyes függvények egymástól függetlenül vannak skálázva, kivéve a HTTP, a Blob és a Durable Functions által aktivált függvényeket, amelyek a saját csoportjaikban skálázódnak. További információ: Függvényenkénti skálázás. Ezek a példányok a kérések egyidejűsége alapján lesznek skálázva.

  • Prémium csomag: A Prémium csomag adott mérete határozza meg a rendelkezésre álló memóriát és cpu-t az adott csomagban lévő összes alkalmazás számára az adott példányon. A terv a csomagban lévő alkalmazások skálázási igényei alapján skálázza ki a példányokat, és az alkalmazások igény szerint méreteznek a csomagon belül.

A függvénykódfájlok a függvény fő tárfiókjában található Azure Files-megosztásokon vannak tárolva. A függvényalkalmazás fő tárfiókjának törlésekor a függvénykódfájlok törlődnek, és nem állíthatók helyre.

Futásidejű skálázás

Az Azure Functions egy skálázási vezérlő nevű összetevővel figyeli az események sebességét, és meghatározza, hogy felskálázható vagy skálázható-e. A skálázásvezérlő heurisztikus módszert használ mindegyik triggertípushoz. Ha például egy Azure Queue Storage-eseményindítót használ, az célalapú skálázást használ.

Az Azure Functions skálázási egysége a függvényalkalmazás. A függvényalkalmazás vertikális felskálázása esetén a rendszer több erőforrást foglal le az Azure Functions-gazdagép több példányának futtatásához. Ezzel szemben a számítási igények csökkenésével a skálázásvezérlő eltávolítja a függvények gazdagéppéldányait. A példányok száma végül "felskálázva" lesz, ha egy függvényalkalmazáson belül egyetlen függvény sem fut.

Skálázásvezérlő monitorozási eseményei és példányok létrehozása

Hideg kezdés

Ha a függvényalkalmazás néhány percig tétlenné válik, a platform dönthet úgy, hogy skálázza azoknak a példányoknak a számát, amelyeken az alkalmazás nullára fut. A következő kérelemben a nulláról az egyikre történő skálázás késése van hozzáadva. Ezt a késést hideg kezdésnek nevezzük. A függvényalkalmazás által igényelt függőségek száma befolyásolhatja a hideg kezdési időt. A hidegindítás inkább a szinkron műveletek, például a választ visszaadó HTTP-eseményindítók esetében jelent problémát. Ha a hidegindítások hatással vannak a függvényekre, fontolja meg a Használattól eltérő terv használatát. A többi terv ezeket a stratégiákat kínálja a hidegindítások enyhítésére vagy megszüntetésére:

  • Prémium csomag: támogatja az előre elkészített és a mindig kész példányokat is, legalább egy példánysal.

  • Rugalmas felhasználású csomag: támogatja a mindig kész példányok opcionális számát, amely példányonkénti skálázási alapon határozható meg.

  • Dedikált csomag: maga a csomag nem skáláz dinamikusan, de az Always on beállítással folyamatosan futtathatja az alkalmazást.

A méretezési viselkedés megértése

A skálázás több tényezőtől függően változhat, az alkalmazások pedig a kiválasztott eseményindítók és nyelv alapján eltérően méretezhetők. Néhány tudnivaló a skálázási viselkedésekkel kapcsolatban, amellyel érdemes tisztában lenni:

  • Maximális példányok: Egyetlen függvényalkalmazás csak a terv által megengedett maximális értékre skálázható fel. Egyetlen példány azonban egyszerre több üzenetet vagy kérést is feldolgozhat. Igény szerint megadhat egy alacsonyabb maximumot a skálázás szabályozásához.
  • Új példányok aránya: HTTP-eseményindítók esetén az új példányok legfeljebb másodpercenként egyszer lesznek lefoglalva. A nem HTTP alapú triggerek esetében az új példányok lefoglalására legfeljebb 30 másodpercenként kerül sor. A skálázás gyorsabb, ha prémium szintű csomagban fut.
  • Célalapú skálázás: A célalapú skálázás gyors és intuitív skálázási modellt biztosít az ügyfelek számára, és jelenleg a Service Bus-üzenetsorok és -témakörök, a tárolási üzenetsorok, az Event Hubs, az Apache Kafka és az Azure Cosmos DB-bővítmények esetében támogatott. Ellenőrizze a célalapú skálázást , hogy megértse a skálázási viselkedésüket.
  • Függvényenkénti skálázás: Néhány jelentős kivételtől eltekintve a Flex Consumption csomagban futó függvények független példányokon skálázhatók. A kivételek közé tartoznak a HTTP-eseményindítók és a Blob Storage (Event Grid) eseményindítói. Mindegyik triggertípus csoportként skálázható ugyanazon példányokon. Hasonlóképpen, az összes Durable Functions-eseményindító is megosztja a példányokat, és együtt méretezhető. További információ: függvényenkénti skálázás.
  • Maximális monitorozott eseményindítók: A skálázási vezérlő jelenleg legfeljebb 100 eseményindítót képes figyelni a méretezési döntések meghozatalához. Ha az alkalmazás több mint 100 eseményalapú eseményindítóval rendelkezik, a méretezési döntések csak az első 100 eseményindítón alapulnak. További információkért tekintse meg a méretezhető alkalmazások ajánlott eljárásait és mintáit.

Vertikális felskálázás korlátozása

Dönthet úgy, hogy korlátozza az alkalmazások által a vertikális felskálázáshoz használható példányok maximális számát. Ez a leggyakoribb azokban az esetekben, amikor egy alsóbb rétegbeli összetevő, például egy adatbázis korlátozott átviteli sebességgel rendelkezik. A különböző üzemeltetési csomagok futtatásakor elérhető maximális méretezési korlátokat a Méretezési korlátok című témakörben tekintheti meg.

Rugalmas kihasználtságú csomag

Alapértelmezés szerint a Rugalmas kihasználtságú 100 csomagban futó alkalmazások esetében a teljes példányok száma korlátozott. Jelenleg a legalacsonyabb maximális példányszámérték, 40és a legmagasabb támogatott maximális példányszámérték.1000 Ha a az functionapp create parancsot használva létrehoz egy függvényalkalmazást a Rugalmas használat csomagban, a --maximum-instance-count paraméterrel állítsa be az alkalmazás maximális példányszámát.

Vegye figyelembe, hogy bár a Rugalmas használatú alkalmazások maximális példányszámát akár 1000-ig is módosíthatja, az alkalmazások elérik a kvótakorlátot, mielőtt elérnék ezt a számot. További részletekért tekintse át a regionális előfizetések memóriakvótáit .

Ez a példa egy olyan alkalmazást hoz létre, amelynek maximális példányszáma 200:

az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_ACCOUNT_NAME> --runtime <LANGUAGE_RUNTIME> --runtime-version <RUNTIME_VERSION> --flexconsumption-location <REGION> --maximum-instance-count 200

Ez a példa a az functionapp scale config set parancs használatával módosítja egy meglévő alkalmazás példányainak maximális számát a következőre 150:

az functionapp scale config set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --maximum-instance-count 150

Fogyasztási/prémium csomagok

Egy használatalapú vagy rugalmas prémium csomagban a helykonfigurációs beállítás értékének módosításával megadhat egy alacsonyabb maximális korlátot az functionAppScaleLimit alkalmazás számára. Az functionAppScaleLimit érték beállítható 0 null vagy korlátozatlan, vagy érvényes érték lehet az alkalmazás és az alkalmazás közötti érték között 1 .

az resource update --resource-type Microsoft.Web/sites -g <RESOURCE_GROUP> -n <FUNCTION_APP-NAME>/config/web --set properties.functionAppScaleLimit=<SCALE_LIMIT>

Skálázási viselkedések

Az eseményvezérelt skálázás automatikusan csökkenti a kapacitást, ha csökken a függvények iránti kereslet. Ezt úgy teszi, hogy kiüríti az aktuális függvényvégrehajtások példányait, majd eltávolítja ezeket a példányokat. Ezt a viselkedést a rendszer ürítési módként naplózza. A jelenleg futó függvények türelmi ideje a Használatterv-alkalmazások esetében akár 10 percet, prémium szintű csomagalkalmazások esetében pedig akár 60 percet is igénybe vehet. Az eseményvezérelt skálázás és ez a viselkedés nem vonatkozik a dedikált csomagalkalmazásokra.

A méretezési viselkedésre az alábbi szempontok vonatkoznak:

  • A Használati csomagban Windows rendszeren futó alkalmazások esetében csak a 2021 májusa után létrehozott alkalmazások rendelkeznek alapértelmezés szerint engedélyezve a lefolyómód működésével.
  • A Service Bus-eseményindítót használó függvények kecses leállításának engedélyezéséhez használja a Service Bus-bővítmény 4.2.0-s vagy újabb verzióját.

Függvényenkénti skálázás

Csak a Rugalmas használat csomagra (előzetes verzió) vonatkozik.

A Flex Consumption csomag egyedi abban, hogy függvényenkénti skálázási viselkedést valósít meg. Függvényenkénti skálázás esetén a HTTP-eseményindítók, a Blob (Event Grid) eseményindítók és a Durable Functions kivételével az alkalmazás minden más függvény-eseményindító-típusa független példányokon skálázható. Az alkalmazásban a HTTP-eseményindítók csoportként skálázhatók ugyanazon példányokon, ahogy az összes Blob (Event Grid) és az összes Durable Functions-eseményindító is, amelyek saját megosztott példányokkal rendelkeznek.

Fontolja meg, hogy egy olyan függvényalkalmazás üzemeltetett egy Flex Consumption-csomagot, amely a következő függvényt tartalmazza:

függvény1 function2 function3 function4 function5 function6 függvény7
HTTP-eseményindító HTTP-eseményindító Vezénylési trigger (Durable) Tevékenységindító (Tartós) Service Bus-eseményindító Service Bus-eseményindító Event Hubs-eseményindító

Ebben a példában:

  • A két HTTP által aktivált függvény (function1és function2) együtt futnak a saját példányaikon, és a HTTP egyidejűségi beállításainak megfelelően skálázhatók együtt.
  • A két Durable függvény (function3és function4) együtt futnak a saját példányaikon, és a konfigurált egyidejűségi szabályozások alapján skálázhatók együtt.
  • A Service Bus által aktivált függvény function5 önállóan fut, és a Service Bus-üzenetsorok és -témakörök célalapú skálázási szabályainak megfelelően egymástól függetlenül skálázható.
  • A Service Bus által aktivált függvény function6 önállóan fut, és a Service Bus-üzenetsorok és -témakörök célalapú skálázási szabályainak megfelelően egymástól függetlenül skálázható.
  • Az Event Hubs-eseményindító (function7) a saját példányaiban fut, és az Event Hubs célalapú skálázási szabályainak megfelelően egymástól függetlenül skálázható.

Ajánlott eljárások és minták méretezhető alkalmazásokhoz

A függvényalkalmazásoknak számos olyan aspektusa van, amely hatással van a skálázásra, beleértve a gazdagép konfigurációját, a futásidejű erőforrásigényt és az erőforrás-hatékonyságot. További információkért tekintse meg a teljesítményproblémákról szóló cikk méretezhetőségi szakaszát. Azt is tudnia kell, hogy a kapcsolatok hogyan viselkednek a függvényalkalmazás skálázásakor. További információ: Kapcsolatok kezelése az Azure Functionsben.

Ha az alkalmazás több mint 100 olyan függvényt használ, amelyek eseményalapú eseményindítókat használnak, fontolja meg az alkalmazás egy vagy több alkalmazásra való lebontását, ahol minden alkalmazás kevesebb mint 100 eseményalapú függvényt használ.

A Python és a Node.js skálázásával kapcsolatos további információkért tekintse meg az Azure Functions Python fejlesztői útmutatóját – Skálázás és egyidejűség , valamint az Azure Functions Node.js fejlesztői útmutatója – Skálázás és egyidejűség.

Következő lépések

További tudnivalókért olvassa el a következő cikket: