Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az Azure Functions egy eseményvezérelt, igény szerinti számítási felület, amely kibővíti a meglévő Azure App Service-alkalmazásplatformot az Azure-ban, a partnerszolgáltatásban és a helyszíni rendszerekben bekövetkező események által aktivált kód implementálására szolgáló képességekkel. A Functions lehetővé teszi a megoldások létrehozását adatforrásokhoz vagy üzenetkezelési megoldásokhoz való csatlakozással, ami megkönnyíti az események feldolgozását és az eseményekre való reagálást. A függvények azure-adatközpontokban 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 következhetnek be. 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.
Válassza ki a megfelelő üzemeltetési tervet
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 terv hatással van a teljesítményre, a megbízhatóságra és a költségekre. Ezek a lehetőségek az Azure Functions által biztosított üzemeltetési csomagok:
A Rugalmas használat csomag általában ajánlott a dinamikus skálázású alkalmazások üzemeltetéséhez.
Az 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ó: Azure Functions Premium-csomag.
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 azure-beli virtuális hálózati kapcsolatok támogatása.
A megfelelő üzemeltetési csomag kiválasztásáról és a csomagok részletes összehasonlításáról az Azure Functions üzemeltetési lehetőségei című témakörben olvashat bővebben.
A függvényalkalmazás létrehozásakor fontos, hogy a megfelelő tervet válassza. A Functions korlátozott lehetőséget biztosít az üzemeltetési csomag váltására, elsősorban a Fogyasztás és az Elastic Premium csomagok között. További információért lásd: Migrálás megtervezése.
A tárolás megfelelő konfigurálása
A függvényekhez 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 naplózási függvények végrehajtása. A függvényalkalmazások dinamikus skálázásakor is használatos. További információért lásd az Azure Functions tárolási szempontjait.
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árolási hibaelhárítási cikket.
Tárolási kapcsolat beállításai
A dinamikusan skálázható függvényalkalmazások futtathatók a tárfiók egyik Azure Files-végpontjáról vagy a kibővített példányokhoz társított fájlkiszolgálókról. Ezt a viselkedést az alábbi alkalmazásbeállítások vezérlik:
Ezek a beállítások csak akkor támogatottak, ha Prémium csomagban vagy Használati csomagban fut Windows rendszeren. A Rugalmas használat csomag nem igényli őket, amely egy Blob Storage-tárolót használ üzembehelyezési csomagok üzemeltetésére azure Files-megosztás helyett.
Amikor a függvényalkalmazást az Azure Portalon vagy az Azure CLI vagy az Azure PowerShell használatával hozza létre, ezek a beállítások szükség esetén létrejönnek a függvényalkalmazáshoz. Amikor azure Resource Manager-sablonból (ARM-sablonból) hozza létre az erőforrásokat, a sablonban is szerepelnie WEBSITE_CONTENTAZUREFILECONNECTIONSTRING kell.
Az első ARM-sablont használó üzembe helyezéskor ne tartalmazza WEBSITE_CONTENTSHAREaz Ön számára létrehozott elemet.
A beállítások helyes konfigurálásához az alábbi ARM-sablon példákat használhatja:
- Használati terv
- Dedikált terv
- Prémium csomag VNET-integrációval
- Használati terv üzembehelyezési ponttal
Fontos
Az Azure Files szolgáltatás jelenleg nem támogatja az identitásalapú kapcsolatokat. A Rugalmas használat csomag teljes mértékben támogatja a felügyelt identitásokat. További információ: Alkalmazás létrehozása Azure Files nélkül.
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 az olyan műveletekhez, mint az eseményindítók kezelése és a naplózási függvények végrehajtása. A függvényalkalmazáshoz kapcsolati sztring tárfiók az és AzureWebJobsStorage az WEBSITE_CONTENTAZUREFILECONNECTIONSTRING alkalmazás beállításai 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 a szempont különösen igaz a Durable Functions és az Event Hubs által aktivált függvényekre.
Az Event Hubs á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 egy fájlmegosztás csatlakoztatásával további tárterületet adhat hozzá. 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é. Ezek a függvények gyakran egyetlen függvényalkalmazásba vannak kombinálva, 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 befolyásolhatja a teljes megoldás teljesítményét, skálázását, konfigurációját, üzembe helyezését és biztonságát.
A Használat és a Prémium csomag esetében a függvényalkalmazások összes függvénye dinamikusan skálázva van.
A függvények rendszerezéséről további információt a függvényszervezés ajánlott eljárásaiban talál.
Üzemelő példányok optimalizálása
A függvényalkalmazások ü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 üzembehelyezési csomagból. Ez a csomag-megközelítésből való futtatás a következő előnyöket nyújtja:
- Csökkenti a fájlmásolási zárolási problémák kockázatát.
- Közvetlenül üzembe helyezhető éles alkalmazásokban, amelyek újraindítást váltanak ki.
- Tudja, hogy a csomag összes fájlja elérhető az alkalmazás számára.
- Javítja az ARM-sablontelepítések teljesítményét.
- Csökkentheti a hidegindítási időket, különösen 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 forrásvezérlő 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ókért lásd az Azure Functions bemelegítési eseményindítóját.
Az üzembe helyezési állásidő minimalizálása érdekében használjon deployment slotokat a Consumption, a Premium és a Dedicated tervekhez, vagy konfigurálja a gördülő frissítéseket a Flex fogyasztási tervben, hogy elérje a nulla leállású üzembe helyezést. További információ: Azure Functions üzembehelyezési pontok és helyfrissítési stratégiák a Flex Consumptionben.
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:
- Kerülje a hosszú ideig futó függvényeket
- Függvények közötti kommunikáció tervezése
- Írd meg a függvényeket állapot nélkül
- Védekező függvények írása
Mivel az átmeneti hibák gyakoriak a felhőalapú számítástechnikában, újrapróbálkozási mintát kell 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ési fázisban érdemes figyelembe venni, és nem azt követően, hogy a függvények készen állnak a használatra. A függvények biztonságos fejlesztésének és üzembe helyezésének megismeréséhez tekintse meg az Azure Functions biztonságossá tételét ismertető témakört.
Fontolja meg az egyidejűséget
Mivel az igény a függvényalkalmazásra a bejövő események eredményeként épül fel, a Használat és Prémium csomagokban futó függvényalkalmazások felskálázódnak. Fontos tisztában lenni azzal, hogy a függvényalkalmazás hogyan reagál 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 tekintse meg az Eseményvezérelt skálázást az Azure Functionsben.
A dedikált (App Service-) csomagok megkövetelik 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, ha több folyamatot, úgynevezett nyelvi feldolgozó folyamatot hoz létre a példányban a vertikális 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 1alapértelmezett értéke, 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 ská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 vagy Dedikált (App Service) csomag esetén FUNCTIONS_WORKER_PROCESS_COUNT 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 kettővel 2 kell kezdenie, és a maximális értékre kell növelnie.
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. A beállítások értékeinek módosítása gyakran segíthet az egyes példányok skálázásában a meghívott függvények igényeinek megfelelően. Ezeket a konfigurációs beállításokat a függvényalkalmazás összes eseményindítója alkalmazza, és az alkalmazás host.json fájljában is megmaradnak. 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 az Azure Functions megbízható eseményfeldolgozását.
Kapcsolatok tervezése
A Használati tervben futó függvényalkalmazásokra kapcsolati korlátok vonatkoznak. Ezeket a korlátokat példányonként kell kikényszeríteni. Ezen korlátok miatt és általános ajánlott eljárásként optimalizálnia kell a kimenő kapcsolatokat a függvénykódból. További információ: Kapcsolatok kezelése az Azure Functionsben.
Nyelvspecifikus szempontok
A választott nyelvhez tartsa szem előtt a következő szempontokat:
Használjon aszinkron kódot, de kerülje a hívások blokkolását.
Használjon lemondási jogkivonatokat (csak folyamatban).
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ások. Ha a hidegindítás problémát jelent az Ön forgatókönyvében, részletesebb betekintést találhat a A kiszolgáló nélküli hidegindítás megértése című bejegyzésben.
A prémium csomag a dinamikus skálázás fenntartása mellett javasolt a megfázások csökkentésére. 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.
| Csomag | Útmutató |
|---|---|
| Prémium csomag | • Bemelegítési eseményindító implementálása a függvényalkalmazásban • Az Always-Ready példányok és a maximális kipukkadási korlát értékeinek beállítása • 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 tervek | • Futtasson legalább két példányon, ha engedélyezve van Azure-alkalmazás szolgáltatásállapot-ellenőrzés • 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ési korlátainak mesterséges elhelyezését. • Tekintse át a beállítást, amely korlátozhatja a functionAppScaleLimit vertikális felskálázást• A napi használati kvóta (GB-s) korlátjának ellenőrzése a fejlesztés és tesztelés során. Érdemes lehet eltávolítani ezt a korlátot éles környezetekben. |
Hatékonyan monitorozás
Az Azure Functions beépített integrációt kínál a Azure-alkalmazás Insights szolgáltatással a függvény végrehajtásának és a kódból írt nyomkövetések figyeléséhez. További információ: Végrehajtások monitorozása az Azure Functionsben. Az Azure Monitor emellett a függvényalkalmazás állapotának monitorozására is alkalmas. További információ: Az Azure Functions monitorozása.
A függvények monitorozásához az Application Insights-integráció használatakor a következő szempontokat kell figyelembe vennie:
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
AzureWebJobsDashboardjavítja a függvények teljesítményét.Tekintse át az Application Insights naplóit. Ha a várhatóan hiányzó adatok hiányoznak, fontolja meg a mintavételezési beállítások módosítását a monitorozási forgatókönyv jobb rögzítése érdekében. A beállítással
excludedTypeskizárhat bizonyos típusokat a mintavételezésből, példáulRequest.ExceptionTovábbi információért lásd a mintavételezés konfigurálásával foglalkozó részt.
Az 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özpontok üzemkimaradása során is. Ha többet szeretne megtudni arról, hogyan használhat többrégiós megközelítést a kritikus függvények folyamatos működéséhez, tekintse meg az Azure Functions megbízhatóságát.