Megosztás a következőn keresztül:


Javaslatok háttérfeladatok fejlesztésére

Az Azure Well-Architected Framework megbízhatósági ellenőrzőlistájára vonatkozó javaslat:

RE:07 A számítási feladatok rugalmasságának és helyreállíthatóságának megerősítése önmegőrzési és önjavító intézkedések végrehajtásával. 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 felhasználói beavatkozás nélkül automatikusan 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 hosszan 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, egy háttérfeladatot is végrehajthat a miniatűr létrehozásához és a tárolóba 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 küld, amely elindít egy háttér-munkafolyamatot, amely feldolgozza a rendelést. Az ügyfél továbbra is böngészi a webalkalmazást a háttérfeladat futtatása közben. A háttérfeladat befejeződé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őbb tervezési stratégiák

A háttérfeladatként kijelölendő tevékenység 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 a 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 sorozatának 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 egy elkülönített háttérfolyamatba való átviteléhez, amely hozzáféréssel rendelkezik a védett tárterülethez.

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 indít el, 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 helyezi az üzenetet a Web-Queue-Worker architektúrastílusban leírtak szerint. Az üzenet adatokat tartalmaz egy korábban végrehajtott műveletről, például egy megrendelést leadó ügyfélről. 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 ment vagy frissít egy tárolóban lévő értéket. 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 átadja a háttérfeladat által igényelt adatokat. 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 lehetnek a képfeldolgozás, a munkafolyamatok, az információk távoli szolgáltatásokba való küldése, az e-mailek küldése és az ú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 indít el, amely elindítja a háttérfeladatot. Ü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 lehetnek a kötegfeldolgozá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 rutinszerű adatfeldolgozási feladatok (például az indexek frissítése vagy a halmozott eredmények generálá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 a következő 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) méretezve 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 másik helyen, a felhasználói felülettől vagy a háttérfeladatot meghívó folyamattól. Ideális esetben a háttérfeladatok tűz- és 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 tevékenységek befejezését. A felhasználói felület és a hívási folyamat nem tudja észlelni, hogy mikor fejeződik be a feladat.

Ha a hívó tevékenységgel való kommunikációhoz háttérfeladatra van szükség a folyamat vagy a befejezés jelzéséhez, implementálnia kell egy mechanizmust. Néhány példa:

  • Í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 üzenetsorba, amelyek jelzik az állapotot. A háttérfeladat által a hívónak visszaadott adatok elhelyezhetők az üzenetekben. Az Azure Service Bus esetében a tulajdonságok és CorrelationId a ReplyTo tulajdonságok 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 tartalmazhat olyan 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 egy közzétételi és előfizeté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.

Partíciós háttérfeladatok

Ha háttérfeladatokat is tartalmaz egy meglévő számítási példányban, 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. Ezeket a tényezőket figyelembe véve döntse el, hogy a feladatokat a meglévő számítási példánysal együtt helyezi-e el, vagy különítse el őket egy másik számítási példányra:

  • Rendelkezésre állás: Előfordulhat, hogy a háttérfeladatok nem igényelnek ugyanolyan rendelkezésre állást, mint az alkalmazás más részei, különösen a felhasználói felületet és a felhasználói interakciót közvetlenül magában foglaló részek. A háttérfeladatok nagyobb tűréshatárt jelenthetnek a késéssel, az újrapróbálkozott kapcsolathibákkal és a rendelkezésre állást befolyásoló egyéb tényezőkvel szemben, mivel a műveletek várólistára állíthatók. Azonban elegendő kapacitással kell rendelkeznie ahhoz, hogy megakadályozza a biztonsági mentési kérelmeket, amelyek blokkolhatják az üzenetsorokat, és hatással lehetnek a teljes alkalmazásra.

  • Méretezhetőség: A háttérfeladatok valószínűleg eltérő méretezhetőségi követelményekkel rendelkeznek a felhasználói felülethez és az alkalmazás interaktív részeihez képest. Előfordulhat, hogy a felhasználói felületet skáláznia kell, hogy megfeleljen az igény csúcsainak. A kiemelkedő háttérfeladatok kevesebb elfoglaltsági idő alatt é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 háttérfeladatokat üzemeltet, sikertelen lesz, az nem feltétlenül érinti végzetesen a teljes alkalmazást. A tevékenységekre vonatkozó kérések várólistára állíthatók vagy elhalaszthatók, amíg a tevékenység el nem érhető. Ha a számítási példány vagy 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 a felhasználói felülethez vagy az alkalmazás más részeihez képest eltérő biztonsági követelményekkel vagy korlátozásokkal rendelkezhetnek. 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. Kevésbé költséges számítási lehetőséget is használhat, ha a tevékenységek nem igénylik ugyanazokat a feldolgozási képességeket, mint a felhasználói felület. Vagy nagyobb példányt is használhat, ha a tevékenységek több kapacitást és erőforrást igényelnek.

  • 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 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, a üzemeltetési költségek növekednek. Alaposan gondolja át 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, azok versenyezhetnek az erőforrásokhoz és szolgáltatásokhoz, például az adatbázisokhoz és a tárhoz való hozzáférésért. Ez az egyidejű hozzáférés erőforrás-versengést eredményezhet, ami a szolgáltatás rendelkezésre állási ütközéseit okozhatja, é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 módszer megakadályozza, hogy egy feladat versengő példányai egyidejűleg hozzáférjenek egy szolgáltatáshoz, vagy megsérülhessenek 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ó 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 a megnövekedett igények kezeléséhez. Foglaljon le egy számítási példányt elegendő erőforrással, implementáljon egy várólistás mechanizmust, amely tárolja a kérelmek futtatására irányuló kérelmeket, 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ó futtathat. A többhelyes feladatok hatékonyabbak és rugalmasabbak, mivel az egyes lépések gyakran több feladatban is újra felhasználhatók. A lépések sorrendjét is egyszerűen hozzáadhatja, eltávolíthatja vagy módosíthatja.

Több feladat és lépés koordinálása kihívást jelenthet, de a megoldáshoz három gyakori minta használható:

  • Bontsa le 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 az általa feldolgozott információkon. Egy ilyen alkalmazás implementálásának egyszerű, de rugalmatlan megközelítése az, hogy ezt a feldolgozást monolitikus modulként hajtja végre. 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ás máshol is igényli ugyanannak a feldolgozásnak a részeit. További információ: Csövek és szűrők minta.

  • A feladat lépéseinek vezénylése. Egy alkalmazás számos lépést tartalmazó feladatokat hajthat 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ó: Scheduler Agent Supervisor pattern.

  • A sikertelen feladatlépések helyreállításának kezelése. Ha egy vagy több lépés sikertelen, előfordulhat, hogy egy alkalmazásnak vissza kell vonnia a több lépésből álló munkát, amely együttesen definiál egy végül konzisztens műveletet. További információ: Kompenzáló tranzakció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 az adatok sérülése vagy inkonzisztencia bevezetése nélkül kell kezelnie az újraindításokat. Hosszú ideig futó vagy többhelyes feladatok esetén érdemes lehet ellenőrzőpontokat használni. Ellenőrzőpontok használatával mentheti a feladatok állapotát állandó tárterületen vagy üzenetsor üzeneteiként. Tárolhat például állapotinformációkat 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ó.

    A Service Bus-üzenetsorok esetében ehhez az üzenet-munkameneteket kell használnia. Ü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öbbhelyes 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 feladatok 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ésegyensúlyozási minta. Ha egyes tevékenységek fontosabbak, mint mások, fontolja meg a prioritási várólista-minta implementálását, hogy ezek a tevékenységek fussanak először.

Üzenetek

Olyan háttérfeladatokat konfigurálhat, amelyeket üzenetek kezdeményeznek, vagy amelyek feldolgozzák az üzeneteket 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 olyan ü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 érkeznek meg az elküldött sorrendben. 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.

    Egy adott sorrendben feldolgozandó üzenetek esetében tartalmazzon egy sorszámot, kulcsot vagy más olyan 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 megtervezni a folyamatot, hogy az üzenetsorrend ne legyen fontos. További információ: üzenetszekvenálás és időbélyegek.

  • A háttérfeladatok általában az üzenetsor üzeneteibe néznek, amelyek ideiglenesen elrejtik ő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ő 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, letiltja a feladatot, az üzenetsort, és végül magát az alkalmazást, amikor az üzenetsor megtelik. Létfontosságú a méregüzenetek észlelése és eltávolítása az üzenetsorból. Ha Service Bust használ, automatikusan vagy manuálisan helyezze át a méregüzeneteket egy társított üzenetsorba.

  • 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 meghiúsul, miután feldolgoz egy üzenetet, de mielőtt törli az üzenetsorból, az üzenet újra feldolgozható.

    A háttérfeladatoknak idempotensnek kell lenniük, ami azt jelenti, hogy ha a feladat többször dolgozza fel ugyanazt az üzenetet, az nem okoz hibát vagy következetlensé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ára. További információ: Idempotens üzenetfeldolgozás.

  • Egyes üzenetkezelő 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 az üzenetsorból érkező üzenetek hányszor vannak beolvasva. Ezek az adatok hasznosak az ismétlődő üzenetek és a méregüzenetek kezelésére. 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 tilthassák le az alkalmazást vagy a késleltetési műveletet, ha a rendszer terhelés alatt van. 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 tervezésekor és tervezésekor vegye figyelembe a méretezhetőségre és a teljesítményre vonatkozó alábbi szempontokat:

  • Az Azure Virtual Machines és a Azure-alkalmazás Service Web Apps szolgáltatása központi telepítéseket ü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, illetve egy előre meghatározott ütemezés határozza meg. Automatikus skálázással biztosíthatja, hogy az alkalmazás megfelelő teljesítménnyel rendelkezzen, miközben minimalizálja a futtatókörnyezet költségeit.

  • 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 üzemeltetni, hogy a felhasználói felület és a háttérfeladatok egymástól függetlenül méretezhessék a terhelést. Ha több háttérfeladat jelentősen eltérő teljesítménnyel rendelkezik, ossza el őket, és skálázza egymástól függetlenül az egyes típusokat. Ez a technika növelheti a futásidejű költségeket.

  • A terhelés alatti teljesítménycsökkené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. Fontolja meg 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 skálázáshoz. A háttérfeladatoknak például dinamikusan kell észlelniük az üzenetek monitorozásához vagy a megfelelő üzenetsorba való küldéshez használt tárolási üzenetsorok számát.

  • A WebJob alapértelmezés szerint a társított Web Apps-példánnyal skálázható. Ha azonban azt szeretné, hogy a 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 létezik. 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ó szempontjából, 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áit, 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 a lapot, 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ívan befolyásolhatják a felhasználói élményt.

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.

Az Azure megkönnyítése

A következő 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:

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

  • 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 feladatokat kihasználatlan App Service-csomagban üzemelteti.

  • Virtuális gépek: 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 számítási igényes munkát ütemezhet a felügyelt virtuális gépek gyűjteményén való futtatáshoz. 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 használatával tárolókon alapuló kiszolgáló nélküli mikroszolgáltatásokat hozhat létre.

Az alábbi szakaszok a lehetőségek mindegyikével kapcsolatban megfontolandó szempontokat nyújtanak, amelyek segítenek a legjobb választás kiválasztásában.

Web Apps és WebJobs

A WebJobs funkcióval egyéni feladatokat futtathat háttérfeladatként egy webalkalmazásban. A WebJob folyamatos folyamatként fut a webalkalmazás kontextusában. A WebJob a Logic Apps eseményindító eseményére vagy külső tényezőkre, például a tárolóblobok vagy üzenetsorok módosítására reagálva is futtatható. A WebJobs igény szerint elindítható és leállítható, és kecsesen leállítható. Ha egy folyamatosan futó WebJob-feladat meghiúsul, az automatikusan újraindul. Az újrapróbálkozás és a hibaműveletek konfigurálhatók.

WebJobs-feladatok konfigurálásakor:

  • Ha azt szeretné, hogy a feladat reagáljon egy eseményvezérelt eseményindítóra, konfigurálja folyamatosan futtatásra. A szkript vagy program a site/wwwroot/app_data/jobs/continuous nevű mappában van tárolva.

  • Ha azt szeretné, hogy a feladat egy ütemezésalapú eseményindítóra reagáljon, konfigurálja úgy, hogy ütemezés szerint fusson. 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, az a feladat indításakor ugyanazt a kódot futtatja, mint a Futtatás ütemezési beállításnál.

A WebJob a webalkalmazás tesztkörnyezetében fut. Hozzáféréssel rendelkezik a környezeti változókhoz, és információkat oszthat meg, például kapcsolati sztring a webalkalmazással. A WebJob hozzáfér a WebJobot futtató gép egyedi azonosítójához. Az elnevezett AzureWebJobsStorage kapcsolati sztring 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 névvel ellátott AzureWebJobsDashboard kapcsolati sztring hozzáférést biztosít a WebJob-művelet naplófájljaihoz.

A WebJobs a következő jellemzőkkel rendelkezik:

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

  • Támogatott fájltípusok: A WebJobs definiálása parancsszkriptekkel (.cmd), kötegelt fájlokkal (.bat), PowerShell-szkriptekkel (.ps1), Bash-rendszerhéj-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 az Azure Portal, a Visual Studio vagy a WebJobs SDK használatával helyezhet üzembe, vagy közvetlenül a következő helyekre másolhatja őket:

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

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

  • Naplófájlok: Console.Out a rendszer a következőként kezeli vagy jelöli meg: INFO. Console.Errora a .-ként van ERROR A portálon elérheti a monitorozási és diagnosztikai információkat. Töltse le a naplófájlokat közvetlenül a webhelyről. A naplófájlok a következő helyekre vannak mentve:

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

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

  • Konfiguráció: A WebJobs konfigurálása a portál, a REST API és a PowerShell használatával. 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, és adja meg a WebJob konfigurációs adatait. Példa:

    • { "stopping_wait_time": 60 }

    • { "is_singleton": true }

WebAlkalmazások és WebJobs-szempontok

  • Alapértelmezés szerint a WebJobs-feladatok a webalkalmazással együtt méreteződnek. Ha úgy szeretné konfigurálni a WebJobst, hogy egyetlen példányon fusson, állítsa a konfigurációs tulajdonságot a is_singleton következőre true: . Az egypéldányos webfeladatok olyan feladatokhoz hasznosak, amelyeket nem szeretne egyszerre több példányként skálázni vagy futtatni, például újraindexelés vagy adatelemzés.

  • 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-csomagban, amely hosszú ideig futó vagy erőforrásigényes WebJobs-feladatokat üzemeltet.

Azure Functions

Az Azure Functions hasonló a WebJobshoz. Az Azure Functions kiszolgáló nélküli, és alkalmas a rövid ideig futó eseményvezérelt eseményindítókhoz. Az Azure Functions használatával ütemezett feladatokat is futtathat időzítő eseményindítókon keresztül, ha egy függvényt úgy konfigurál, hogy meghatározott időpontokban fusson.

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

Az Azure Functions szempontjai

Ha arra számít, hogy a háttérfeladat rövid ideig fut egy eseményre válaszul, fontolja meg a tevékenység futtatását a használati tervben. A futtatókörnyezetet a maximális időtartamra konfigurálhatja. Egy függvény, amely hosszabb költségekkel jár. A több memóriát használó processzorigényes feladatok drágábbak lehetnek. Ha a tevékenység 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 terv 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 a virtuális hálózat integrációját.

A dedikált csomag akkor alkalmas háttérfeladatokra, ha a számítási feladat már fut a dedikált csomagban. Ha nem kihasznált 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:

Virtual Machines

Háttérfeladatokat implementálhat, hogy ne legyenek üzembe helyezve a Web Appsben. 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 olyan futtatókörnyezethez vannak megírva, amely eltér az alkalmazást üzemeltető környezetétől. Használhat például Egy Windows- vagy .NET-alkalmazásból futtatni kívánt Unix- vagy Linux-programot. Válasszon egy Azure-beli virtuális gép több operációs rendszeréből, és futtassa a szolgáltatást, vagy futtassa azon a virtuális gépen.

További információk:

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

  • Küldjön egy kérést egy olyan végpontnak, amelyet a feladat elérhetővé tesz, hogy igény szerint futtassa a feladatot közvetlenül az alkalmazásból. A kérelem a feladat által igényelt adatokat továbbítja. A végpont meghívja a feladatot.

  • A kiválasztott operációs rendszer ütemezőjét vagy időzítőjét használva konfigurálhatja a feladat ütemezés szerinti futtatását. Windows rendszeren például a Windows Feladatütemezővel futtathat szkripteket és feladatokat. Ha az SQL Server telepítve van a virtuális gépen, az SQL Server Agent használatával futtassa a szkripteket és a feladatokat.

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

A háttérfeladatok elindításával kapcsolatos további információkért tekintse meg az előző Triggerek szakaszt .

A virtuális gépek szempontjai

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 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 a virtuális gépet kizárólag háttérfeladatokhoz telepíti.

  • A portálon nincs lehetőség a feladatok monitorozására, és a sikertelen feladatok automatikus újraindítási képessége sem. Az Azure Resource Manager-parancsmagokkal azonban monitorozhatja és kezelheti a virtuális gép állapotát. A számítási csomópontokban 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. Ehhez használhatja az Azure System Center felügyeleti csomagját.

  • 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 visszaküldheti azokat egy felügyeleti alkalmazásnak.

További információk:

Batch

Fontolja meg a Batch-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, figyelheti 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 alkalmas. A Batch használatával párhuzamos számításokat végezhet egy csökkentési lépéssel a végén, vagy futtathat üzenetátadási felületi (MPI-) alkalmazásokat olyan párhuzamos feladatokhoz, amelyekhez üzenetátadásra van szükség 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 lefoglalhatja, 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, amíg lefoglalja a csomópontokat. Másik lehetőségként létrehozhat egy készletet előre is. Ez a megközelítés minimálisra csökkenti a feladatok indításához szükséges időt, de tétlen csomópontokat eredményezhet.

További információk:

Azure Kubernetes Service

Az AKS használatával kezelheti a üzemeltetett Kubernetes-környezetet, hogy könnyen üzembe helyezhesse és felügyelhesse a 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.

  • Az Azure Container Registry használatával regisztrálhatja a tárolókat az Azure határain belül, hogy biztonsági, adatvédelmi és közelségi előnyöket biztosítson.

AKS-szempontok

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

További információk:

Container Apps

A Container Apps használatával tárolókon alapuló kiszolgáló nélküli mikroszolgáltatásokat hozhat létre. Tárolóalkalmazások:

A Container Apps szempontjai

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 leginkább tároló mikroszolgáltatások készítéséhez alkalmas.

További információk:

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

Tekintse meg a javaslatok teljes készletét.