Ajánlott eljárások a megbízható Azure Functions használatához
Az Azure Functions egy eseményvezérelt, igény szerinti számítási felület, amely kibővíti a meglévő Azure-alkalmazás szolgáltatásalkalmazási platformot az Azure-ban, külső szolgáltatásban és 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 fognak történni. 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 az Azure Functions által biztosított üzemeltetési csomagok:
Fontos
A Rugalmas használat csomag jelenleg előzetes verzióban érhető el.
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óké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 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ó: Migrálás megtervezve.
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ókért tekintse meg 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.
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_CONTENTSHARE
az Ö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
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 WEBSITE_CONTENTAZUREFILECONNECTIONSTRING
az AzureWebJobsStorage
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 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 tekintse meg az Azure Functions bemelegítési eseményindítóját.
Az üzembe helyezé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ókért tekintse meg az Azure Functions üzembehelyezési pontjait.
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.
- Állapot nélküli írási függvények.
- 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 1
alapé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ás. Ha a hidegindítás aggodalomra ad okot a forgatókönyvben, részletesebben is megismerkedhet a kiszolgáló nélküli hidegindításról szóló 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.
Felkészülés | Ú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ó: Az Azure Functions monitorozása. Az Azure Monitor emellett a függvényalkalmazás állapotának monitorozására is alkalmas. További információ: Monitorozás az Azure Monitorral.
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
AzureWebJobsDashboard
javí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
excludedTypes
kizárhat bizonyos típusokat a mintavételezésből, példáulRequest
.Exception
További információ: Mintavételezés konfigurálása.
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 geo-vészhelyreállítását és magas rendelkezésre állását.