Share via


Javaslatok háttérfeladatok fejlesztésére

Erre az Azure Well-Architected Framework megbízhatósági ellenőrzőlistára vonatkozó javaslatra vonatkozik:

RE:07 Önmegőrző és önjavító intézkedések végrehajtásával erősítheti a számítási feladatok rugalmasságát és helyreállíthatóságát. Képességeket építhet be a megoldásba infrastruktúra-alapú megbízhatósági minták és szoftveralapú tervezési minták használatával az összetevők hibáinak és átmeneti hibáinak kezeléséhez. Képességeket építhet be a rendszerbe a megoldás-összetevők hibáinak észleléséhez, és automatikusan korrekciós műveletet kezdeményezhet, miközben a számítási feladat továbbra is teljes vagy csökkentett funkcionalitással működik.

Kapcsolódó útmutatók:Átmeneti hibák | Önmegőrzés

Ez az útmutató a háttérfeladatok fejlesztésére vonatkozó javaslatokat ismerteti. A háttérfeladatok automatikusan, felhasználói beavatkozás nélkül futnak. Számos alkalmazáshoz a felhasználói felülettől független háttérfeladatok szükségesek.

A háttérfeladatok közé tartoznak például a kötegelt feladatok, az intenzív feldolgozási feladatok és a hosszú ideig futó folyamatok, például a munkafolyamatok. Az alkalmazás elindítja a feladatot, és feldolgozza a felhasználóktól érkező interaktív kéréseket. Ha például egy alkalmazásnak miniatűröket kell létrehoznia a felhasználók által feltöltött képekből, háttérfeladatot is végrehajthat a miniatűr létrehozásához és a tárba való mentéséhez. A felhasználónak nem kell megvárnia a folyamat befejezését. Egy másik példaként egy ügyfél megrendelést helyez el, amely elindít egy háttér-munkafolyamatot, amely feldolgozza a rendelést. Az ügyfél továbbra is böngészik a webalkalmazást, amíg a háttérfeladat fut. A háttérfeladat befejezése után frissíti a tárolt rendelési adatokat, és e-mailt küld az ügyfélnek a megrendelés megerősítéséhez.

A háttérfeladatok segítenek minimalizálni az alkalmazás felhasználói felületének terhelését, ami javítja a rendelkezésre állást és csökkenti az interaktív válaszidőt.

Fő tervezési stratégiák

A háttérfeladatként kijelölendő feladat kiválasztásához fontolja meg, hogy a tevékenység felhasználói beavatkozás nélkül fut-e, és hogy a felhasználói felületnek várnia kell-e a feladat befejezésére. Azok a feladatok, amelyekhez a felhasználó vagy a felhasználói felület várnia kell a futtatásuk során, általában nem megfelelő háttérfeladatok.

Háttérfeladatok típusai

Néhány példa háttérfeladatokra:

  • Számításigényes feladatok, például matematikai számítások vagy szerkezeti modellek elemzése.

  • I/O-igényes feladatok, például tárolótranzakciók futtatása vagy fájlok indexelése.

  • Kötegelt feladatok, például éjszakai adatfrissítések vagy ütemezett feldolgozás.

  • Hosszú ideig futó munkafolyamatok, például megrendelések teljesítése vagy kiépítési szolgáltatások és rendszerek.

  • Bizalmas adatfeldolgozás, amely a feladatot egy biztonságosabb helyre továbbítja feldolgozásra. Például előfordulhat, hogy a bizalmas adatokat nem szeretné egy adott webalkalmazáson belül feldolgozni. Ehelyett használhat egy mintát, például a Gatekeeper-mintát az adatok védett tárhoz való hozzáféréssel rendelkező elkülönített háttérfolyamatba való átviteléhez.

Triggerek

Háttérfeladatok kezdeményezése a következőkkel:

Eseményvezérelt eseményindítók

Egy művelet eseményvezérelt meghívást aktivál, amely elindítja a háttérfeladatot. Az eseményvezérelt eseményindítók például a következők:

  • A felhasználói felület vagy egy másik feladat egy üzenetsorba helyez egy üzenetet a Web-Queue-Worker architektúrastílusban leírtak szerint. Az üzenet egy korábban végrehajtott művelet adatait tartalmazza, például egy rendelést leadó ügyfelet. A háttérfeladat figyeli ezt az üzenetsort, és észleli egy új üzenet érkezését. Beolvassa az üzenetet, és az üzenet adatait használja a háttérfeladat bemeneteként. Ezt a mintát aszinkron üzenetalapú kommunikációnak nevezzük.

  • A felhasználói felület vagy egy másik feladat a tárolóban lévő értéket menti vagy frissíti. A háttérfeladat figyeli a tárterületet, és észleli a változásokat. Beolvassa az adatokat, és a háttérfeladat bemeneteként használja.

  • A felhasználói felület vagy egy másik feladat kérést küld egy végpontra, például egy HTTPS URI-ra vagy egy webszolgáltatásként közzétett API-ra. A kérés részeként a felhasználói felület vagy a feladat a háttérfeladat által igényelt adatokat továbbítja. A végpont vagy a webszolgáltatás meghívja a háttérfeladatot, amely az adatokat használja bemenetként.

Az eseményvezérelt híváshoz alkalmas feladatokra további példák a képfeldolgozás, a munkafolyamatok, az információk távoli szolgáltatásoknak való elküldése, e-mailek küldése és új felhasználók kiépítése több-bérlős alkalmazásokban.

Ütemezésvezérelt eseményindítók

Az időzítő egy ütemezésalapú meghívást aktivál, amely elindítja a háttérfeladatot. Az ütemezésalapú eseményindítók például a következők:

  • Az alkalmazáson belül vagy az alkalmazás operációs rendszerének részeként helyileg futó időzítő rendszeresen meghív egy háttérfeladatot.

  • Egy másik alkalmazásban, például az Azure Logic Appsben futó időzítő rendszeresen küld kérést egy API-nak vagy webszolgáltatásnak. Az API vagy a webszolgáltatás meghívja a háttérfeladatot.

  • Egy külön folyamat vagy alkalmazás elindít egy időzítőt, amely egy időkésés után vagy egy adott időpontban hívja meg a háttérfeladatot.

Az ütemezésalapú híváshoz alkalmas feladatokra további példák a kötegelt feldolgozási rutinok (például a kapcsolódó termékek listájának frissítése az ügyfelek számára a legutóbbi viselkedésük alapján), a rutin adatfeldolgozási feladatok (például indexek frissítése vagy halmozott eredmények létrehozása), a napi jelentések adatelemzése, az adatmegőrzés törlése és az adatkonzisztencia-ellenőrzések.

Ha olyan ütemezésalapú feladatot használ, amelyet egyetlen példányként kell futtatnia, tekintse át az alábbi szempontokat:

  • Ha az ütemezőt futtató számítási példány , például egy Windows ütemezett feladatokat használó virtuális gép (VM) skálázva van, akkor az ütemező több példányát futtatja. Az ütemező több példánya is elindíthatja a feladat több példányát. További információ: Mit jelent az idempotens a szoftverrendszerekben?

  • Ha a tevékenységek az ütemező eseményei közötti időszaknál hosszabb ideig futnak, előfordulhat, hogy az ütemező a tevékenység egy másik példányát indítja el az előző tevékenység futtatása közben.

Eredmények visszaadva

A háttérfeladatok aszinkron módon futnak egy külön folyamatban, vagy akár egy külön helyen, a felhasználói felülettől vagy a háttérfeladatot meghívó folyamattól. Ideális esetben a háttérfeladatok a tűz és a felejtési műveletek. A futtatókörnyezet állapota nincs hatással a felhasználói felületre vagy a hívási folyamatra, ami azt jelenti, hogy a hívási folyamat nem várja meg a feladatok befejezését. A felhasználói felület és a hívási folyamat nem tudja észlelni a feladat befejezésekor.

Ha a hívási feladattal való kommunikációhoz háttérfeladatra van szükség az előrehaladás vagy a befejezés jelzéséhez, implementálnia kell egy mechanizmust. Néhány példa a következőkre:

  • Írjon egy állapotjelző értéket a felhasználói felület vagy a hívó feladat számára elérhető tárolóba, amely figyelheti vagy ellenőrizheti ezt az értéket. A háttérfeladat által a hívónak visszaadott egyéb adatok ugyanabban a tárolóban helyezhetők el.

  • Hozzon létre egy válaszsort, amelyet a felhasználói felület vagy a hívó figyel. A háttérfeladat üzeneteket küldhet az állapotot jelző üzenetsorba. A háttérfeladat által a hívónak visszaadott adatok elhelyezhetők az üzenetekben. A Azure Service Bus a és CorrelationId a ReplyTo tulajdonság használatával implementálhatja ezt a képességet.

  • Elérhetővé tehet egy API-t vagy végpontot a háttérfeladatból, amelyet a felhasználói felület vagy a meghívó el tud érni az állapotadatok beszerzéséhez. A válasz tartalmazhatja azokat az adatokat, amelyeket a háttérfeladat visszaad a hívónak.

  • Konfigurálja a háttérfeladatot úgy, hogy egy API-n keresztül visszahívja a felhasználói felületet vagy a hívót, hogy jelezze az állapotot az előre meghatározott pontokon vagy a befejezéskor. Használhat helyileg létrehozott eseményeket vagy közzétételi és feliratkozási mechanizmust. A kérés vagy az esemény hasznos adatai tartalmazhatják azokat az adatokat, amelyeket a háttérfeladat visszaad a hívónak.

Háttérfeladatok particionálása

Ha háttérfeladatokat vesz fel egy meglévő számítási példányba, fontolja meg, hogy ezek a változások hogyan befolyásolják a számítási példány és a háttérfeladat minőségi attribútumait. Vegye figyelembe ezeket a tényezőket annak eldöntéséhez, hogy a feladatokat a meglévő számítási példánysal együtt helyezi-e el, vagy egy másik számítási példányra szeretné-e szétválasztani:

  • Rendelkezésre állás: Előfordulhat, hogy a háttérfeladatok nem igényelnek ugyanolyan szintű rendelkezésre állást, mint az alkalmazás más részei, különösen a felhasználói felület és a felhasználói interakciót közvetlenül érintő részek. Előfordulhat, hogy a háttérfeladatok nagyobb tűréshatárt biztosítanak a késésre, az újrapróbálkozási csatlakozási hibákra és más tényezőkre, amelyek befolyásolják a rendelkezésre állást, mivel a műveletek várólistára helyezhetők. Azonban elegendő kapacitással kell rendelkeznie ahhoz, hogy megakadályozza a biztonsági mentési kéréseket, amelyek blokkolhatják az üzenetsorokat, és hatással lehetnek a teljes alkalmazásra.

  • Méretezhetőség: A háttérfeladatok skálázhatósági követelményei valószínűleg eltérnek az alkalmazás felhasználói felületéhez és interaktív részeihez képest. Előfordulhat, hogy skáláznia kell a felhasználói felületet, hogy megfeleljen az igények csúcsainak. A kiemelkedő háttérfeladatok a kevésbé elfoglalt időszakokban és kevesebb számítási példány esetén is futtathatók.

  • Rugalmasság: Ha egy olyan számítási példány, amely csak a háttérfeladatokat üzemelteti, meghiúsul, előfordulhat, hogy nem lesz végzetes hatással a teljes alkalmazásra. Az ilyen tevékenységekre vonatkozó kérések várólistára helyezhetők vagy elhalaszthatók, amíg a tevékenység elérhetővé nem válik. Ha a számítási példány vagy a feladatok megfelelő időközönként újraindulhatnak, az nem feltétlenül érinti az alkalmazás felhasználóit.

  • Biztonság: A háttérfeladatok eltérő biztonsági követelményekkel vagy korlátozásokkal rendelkezhetnek az alkalmazás felhasználói felületéhez vagy más részeihez képest. Egy külön számítási példány használatával adjon meg egy másik biztonsági környezetet a feladatokhoz. A biztonság és az elkülönítés maximalizálása érdekében olyan mintákat is használhat, mint a Gatekeeper, hogy elkülönítse a háttérbeli számítási példányokat a felhasználói felülettől.

  • Teljesítmény: Válassza ki a számítási példány típusát olyan háttérfeladatokhoz, amelyek kifejezetten megfelelnek a tevékenység teljesítménykövetelményeinek. Előfordulhat, hogy kevésbé költséges számítási lehetőséget használ, ha a feladatokhoz nem kell ugyanazokat a feldolgozási képességeket használni, mint a felhasználói felület. Vagy nagyobb példányt is használhat, ha a feladatokhoz több kapacitásra és erőforrásra van szükség.

  • Kezelhetőség: A háttérfeladatok fejlesztési és üzembehelyezési ritmusa eltérő lehet a fő alkalmazáskódhoz vagy a felhasználói felülethez képest. A frissítések és a verziószámozás egyszerűsítése érdekében helyezzen üzembe háttérfeladatokat egy külön számítási példányon.

  • Költség: Ha számítási példányokat ad hozzá a háttérfeladatok futtatásához, az üzemeltetési költségek növekednek. Alaposan fontolja meg a nagyobb kapacitás és a többletköltségek közötti kompromisszumot.

További információ: Vezetőválasztási minta és versengő fogyasztók mintája.

Ütközések

Ha egy háttérfeladat több példányával rendelkezik, versenyezhetnek az erőforrásokhoz és szolgáltatásokhoz, például az adatbázisokhoz és a tárolókhoz való hozzáférésért. Ez az egyidejű hozzáférés erőforrás-versengést eredményezhet, ami szolgáltatás rendelkezésre állási ütközéseket okozhat, és károsíthatja a tárolóban lévő adatok integritását. Az erőforrás-versengést pesszimista-zárolási megközelítéssel oldhatja meg. Ez a megközelítés megakadályozza, hogy egy feladat versengő példányai egyidejűleg hozzáférjenek egy szolgáltatáshoz vagy sérültek az adatok.

Az ütközések megoldásának másik módszere a háttérfeladatok önállóként való definiálása, hogy csak egy példány fusson. Ez a megközelítés azonban kiküszöböli a többpéldányos konfigurációk megbízhatósági és teljesítménybeli előnyeit. Ez a hátrány különösen akkor igaz, ha a felhasználói felület elegendő munkát biztosít ahhoz, hogy egynél több háttérfeladat legyen elfoglalva.

Győződjön meg arról, hogy a háttérfeladat automatikusan újraindulhat, és elegendő kapacitással rendelkezik az igények csúcsainak kezeléséhez. Foglaljon le egy számítási példányt elegendő erőforrással, implementáljon egy üzenetsor-kezelési mechanizmust, amely tárolja a kérelmek futtatására irányuló kéréseket, amikor csökken az igény, vagy használja ezeket a technikákat.

Koordináció

A háttérfeladatok összetettek lehetnek, és több feladat futtatását igénylik. Ezekben a forgatókönyvekben gyakori, hogy a feladatot kisebb különálló lépésekre vagy altevékenységekre osztja, amelyeket több felhasználó is futtathat. A többlépéses feladatok hatékonyabbak és rugalmasabbak, mivel az egyes lépések gyakran több feladatban is újrafelhasználhatók. A lépések sorrendjét is egyszerűen felveheti, eltávolíthatja vagy módosíthatja.

Kihívást jelenthet több feladat és lépés koordinálása, de a megoldáshoz három gyakori minta áll rendelkezésre:

  • Bontsa fel a feladatokat több újrafelhasználható lépésre. Előfordulhat, hogy egy alkalmazásnak különböző összetettségi feladatokat kell végrehajtania a feldolgozandó információkon. Az ilyen alkalmazások implementálásának egyszerű, de rugalmatlan megközelítése a feldolgozás monolitikus modulként történő végrehajtása. Ez a megközelítés azonban valószínűleg csökkenti a kód újrabontásának, optimalizálásának vagy újrafelhasználásának lehetőségét, ha az alkalmazásnak ugyanannak a feldolgozásnak máshol kell részeit igényelnie. További információ: Csövek és szűrők minta.

  • A feladat lépéseinek vezénylése. Az alkalmazások számos lépést tartalmazó feladatokat hajthatnak végre, amelyek némelyike távoli szolgáltatásokat hívhat meg, vagy távoli erőforrásokhoz férhet hozzá. Néha az egyes lépések függetlenek egymástól, de a feladatot megvalósító alkalmazáslogika vezénylik őket. További információ: Ütemezőügynök felügyeleti mintája.

  • A sikertelen feladatlépések helyreállításának kezelése. Ha egy vagy több lépés meghiúsul, előfordulhat, hogy egy alkalmazásnak vissza kell vonnia a lépések sorozata által elvégzett munkát, amely együttesen határoz meg egy végül konzisztens műveletet. További információ: Kompenzáló tranzakciós minta.

Rugalmassággal kapcsolatos szempontok

Rugalmas háttérfeladatok létrehozása az alkalmazás megbízható szolgáltatásainak biztosításához. A háttérfeladatok tervezésekor és tervezésekor vegye figyelembe a következő szempontokat:

  • A háttérfeladatoknak zökkenőmentesen kell kezelnie az újraindításokat anélkül, hogy az adatok megsérülnek, vagy inkonzisztenciát vezetnek be az alkalmazásba. A hosszú ideig futó vagy többlépéses feladatokhoz érdemes ellenőrzőpontokat használni. Ellenőrzőpontok használatával mentheti a feladatok állapotát az állandó tárolóban vagy üzenetsorban. Tárolhat például állapotadatokat egy üzenetsorban, és növekményesen frissítheti ezeket az állapotadatokat a tevékenység előrehaladásával. A feladat az első újraindítás helyett az utolsó ismert ellenőrzőpontról is feldolgozható.

    Service Bus-üzenetsorok esetén ehhez az üzenet-munkameneteket használja. Üzenet-munkamenetek esetén mentse és kérje le az alkalmazás feldolgozási állapotát a SetState és a GetState metódusok használatával. A megbízható többlépéses folyamatok és munkafolyamatok tervezésével kapcsolatos további információkért lásd: Scheduler Agent Supervisor-minta.

  • Ha üzenetsorokat használ a háttérfeladatokkal folytatott kommunikációhoz, az üzenetsorok használhatók pufferként, amelyek tárolják a feladatoknak küldött kéréseket, amíg az alkalmazás a szokottnál magasabb terheléssel működik. A tevékenységek kevésbé elfoglalt időszakokban utolérhetik a felhasználói felületet, és az újraindítások nem blokkolják a felhasználói felületet. További információ: Üzenetsor-alapú terheléselosztási minta. Ha egyes feladatok fontosabbak, mint mások, fontolja meg a Prioritási üzenetsor minta implementálását annak biztosítása érdekében, hogy ezek a tevékenységek először fussanak.

Üzenetek

Konfigurálja az üzenetek által kezdeményezett vagy az üzeneteket feldolgozó háttérfeladatokat az inkonzisztenciák kezelésére, például a sorrendből érkező üzeneteket, az ismétlődően hibát okozó üzeneteket (mérgező üzeneteket) és a többször kézbesített üzeneteket. Vegye figyelembe a következőket:

  • Előfordulhat, hogy az üzeneteket egy adott sorrendben kell feldolgozni, például azokat az üzeneteket, amelyek a meglévő adatérték alapján módosítják az adatokat, például értéket ad hozzá egy meglévő értékhez. Az üzenetek nem mindig az elküldött sorrendben érkeznek meg. Emellett a háttérfeladat különböző példányai eltérő sorrendben dolgozhatják fel az üzeneteket az egyes példányok eltérő terhelése miatt.

    Az adott sorrendben feldolgozandó üzenetekhez tartalmazzon egy sorszámot, kulcsot vagy egy másik mutatót, amellyel a háttérfeladatok a megfelelő sorrendben dolgozhatják fel az üzeneteket. A Service Bus esetében üzenet-munkamenetekkel garantálhatja a helyes kézbesítési sorrendet. Hatékonyabb a folyamat megtervezése, hogy az üzenetsorrend ne legyen fontos. További információ: Üzenetszekvenálás és időbélyegek.

  • Általában egy háttérfeladat betekint az üzenetsor üzeneteibe, ami ideiglenesen elrejti őket más üzenetfogyasztók elől. Miután a feladat sikeresen feldolgozta az üzenetet, törli az üzenetet. Ha egy háttérfeladat meghiúsul egy üzenet feldolgozásakor, az üzenet a betekintési időtúllépés lejárta után újra megjelenik az üzenetsorban. A feladat egy másik példánya dolgozza fel az üzenetet, vagy az eredeti példány következő feldolgozási ciklusa dolgozza fel az üzenetet.

    Ha az üzenet következetesen hibát okoz a fogyasztóban, blokkolja a feladatot, az üzenetsort, és végül magát az alkalmazást, amikor megtelik az üzenetsor. Létfontosságú a mérgező üzenetek észlelése és eltávolítása az üzenetsorból. A Service Bus használata esetén automatikusan vagy manuálisan áthelyezheti a mérgező üzeneteket egy társított kézbesítetlen levelek üzenetsorába.

  • Az üzenetsorok legalább egyszeri kézbesítési mechanizmusok, de előfordulhat, hogy többször is kézbesítik ugyanazt az üzenetet. Ha egy háttérfeladat az üzenet feldolgozása után meghiúsul, de mielőtt törli azt az üzenetsorból, az üzenet újra feldolgozható.

    A háttérfeladatoknak idempotensnek kell lenniük, ami azt jelenti, hogy ha a tevékenység többször dolgozza fel ugyanazt az üzenetet, az nem okoz hibát vagy inkonzisztensséget az alkalmazás adataiban. Egyes műveletek természetesen idempotensek, például ha egy tárolt érték egy adott új értékre van állítva. Egyes műveletek azonban inkonzisztenciákat okoznak, például ha egy értéket hozzáadnak egy meglévő tárolt értékhez anélkül, hogy ellenőrizték volna, hogy a tárolt érték továbbra is ugyanaz-e, mint az üzenet eredeti elküldésekor. Konfigurálja a Service Bus-üzenetsorokat a duplikált üzenetek automatikus eltávolításához. További információ: Idempotens üzenetfeldolgozás.

  • Egyes üzenetkezelési rendszerek, például az Azure Storage-üzenetsorok és a Service Bus-üzenetsorok támogatják a lekérdezések számát jelző tulajdonságot, amely azt jelzi, hogy hányszor olvassa be a rendszer az üzenetsorból érkező üzeneteket. Ezek az adatok hasznosak az ismétlődő üzenetek és a mérgezett üzenetek kezeléséhez. További információ: Aszinkron üzenetkezelési alapozó és idempotenciaminták.

A méretezéssel és a teljesítménnyel kapcsolatos szempontok

A háttérfeladatok elegendő teljesítményt nyújtanak annak biztosításához, hogy ne blokkolják az alkalmazást vagy a késleltetési műveletet, ha a rendszer terhelés alatt áll. A teljesítmény általában javul a háttérfeladatokat üzemeltető számítási példányok skálázásakor. A háttérfeladatok megtervezésekor és tervezésekor vegye figyelembe a skálázhatóságra és a teljesítményre vonatkozó alábbi pontokat:

  • Az Azure Virtual Machines és a Azure App Service Web Apps funkciója üzemelő példányokat üzemeltethet. Támogatják az automatikus skálázást, a horizontális felskálázást és a skálázást is. Az automatikus skálázást az igény és a terhelés vagy egy előre meghatározott ütemezés határozza meg. Az automatikus skálázás segítségével gondoskodhat arról, hogy az alkalmazás elegendő teljesítménnyel rendelkezzen, miközben minimalizálja a futásidejű költségeket.

  • Egyes háttérfeladatok más teljesítménnyel rendelkeznek, mint az alkalmazás más részei, például a felhasználói felület vagy az összetevők, például az adatelérési réteg. Ebben a forgatókönyvben a háttérfeladatokat egy külön számítási szolgáltatásban kell üzemeltetnie, hogy a felhasználói felület és a háttérfeladatok egymástól függetlenül skálázhatók a terhelés kezeléséhez. Ha több háttérfeladat teljesítménye jelentősen eltérő, ossza el őket, és skálázza egymástól függetlenül az egyes típusokat. Ez a technika növelheti a futtatókörnyezet költségeit.

  • A terhelés alatti teljesítményvesztés elkerülése érdekében előfordulhat, hogy a tárolási üzenetsorokat és más erőforrásokat is skáláznia kell, hogy a feldolgozási lánc egyetlen pontja ne okozzon szűk keresztmetszetet. Vegye figyelembe az egyéb korlátozásokat, például a tárterület maximális átviteli sebességét, valamint az alkalmazás és a háttérfeladatok által nyújtott egyéb szolgáltatásokat.

  • Háttérfeladatok tervezése a skálázáshoz. A háttérfeladatoknak például dinamikusan észlelniük kell az üzenetek monitorozásához vagy a megfelelő üzenetsorba való küldéshez használt tárolási üzenetsorok számát.

  • Alapértelmezés szerint a WebJob a társított Web Apps-példányával skáláz. Ha azonban azt szeretné, hogy egy WebJob csak egyetlen példányként fusson, létrehozhat egy Settings.job fájlt, amely tartalmazza a JSON-adatokat { "is_singleton": true }. Ez a módszer arra kényszeríti az Azure-t, hogy csak a WebJob egy példányát futtassa, még akkor is, ha a társított webalkalmazás több példánya is van. Ez a technika olyan ütemezett feladatokhoz hasznos, amelyeknek csak egyetlen példányként kell futniuk.

  • A háttérfeladatok kihívást jelenthetnek az adatszinkronizálás és a folyamatkoordináció számára, különösen akkor, ha a háttérfeladatok egymástól vagy más adatforrásoktól függenek. A háttérfeladatok például kezelhetik az adatkonzisztencia-problémákat, a versenyfeltételeket, a holtpontokat vagy az időtúllépéseket.

  • A háttérfeladatok hatással lehetnek a felhasználói élményre, ha a háttérfeladatok eredményei megjelennek a felhasználó számára. Előfordulhat például, hogy a háttérfeladatok megkövetelik, hogy a felhasználó várjon egy értesítésre, frissítse az oldalt, vagy manuálisan ellenőrizze a feladat állapotát. Ezek a viselkedések növelhetik a felhasználói interakció összetettségét, és negatív hatással lehetnek a felhasználói élményre.

Kompromisszum: A háttérfeladatok több összetevőt és függőséget vezetnek be a rendszerhez, ami növelheti a megoldás összetettségét és karbantartási költségeit. A háttérfeladatok például külön üzenetsor-szolgáltatást, feldolgozói szolgáltatást, monitorozási szolgáltatást és újrapróbálkozást igényelhetnek.

Azure-beli segítségnyújtás

Az alábbi szakaszok a háttérfeladatok üzemeltetésére, futtatására, konfigurálására és kezelésére használható Azure-szolgáltatásokat ismertetik.

Gazdagépkörnyezetek

Számos Azure-platformszolgáltatás képes háttérfeladatok üzemeltetésére:

  • Web Apps és WebJobs: A App Service WebJobs funkciójával olyan egyéni feladatokat futtathat, amelyek különböző, webalkalmazásokban futtatható szkripteken vagy programokon alapulnak.

  • Azure Functions: Függvényalkalmazások használata olyan háttérfeladatokhoz, amelyek hosszú ideig nem futnak. A függvényalkalmazásokat akkor is használhatja, ha a számítási feladatot kihasználatlan App Service csomagban üzemelteti.

  • Virtual Machines: Ha windowsos szolgáltatással rendelkezik, vagy windowsos feladatütemezőt szeretne használni, a háttérfeladatokat egy dedikált virtuális gépen üzemeltetheti.

  • Azure Batch: A Batch egy platformszolgáltatás, amellyel nagy számítási igényű munkát ütemezhet egy felügyelt virtuálisgép-gyűjtemény futtatásához. Automatikusan képes méretezni a számítási erőforrásokat.

  • Azure Kubernetes Service (AKS): Az AKS felügyelt üzemeltetési környezetet biztosít az Azure-beli Kubernetes számára.

  • Azure Container Apps: A Container Apps segítségével tárolókon alapuló kiszolgáló nélküli mikroszolgáltatásokat hozhat létre.

Az alábbi szakaszok az egyes lehetőségekre vonatkozó szempontokat ismertetik, amelyek segítenek a legjobb választásban.

Web Apps és WebJobs-feladatok

A WebJobs szolgáltatással egyéni feladatokat futtathat háttérfeladatként egy webalkalmazásban. A WebJob folyamatos folyamatként fut a webalkalmazás környezetében. A WebJobs-feladatok a Logic Apps eseményindító eseményére vagy külső tényezőkre, például a tárolóblobok vagy üzenetsorok változásaira reagálva is futtathatók. A WebJobs igény szerint indítható el és állítható le, és szabályosan állítható le. Ha egy folyamatosan futó WebJobs-feladat meghiúsul, az automatikusan újraindul. Konfigurálhatja az újrapróbálkozásokat és a hibaműveleteket.

WebJobs-feladatok konfigurálásakor:

  • Ha azt szeretné, hogy a feladat reagáljon egy eseményvezérelt eseményindítóra, konfigurálja folyamatos futtatásra. A szkriptet vagy programot a site/wwwroot/app_data/jobs/continuous nevű mappában tárolja a rendszer.

  • Ha azt szeretné, hogy a feladat válaszoljon egy ütemezésalapú eseményindítóra, konfigurálja a Futtatás ütemezés szerint beállításra. A szkript vagy a program a site/wwwroot/app_data/jobs/triggered mappában lesz tárolva.

  • Ha a feladat konfigurálásakor az Igény szerinti futtatás lehetőséget választja, a feladat indításakor ugyanazt a kódot futtatja, mint a Futtatás ütemezés szerint beállítással.

A WebJob a webalkalmazás tesztkörnyezetében fut. Hozzáféréssel rendelkezik a környezeti változókhoz, és információkat, például kapcsolati sztringeket oszthat meg a webalkalmazással. A WebJob hozzáfér a WebJobs-feladatot futtató gép egyedi azonosítójához. A megnevezett AzureWebJobsStorage kapcsolati karakterlánc hozzáférést biztosít a Storage-üzenetsorokhoz, blobokhoz és táblákhoz az alkalmazásadatokhoz. Emellett hozzáférést biztosít a Service Bushoz üzenetküldéshez és kommunikációhoz. A megnevezett AzureWebJobsDashboard kapcsolati karakterlánc hozzáférést biztosít a WebJob-művelet naplófájljaihoz.

A WebJobs-feladatok jellemzői a következők:

  • Biztonság: A webalkalmazás üzembehelyezési hitelesítő adatai védelmet biztosítanak a WebJobs számára.

  • Támogatott fájltípusok: WebJobs-feladatok definiálása parancsszkriptekkel (.cmd), kötegelt fájlokkal (.bat), PowerShell-szkriptekkel (.ps1), Bash-felületi szkriptekkel (.sh), PHP-szkriptekkel (.php), Python-szkriptekkel (.py), JavaScript-kóddal (.js) és végrehajtható programokkal (.exe és .jar).

  • Üzembe helyezés: Szkripteket és végrehajtható fájlokat a Azure Portal, a Visual Studio vagy a WebJobs SDK használatával telepíthet, vagy közvetlenül a következő helyekre másolhatja őket:

    • Aktivált üzembe helyezés esetén: site/wwwroot/app_data/jobs/triggered/<job name>

    • Folyamatos üzembe helyezés esetén: site/wwwroot/app_data/jobs/continuous/<job name>

  • Naplófájlok: Console.Out a következőként INFOvan kezelve vagy megjelölve: . Console.Error A a(z) néven van kezelve ERROR. A portál használatával hozzáférhet a monitorozási és diagnosztikai információkhoz. Töltse le a naplófájlokat közvetlenül a webhelyről. A naplófájlokat a rendszer a következő helyekre menti:

    • Aktivált üzembe helyezés esetén: Vfs/data/jobs/triggered/<job name>

    • Folyamatos üzembe helyezés esetén: Vfs/data/jobs/continuous/<job name>

  • Konfiguráció: Konfigurálja a WebJobs-feladatokat a portál, a REST API és a PowerShell használatával. A WebJob-feladat konfigurációs információinak megadásához használjon egy settings.job nevű konfigurációs fájlt, amely ugyanabban a gyökérkönyvtárban található, mint a WebJob-szkript. Például:

    • { "stopping_wait_time": 60 }

    • { "is_singleton": true }

Web Apps és WebJobs-szempontok

  • Alapértelmezés szerint a WebJobs-feladatok a webalkalmazással együtt méreteződnek. Ha úgy szeretné konfigurálni a WebJobs-feladatok használatát, hogy egyetlen példányon fusson, állítsa a konfigurációs tulajdonságot értékre is_singletontrue. Az egypéldányos WebJobs-feladatok olyan feladatokhoz hasznosak, amelyeket nem szeretne egyidejűleg több példányként skálázni vagy futtatni, például újraindexeléshez vagy adatelemzéshez.

  • A WebJobs által a webalkalmazás teljesítményére gyakorolt hatás minimalizálása érdekében hozzon létre egy üres webalkalmazás-példányt egy új App Service tervben, amely hosszú ideig futó vagy erőforrás-igényes WebJobs-feladatok üzemeltetését tervezi.

Azure Functions

Azure Functions hasonló a WebJobs-feladatokhoz. Azure Functions kiszolgáló nélküli, és alkalmas rövid ideig futó eseményvezérelt eseményindítókhoz. Az Azure Functions is használhatja az ütemezett feladatok időzítő eseményindítókon keresztüli futtatására, ha egy függvényt úgy konfigurál, hogy a megadott időpontokban fusson.

Azure Functions nem ajánlott nagy, hosszú ideig futó tevékenységekhez, mert egy függvény váratlan időtúllépéseket okozhat. Az üzemeltetési csomagtól függően azonban érdemes lehet függvényeket használni az ütemezésalapú eseményindítókhoz.

Azure Functions megfontolandó szempontok

Ha arra számít, hogy a háttérfeladat rövid ideig fut egy eseményre válaszul, fontolja meg a feladat futtatását a használati tervben. A futtatókörnyezetet a maximális időtartamra konfigurálhatja. Hosszabb ideig futó függvény több költséggel jár. A több memóriát használó, processzorigényes feladatok drágábbak lehetnek. Ha a feladat részeként további eseményindítókat használ a szolgáltatásokhoz, azok számlázása külön történik.

A prémium csomag akkor megfelelő, ha több rövid, de folyamatosan futó feladat van. Ez a csomag drágább, mert több memóriára és processzorra van szüksége. Ennek előnye, hogy más funkciókat is használhat, például virtuális hálózati integrációt.

A dedikált csomag akkor megfelelő háttérfeladatokhoz, ha a számítási feladat már fut a dedikált csomagon. Ha alacsony kihasználtságú virtuális gépekkel rendelkezik, futtathatja a dedikált csomagot ugyanazon a virtuális gépen, és megoszthatja a számítási költségeket.

További információkért lásd:

Virtual Machines

A háttérfeladatok implementálhatók úgy, hogy ne legyenek üzembe helyezve a Web Apps. Feladatokat például Windows-szolgáltatások, külső segédprogramok vagy végrehajtható programok használatával valósíthat meg. Olyan programokat is használhat, amelyek az alkalmazást futtató környezetétől eltérő futtatókörnyezethez vannak megírva. Használhat például Egy Windows- vagy .NET-alkalmazásból futtatni kívánt Unix- vagy Linux-programot. Válasszon több operációs rendszer közül egy Azure-beli virtuális géphez, és futtassa a szolgáltatást vagy futtatható az adott virtuális gépen.

További információkért lásd:

Ha egy külön virtuális gépen szeretné elindítani a háttérfeladatot, a következőket teheti:

  • Küldjön egy kérést egy olyan végpontnak, amelyet a feladat elérhetővé tesz a feladat igény szerinti futtatásához közvetlenül az alkalmazásból. A kérelem olyan adatokat továbbít, amelyekre a feladatnak szüksége van. A végpont meghívja a feladatot.

  • A feladat ütemezés szerinti futtatásához használjon ütemezőt vagy időzítőt a választott operációs rendszerből. Windows rendszeren például a Windows Feladatütemezővel szkripteket és feladatokat futtathat. Ha SQL Server telepítve van a virtuális gépen, szkriptek és feladatok futtatásához használja a SQL Server Agent.

  • A Logic Apps használatával kezdeményezheti a feladatot úgy, hogy egy üzenetet ad hozzá egy üzenetsorhoz, amelyet a feladat figyel, vagy elküld egy kérést egy API-nak, amelyet a feladat elérhetővé tesz.

A háttérfeladatok elindításáról az előző Eseményindítók szakaszban talál további információt.

Virtual Machines megfontolandó szempontok

Vegye figyelembe a következő szempontokat, amikor háttérfeladatokat helyez üzembe egy Azure-beli virtuális gépen:

  • Háttérfeladatokat üzemeltethet egy különálló Azure-beli virtuális gépen, hogy rugalmasságot és pontos vezérlést biztosítson a kezdeményezés, az üzembe helyezés, az ütemezés és az erőforrás-kiosztás felett. A futásidejű költségek azonban növekednek, ha egy virtuális gépet kizárólag háttérfeladatokhoz helyez üzembe.

  • A portálon nincs lehetőség a feladatok monitorozására, és a sikertelen feladatokhoz nincs automatikus újraindítási képesség. Az Azure Resource Manager parancsmagjaival azonban monitorozhatja és kezelheti a virtuális gép állapotát. A számítási csomópontokon nincsenek folyamatok és szálak vezérlésére szolgáló eszközök. Ha virtuális gépet használ, általában olyan mechanizmust kell implementálnia, amely adatokat gyűjt a feladat rendszerállapotából, valamint a virtuális gép operációs rendszeréből. Erre a célra használhatja az Azure-hoz készült System Center felügyeleti csomagot .

  • Fontolja meg a HTTP-végpontokon keresztül közzétett monitorozási mintavételek létrehozását. A mintavételek kódját konfigurálhatja állapot-ellenőrzések végrehajtására, valamint működési információk és statisztikák gyűjtésére. A mintavételekkel rendezheti a hibainformációkat, és visszaadhatja egy felügyeleti alkalmazásnak.

További információkért lásd:

Batch

Fontolja meg a Batch használatát, ha nagy, párhuzamos, nagy teljesítményű számítási (HPC) számítási feladatokat kell futtatnia több tíz, több száz vagy több ezer virtuális gépen.

A Batch használatával előkészítheti a virtuális gépeket, feladatokat rendelhet a virtuális gépekhez, futtathatja a feladatokat, monitorozhatja az előrehaladást, és automatikusan felskálázhatja a virtuális gépeket a számítási feladatra válaszul. A Batch feladatütemezést is biztosít, és támogatja a Linux és Windows rendszerű virtuális gépeket.

Batch-szempontok

A Batch belsőleg párhuzamos számítási feladatokhoz használható. A Batch használatával párhuzamos számításokat hajthat végre egy csökkentési lépéssel a végén, vagy futtathat Üzenetátadási felület (MPI) alkalmazásokat olyan párhuzamos feladatokhoz, amelyek üzenetátadást igényelnek a csomópontok között.

A Batch-feladatok csomópontok vagy virtuális gépek készletén futnak. A készletet csak szükség esetén foglalhatja le, majd törölheti a feladat befejezése után. Ez a megközelítés maximalizálja a kihasználtságot, mivel a csomópontok nem tétlenek, de a feladatnak várnia kell a csomópontok lefoglalására. Másik lehetőségként előre is létrehozhat egy készletet. Ez a megközelítés minimálisra csökkenti a feladat indításához szükséges időt, de tétlen csomópontokat eredményezhet.

További információkért lásd:

Azure Kubernetes Service

Az AKS használatával kezelheti üzemeltetett Kubernetes-környezetét, így egyszerűen helyezhet üzembe és kezelhet tárolóalapú alkalmazásokat.

A tárolók háttérfeladatok futtatásához hasznosak. Többek között a következő előnyöket kínálja:

  • A tárolók támogatják a nagy sűrűségű üzemeltetést. Az egyes háttérfeladatokat elkülönítheti külön tárolókba, és mindegyik virtuális gépre több tárolót is elhelyezhet.

  • A tárolóvezénylő használatával belső terheléselosztást végezhet, konfigurálhatja a belső hálózatot, és egyéb konfigurációs feladatokat hajthat végre.

  • Szükség szerint elindíthatja és leállíthatja a tárolókat.

  • A Azure Container Registry segítségével regisztrálhatja a tárolókat az Azure határain belül a biztonság, az adatvédelem és a közelségi előnyök biztosítása érdekében.

AKS-szempontok

Az AKS-nek ismernie kell a tárolóvezénylők használatát.

További információkért lásd:

Tárolóalkalmazások

A Container Apps segítségével tárolókon alapuló kiszolgáló nélküli mikroszolgáltatásokat hozhat létre. Tárolóalkalmazások:

Container Apps-szempontok

A Container Apps nem biztosít közvetlen hozzáférést a mögöttes Kubernetes API-khoz. Ha hozzáférésre van szüksége a Kubernetes API-khoz és a vezérlősíkhoz, használja az AKS-t. Ha Kubernetes-stílusú alkalmazásokat szeretne létrehozni, és nincs szüksége közvetlen hozzáférésre a natív Kubernetes API-khoz és a fürtkezeléshez, használja a Container Appst a teljes körűen felügyelt élmény érdekében. A Container Apps a legjobb megoldás tároló-mikroszolgáltatások létrehozásához.

További információkért lásd:

Megbízhatósági ellenőrzőlista

Tekintse meg a javaslatok teljes készletét.