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_CONTENTSHARE
a 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:
- Használati terv
- Dedikált terv
- Prémium csomag VNET-integrációval
- Használatalapú csomag ü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 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:
- Kerülje a hosszú ideig futó függvényeket.
- Tervezze meg a függvények közötti kommunikációt.
- Állapot nélküli függvények írása.
- Védekező függvények írása.
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áulRequest
vagyException
. 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.