Ajánlott eljárások a megbízható Azure Functions

Azure Functions egy eseményvezérelt, igény szerinti számítási élmény, amely kibővíti a meglévő Azure App Service alkalmazásplatformot az Azure-ban, külső szolgáltatásban és helyszíni rendszerekben előforduló események által aktivált kód implementálására szolgáló képességekkel. A Functions segítségével adatforrásokhoz vagy üzenetkezelési megoldásokhoz csatlakozva hozhat létre megoldásokat, ami megkönnyíti az események feldolgozását és reagálását. A függvények azure-adatközpontokon futnak, amelyek számos integrált összetevővel összetettek. Üzemeltetett felhőkörnyezetben a virtuális gépek időnként újraindulhatnak vagy áthelyezhetők, és rendszerfrissítések történnek. A függvényalkalmazások valószínűleg külső API-któl, Azure-szolgáltatásoktól és más adatbázisoktól is függenek, amelyek szintén hajlamosak az időszakos megbízhatatlanságra.

Ez a cikk néhány ajánlott eljárást ismertet a hatékony, kifogástalan állapotú és felhőalapú környezetben jól teljesítő függvényalkalmazások tervezéséhez és üzembe helyezéséhez.

A megfelelő üzemeltetési csomag kiválasztása

Amikor függvényalkalmazást hoz létre az Azure-ban, ki kell választania egy üzemeltetési csomagot az alkalmazáshoz. A választott csomag hatással van a teljesítményre, a megbízhatóságra és a költségekre. A Functionshez három alapszintű üzemeltetési csomag érhető el:

Az összes üzemeltetési csomag általánosan elérhető Linux vagy Windows rendszeren.

A App Service platform kontextusában a függvények dinamikus üzemeltetéséhez használt Prémium csomag az Elastic Premium csomag (EP). Vannak más dedikált (App Service) csomagok is, amelyeket Prémiumnak hívnak. További információért tekintse meg a Prémium csomagról szóló cikket.

A választott üzemeltetési csomag a következő viselkedéseket határozza meg:

  • Hogyan méretezhető a függvényalkalmazás az igények és a példányok lefoglalásának kezelése alapján.
  • Az egyes függvényalkalmazás-példányok számára elérhető erőforrások.
  • Speciális funkciók, például az Azure Virtual Network-kapcsolatok támogatása.

A megfelelő üzemeltetési csomag kiválasztásáról és a csomagok részletes összehasonlításáról a Azure Functions üzemeltetési lehetőségek című témakörben talál további információt.

Fontos, hogy a függvényalkalmazás létrehozásakor a megfelelő csomagot válassza. A Functions korlátozott lehetőséget biztosít az üzemeltetési csomag közötti váltásra, elsősorban a Használat és az Elastic Premium csomag között. További információ: Migrálás megtervezve.

A tárolás megfelelő konfigurálása

A Functions használatához tárfiókot kell társítani a függvényalkalmazáshoz. A tárfiók-kapcsolatot a Functions-gazdagép használja olyan műveletekhez, mint az eseményindítók kezelése és a függvényvégrehajtások naplózása. Függvényalkalmazások dinamikus skálázásához is használatos. További információ: A Azure Functions tárolási szempontjai.

A függvényalkalmazás helytelenül konfigurált fájlrendszere vagy tárfiókja befolyásolhatja a függvények teljesítményét és rendelkezésre állását. A helytelenül konfigurált tárfiókok hibaelhárításával kapcsolatos segítségért tekintse meg a tárterülettel kapcsolatos hibaelhárítási cikket.

Tárolási kapcsolat beállításai

A dinamikusan skálázható függvényalkalmazások a tárfiók Azure Files végpontjáról vagy a kibővített példányokhoz társított fájlkiszolgálókról futtathatók. Ezt a viselkedést a következő alkalmazásbeállítások vezérlik:

Ezek a beállítások csak akkor támogatottak, ha Prémium csomagban vagy Használatalapú csomagban fut Windows rendszeren.

Amikor a függvényalkalmazást a Azure Portal vagy az Azure CLI vagy Azure PowerShell használatával hozza létre, szükség esetén ezek a beállítások jönnek létre a függvényalkalmazáshoz. Amikor azure-Resource Manager-sablonból (ARM-sablonból) hozza létre az erőforrásokat, a sablont is bele kell foglalniaWEBSITE_CONTENTAZUREFILECONNECTIONSTRING.

Az ARM-sablont használó első üzembe helyezéskor ne tartalmazza WEBSITE_CONTENTSHAREa elemet, amely az Ön számára jön létre.

Az alábbi ARM-sablon példák segítségével helyesen konfigurálhatja ezeket a beállításokat:

Tárfiók konfigurálása

Ha függvényalkalmazást hoz létre, létre kell hoznia egy általános célú Azure Storage-fiókot, amely támogatja a blobok, az üzenetsorok és a táblák tárolását, vagy hivatkoznia kell egy ilyen Storage-fiókra. A Functions az Azure Storage-ra támaszkodik olyan műveletekhez, mint az eseményindítók kezelése és a függvényvégrehajtások naplózása. A függvényalkalmazáshoz kapcsolati sztring tárfiók a és WEBSITE_CONTENTAZUREFILECONNECTIONSTRING az AzureWebJobsStorage alkalmazásbeállítások között található.

A tárfiók létrehozásakor vegye figyelembe az alábbi szempontokat:

  • A késés csökkentése érdekében hozza létre a tárfiókot a függvényalkalmazással azonos régióban.

  • Az éles teljesítmény javítása érdekében minden függvényalkalmazáshoz használjon külön tárfiókot. Ez különösen igaz a Durable Functions és az Event Hub által aktivált függvények esetén.

  • Az Eseményközpont által aktivált függvények esetében ne használjon olyan fiókot, amelyen engedélyezve van a Data Lake Storage.

Nagyméretű adathalmazok kezelése

Linux rendszeren való futtatáskor további tárterületet adhat hozzá egy fájlmegosztás csatlakoztatásával. A megosztások csatlakoztatása kényelmes módja annak, hogy egy függvény feldolgozzon egy nagy méretű meglévő adathalmazt. További információ: Fájlmegosztások csatlakoztatása.

A függvények rendszerezése

A megoldás részeként valószínűleg több függvényt fejleszt és tesz közzé. Ezeket a függvényeket gyakran egyetlen függvényalkalmazásban kombinálják, de külön függvényalkalmazásokban is futtathatók. A Prémium és dedikált (App Service) üzemeltetési csomagokban több függvényalkalmazás is megoszthatja ugyanazokat az erőforrásokat, ha ugyanabban a csomagban fut. A függvények és függvényalkalmazások csoportosítása hatással lehet a teljes megoldás teljesítményére, méretezésére, konfigurálására, üzembe helyezésére és biztonságára.

A Használat és a Prémium csomag esetében a függvényalkalmazás összes függvénye dinamikusan skálázható együtt.

További információ a függvények rendszerezéséről: Függvényszervezési ajánlott eljárások.

Üzemelő példányok optimalizálása

Függvényalkalmazás üzembe helyezésekor fontos szem előtt tartani, hogy az Azure-beli függvények üzembe helyezésének egysége a függvényalkalmazás. A függvényalkalmazások összes függvénye egyszerre van üzembe helyezve, általában ugyanabból az üzembe helyezési csomagból.

A sikeres üzembe helyezéshez vegye figyelembe az alábbi lehetőségeket:

  • Futtassa a függvényeket az üzembe helyezési csomagból. A csomagból történő futtatás a következő előnyöket biztosítja:

    • Csökkenti a fájlmásolási zárolási problémák kockázatát.
    • Közvetlenül üzembe helyezhető éles alkalmazásokban, ami újraindítást vált ki.
    • Tudja, hogy a csomagban lévő összes fájl elérhető az alkalmazás számára.
    • Javítja az ARM-sablonok üzembe helyezésének teljesítményét.
    • Csökkentheti a hidegindítási időket, különösen a nagy npm-csomagfákkal rendelkező JavaScript-függvények esetében.
  • Fontolja meg a folyamatos üzembe helyezés használatát az üzemelő példányok a verziókövetési megoldáshoz való csatlakoztatásához. A folyamatos üzembe helyezésekkel az üzembe helyezési csomagból is futtatható.

  • Prémium csomag üzemeltetése esetén érdemes lehet bemelegítési eseményindítót hozzáadni az új példányok hozzáadásakor fellépő késés csökkentése érdekében. További információ: Azure Functions bemelegítési eseményindító.

  • Az üzembehelyezési állásidő minimalizálása és az üzemelő példányok visszaállítása érdekében fontolja meg az üzembehelyezési pontok használatát. További információ: Azure Functions üzembehelyezési pontok.

Robusztus függvények írása

A függvénykód írásakor számos tervezési alapelvet követhet, amelyek segítenek a függvények általános teljesítményében és rendelkezésre állásában. Ezek az alapelvek a következők:

Mivel az átmeneti hibák gyakoriak a felhőalapú számítástechnikában, érdemes újrapróbálkozási mintát használnia a felhőalapú erőforrások elérésekor. Számos eseményindító és kötés már implementálja az újrapróbálkozási elemet.

Biztonságot szem előtt tartó tervezés

A biztonságot a tervezés során érdemes figyelembe venni, és nem azt követően, hogy a függvények készen állnak a használatra. További információ a függvények biztonságos fejlesztéséről és üzembe helyezéséről: Biztonságos Azure Functions.

Egyidejűség megfontolása

Mivel az igények a bejövő események eredményeként a függvényalkalmazásra épülnek, a Használat és Prémium csomagokban futó függvényalkalmazások felskálázódnak. Fontos megérteni, hogyan reagál a függvényalkalmazás a terhelésre, és hogyan konfigurálhatók az eseményindítók a bejövő események kezelésére. Általános áttekintésért lásd: Eseményvezérelt skálázás Azure Functions.

A dedikált (App Service) csomagok használatához meg kell adnia a függvényalkalmazások horizontális felskálázását.

Feldolgozói folyamatok száma

Bizonyos esetekben hatékonyabb a terhelés kezelése több folyamat, úgynevezett nyelvi feldolgozói folyamatok létrehozásával a példányban a felskálázás előtt. Az engedélyezett nyelvi feldolgozói folyamatok maximális számát a FUNCTIONS_WORKER_PROCESS_COUNT beállítás szabályozza. Ennek a beállításnak az alapértelmezett értéke a 1, ami azt jelenti, hogy a rendszer nem használ több folyamatot. Miután elérte a folyamatok maximális számát, a függvényalkalmazás több példányra lesz felskálázva a terhelés kezeléséhez. Ez a beállítás nem vonatkozik a gazdafolyamatban futó C#-osztálytárfüggvényekre.

Prémium csomagon vagy dedikált (App Service) csomagon való használat FUNCTIONS_WORKER_PROCESS_COUNT esetén vegye figyelembe a csomag által biztosított magok számát. A Prémium csomag EP2 például két magot biztosít, ezért szükség szerint két értékkel 2 kell kezdenie, és növelnie kell a maximális értéket.

Triggerkonfiguráció

Az átviteli sebesség és a skálázás tervezésekor fontos tisztában lenni azzal, hogy a különböző típusú eseményindítók hogyan dolgozzák fel az eseményeket. Egyes eseményindítók lehetővé teszik a kötegelési viselkedés szabályozását és az egyidejűség kezelését. Az ilyen beállítások értékeinek módosítása gyakran segíthet az egyes példányok megfelelő méretezésében a meghívott függvények igényeinek megfelelően. Ezek a konfigurációs beállítások egy függvényalkalmazás összes eseményindítójára érvényesek, és az alkalmazás host.json fájljában maradnak. A beállítások részleteiért tekintse meg az adott eseményindító-referencia Konfiguráció szakaszát.

Ha többet szeretne megtudni arról, hogy a Functions hogyan dolgozza fel az üzenetstreameket, tekintse meg Azure Functions megbízható eseményfeldolgozást.

Kapcsolatok tervezése

A Használati csomagban futó függvényalkalmazásokra kapcsolati korlátozások vonatkoznak. Ezek a korlátozások példányonként lesznek kikényszerítve. Ezen korlátok miatt és általános ajánlott eljárásként optimalizálnia kell a függvénykódból származó kimenő kapcsolatokat. További információ: Kapcsolatok kezelése Azure Functions.

Nyelvspecifikus szempontok

A választott nyelvhez tartsa szem előtt a következő szempontokat:

A rendelkezésre állás maximalizálása

A hidegindítás kulcsfontosságú szempont a kiszolgáló nélküli architektúrák esetében. További információ: Hidegindítás. Ha a hidegindítás aggodalomra ad okot a forgatókönyvben, a kiszolgáló nélküli hidegindítás ismertetése című bejegyzésben részletesebben is olvashat.

A prémium csomag az ajánlott csomag a megfázások csökkentéséhez a dinamikus skálázás fenntartása mellett. Az alábbi útmutató segítségével csökkentheti a hidegindításokat, és mindhárom üzemeltetési csomagban javíthatja a rendelkezésre állást.

Felkészülés Útmutató
Prémium szintű csomag Bemelegítési eseményindító implementálása a függvényalkalmazásban
Állítsa be a Always-Ready példányok értékeit és a maximális kipukkadási korlátot
Virtuális hálózati eseményindító-támogatás használata nem HTTP-eseményindítók virtuális hálózaton való használatakor
Dedikált csomagok Futtasson legalább két példányon, ha engedélyezve van az állapot-ellenőrzés Azure App Service
Automatikus skálázás implementálása
Használati terv • Tekintse át a Singleton-minták használatát, valamint a kötések és triggerek egyidejűségi beállításait, hogy elkerülje a függvényalkalmazás méretezésére vonatkozó korlátok mesterséges elhelyezését.
Tekintse át a functionAppScaleLimit beállítást, amely korlátozhatja a vertikális felskálázást
• Ellenőrizze, hogy van-e megadva a napi használati kvóta (GB-s) korlátja a fejlesztés és a tesztelés során. Érdemes lehet eltávolítani ezt a korlátot éles környezetekben.

Hatékony monitorozás

Azure Functions beépített integrációt kínál a Azure-alkalmazás Insights szolgáltatással a függvények végrehajtásának és a kódból írt nyomkövetések figyeléséhez. További információ: Monitorozási Azure Functions. Az Azure Monitor a függvényalkalmazás állapotának monitorozására is lehetőséget nyújt. További információ: Monitorozás az Azure Monitorral.

A következő szempontokat kell figyelembe vennie, amikor az Application Insights-integrációt használja a függvények monitorozásához:

  • Győződjön meg arról, hogy az AzureWebJobsDashboard alkalmazásbeállítás el lett távolítva. Ezt a beállítást a Functions régebbi verziói támogatták. Ha létezik, az eltávolítás AzureWebJobsDashboard javítja a függvények teljesítményét.

  • Tekintse át az Application Insights naplóit. Ha a keresett adatok hiányoznak, érdemes lehet módosítani a mintavételezési beállításokat a monitorozási forgatókönyv jobb rögzítése érdekében. A beállítással excludedTypes kizárhat bizonyos típusokat a mintavételezésből, például Request vagy Exception. További információ: Mintavételezés konfigurálása.

Azure Functions lehetővé teszi a rendszer által generált és a felhasználó által létrehozott naplók Azure Monitor-naplókba való küldését is. Az Azure Monitor-naplókkal való integráció jelenleg előzetes verzióban érhető el.

Buildelés redundanciában

Előfordulhat, hogy az üzleti igényei megkövetelik, hogy a függvények mindig elérhetők legyenek, még az adatközpont kimaradása esetén is. Ha többet szeretne megtudni arról, hogyan használhat többrégiós megközelítést a kritikus funkciók folyamatos működtetéséhez, tekintse meg Azure Functions georedundáns helyreállítást és magas rendelkezésre állást.

Következő lépések

A függvényalkalmazás kezelése