Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Rangsorolja a szolgáltatásoknak küldött kérelmeket, hogy a számítási feladatok gyorsabban dolgozhassák fel a magas prioritású kérelmeket, mint az alacsonyabb prioritású kérelmeket. Ez a megközelítés egy vagy több üzenetsorba küldött üzeneteket használ, és olyan alkalmazások esetében hasznos, amelyek különböző szolgáltatási szinteket vagy szolgáltatásiszint-szerződéseket (SLA-kat) biztosítanak a különböző kéréstípusoknak vagy ügyfeleknek.
Kontextus és probléma
Előfordulhat, hogy a számítási feladatoknak különböző fontossági és sürgősségi szintű feladatokat kell kezelnie és feldolgoznia. Egyes feladatok azonnali figyelmet igényelnek, míg mások várakozhatnak. A magas prioritású feladatok sikertelen kezelése hatással lehet a felhasználói élményre és az SLA-k megsértésére.
A feladatok prioritása alapján történő hatékony kezeléséhez a számítási feladatoknak olyan mechanizmusra van szükségük, amely ennek megfelelően dolgozza fel és futtatja a feladatokat. Alapértelmezés szerint a legtöbb számítási feladat a beérkezés sorrendjében dolgozza fel a feladatokat egy első lépésben megjelenő (FIFO) üzenetsor-struktúra használatával. Ez a megközelítés nem veszi figyelembe a tevékenységek különböző fontosságát.
Megoldás
A prioritási várólisták lehetővé teszik, hogy a számítási feladatok a prioritásuk alapján dolgozzanak fel, nem pedig szigorúan az érkezési sorrendjük alapján. A kérést küldő alkalmazás vagy gyártó prioritásértéket rendel az üzenethez, a fogyasztók pedig prioritás alapján dolgozzák fel az üzeneteket. A prioritási üzenetsor mintája a következő követelményeknek felel meg:
Különböző sürgősségű és fontos feladatokat kezel: Különböző sürgősségű és fontos feladatokkal rendelkezik, és biztosítania kell, hogy a kritikusabb feladatokat a kevésbé kritikus feladatok előtt dolgozza fel.
Különböző SLA-kat kezel: Különböző SLA-kat kínál a különböző ügyfeleknek, és gondoskodnia kell arról, hogy a magas prioritású ügyfelek jobb teljesítményt és rendelkezésre állást kapjanak.
Különböző számítási feladatok kezelési igényeinek kielégítése: Olyan számítási feladatokkal rendelkezik, amelyeknek azonnal kezelniük kell bizonyos feladatokat, míg a kevésbé sürgős tevékenységek várhatnak.
A prioritási sor minta implementálásának két fő megközelítése van:
Egy üzenetsor: Minden üzenethez prioritási érték van rendelve, és minden üzenet ugyanazt az üzenetsort használja.
Több üzenetsor: Minden üzenethez prioritási érték van rendelve, a különböző prioritású üzenetek pedig külön üzenetsorokat használnak.
Egysoros üzenetsor
Egyetlen üzenetsor-megközelítésben az alkalmazás prioritást rendel az egyes üzenetekhez, és minden üzenetet egyetlen üzenetsorba küld. Az üzenetsor prioritás szerint rendeli meg az üzeneteket, így a felhasználók magasabb prioritású üzeneteket dolgoznak fel az alacsonyabb prioritású üzenetek előtt.
Több sor
Több üzenetsor prioritás szerint választja el az üzeneteket. Az alkalmazás prioritást rendel az egyes üzenetekhez, és az üzenetet a prioritásának megfelelő üzenetsorra irányítja, ahol a felhasználók feldolgozzák az üzeneteket. A többsoros megoldások egyetlen fogyasztói készletet vagy több fogyasztói készletet is használhatnak.
Egyfelhasználós készlet
Egyetlen készletbeállítás esetén az összes üzenetsor ugyanazt a fogyasztói készletet használja. A felhasználók először a legmagasabb prioritású üzenetsor üzeneteit dolgozzák fel, az alacsonyabb prioritású üzenetsorokból érkező üzeneteket pedig csak akkor dolgozzák fel, ha nincs több magas prioritású üzenet. Ennek eredményeképpen az egyes fogyasztói készletek mindig magasabb prioritású üzeneteket dolgoznak fel az alacsonyabb prioritású üzenetek előtt. Ez a beállítás azt eredményezheti, hogy az alacsonyabb prioritású üzenetek folyamatosan késnek, és valószínűleg soha nem lesznek feldolgozva.
A következő okokból használjon egyetlen fogyasztói készletet:
Egyszerű felügyelet. Egyetlen fogyasztói készletet használjon, ha az egyszerű beállítás és a karbantartás prioritást élvez. Egyetlen készlet csökkenti a konfigurációt és a monitorozás összetettségét.
Egységes feldolgozási igények. Használjon egyetlen fogyasztói készletet, ha a bejövő tevékenységek típusa hasonló.
Több fogyasztói készlet
Több fogyasztói készletben minden üzenetsor dedikált fogyasztói készlettel rendelkezik. A magasabb prioritású üzenetsorok több fogyasztót vagy magasabb teljesítményszintet használnak az üzenetek gyorsabb feldolgozásához, mint az alacsonyabb prioritású üzenetsorok.
Használjon több fogyasztói készletet a következő okokból:
Szigorú teljesítménykövetelmények. Több felhasználói készletet használjon, ha a különböző feladatprioritások szigorú teljesítménykövetelményeket támasztanak, amelyeket egymástól függetlenül kell teljesíteni.
Nagy megbízhatósági igények. Több felhasználói készlet használata alkalmazásokhoz, ha a megbízhatóság és a hibaelkülönítés kritikus fontosságú, és az egyik üzenetsor problémái nem befolyásolhatják a többi üzenetsort.
Összetett alkalmazások. Több felhasználói készletet használjon összetett alkalmazásokhoz, ahol a különböző feladatok eltérő feldolgozási jellemzőket és teljesítménygaranciát igényelnek.
Problémák és szempontok
Vegye figyelembe a következő szempontokat, amikor úgy dönt, hogy hogyan valósítja meg ezt a mintát:
Általános javaslatok
Határozza meg egyértelműen a prioritásokat. Egyedi és egyértelmű prioritási szinteket hozhat létre, amelyek a megoldás szempontjából relevánsak. Meghatározhat például magas prioritású üzeneteket, amelyek 10 másodpercen belül feldolgozást igényelnek. Azonosítsa a magas prioritású elemek kezelésére vonatkozó fogyasztói követelményeket, és ennek megfelelően foglalja le a szükséges erőforrásokat.
A fogyasztói készletek dinamikus beállítása. Skálázza a fogyasztói készletek méretét a karbantartott üzenetsor hossza alapján.
Üzenetsor állapotának figyelése. Nyomon követheti az üzenetsor mélységét, a feldolgozási késést, a kézbesítések számát és az átviteli sebességet, hogy észlelhesse a hátralékokat és a lassulásokat, mielőtt azok hatással lennének a munkára.
Használjon kézbesítetlen üzenetsorokat. A méregüzenetek áthelyezése egy kézbesítetlen üzenetsorba konfigurálható számú kézbesítési kísérlet után, hogy egy rossz üzenet ne blokkolja a prioritási útvonalat.
A szolgáltatásszintek rangsorolása. Prioritási sorok implementálása olyan üzleti igényekhez, amelyek prioritási szintű rendelkezésre állást vagy teljesítményt igényelnek. A magas prioritású ügyfelek például magasabb szolgáltatási szintet kaphatnak, így jobb teljesítményt és rendelkezésre állást tapasztalhatnak.
Fontolja meg az alacsony prioritású feldolgozást. Döntse el, hogy minden magas prioritású elemet fel kell-e dolgozni az alacsonyabb prioritású elemek előtt. Ha lehetséges, dinamikusan növelje a régi üzenetek prioritását, hogy az alacsony prioritású üzenetek végül feldolgozva legyenek.
A költségek optimalizálása és minimalizálása. A kritikus feladatokat azonnal feldolgozzuk az elérhető felhasználókkal. Kevésbé kritikus háttérfeladatok ütemezése kevésbé elfoglalt időszakokban.
Ha egyetlen üzenetsort használ, optimalizálja a költségeket a fogyasztók számának visszaskálázásával. A magas prioritású üzenetek elsőként, de valószínűleg lassabban haladnak, míg az alacsonyabb prioritású üzenetek hosszabb késéssel szembesülhetnek.
Védje a processzorokat a terhelési csúcsoktól. Ha a gyártó érkezési sebessége meghaladhatja a fogyasztói feldolgozási kapacitást, kombinálja ezt a mintát a Queue-Based terheléselosztási mintával. Ez a megközelítés puffereli a forgalom kirobbanását, és segít megelőzni az alsóbb rétegbeli feldolgozási erőforrások túlterhelését.
Több üzenetsor-javaslat
A feldolgozási sebesség monitorozása. Annak érdekében, hogy az üzenetek feldolgozása a várt sebességgel történjen, folyamatosan monitorozza a magas és alacsony prioritású üzenetsorok feldolgozási sebességét.
Implementálja a preemption és felfüggesztés funkciót. Ha több üzenetsort használ egyetlen fogyasztói készlettel, implementáljon egy algoritmust, amely biztosítja, hogy a magas prioritású üzenetsorok mindig az alacsonyabb prioritású üzenetsorok előtt legyenek kiszolgálva.
Vegye figyelembe a várósor költségeit. Ügyeljen az üzenetsorok ellenőrzéséhez és feldolgozásához kapcsolódó pénzügyi költségekre. Egyes üzenetsor-szolgáltatások díjakat számítanak fel az üzenetek közzétételéért, lekéréséért és lekérdezéséért. Ezek a díjak az üzenetsorok számával növekedhetnek.
Mikor érdemes használni ezt a mintát?
Használja ezt a mintát a következő esetekben:
Különböző késési vagy szolgáltatási szintű célkitűzéseknek kell megfelelnie a különböző munkaosztályokhoz, például a prémium és a standard ügyfélkérelmekhez.
A munka kirobbant állapotban érkezik, és a kritikus műveleteket a magas prioritású üzenetek első feldolgozásával, az alacsonyabb prioritású munka elhalasztásával kell védenie.
Ez a minta nem feltétlenül megfelelő, ha:
Minden munkaelemnek hasonló üzleti jelentősége van, és a szigorú FIFO-feldolgozás fontosabb, mint a prioritásalapú ütemezés.
A tevékenységek szigorúan rendezik a függőségeket a prioritási szintek között, és a munka prioritás szerinti átrendezése inkonzisztens eredményeket okozhat, vagy összetett koordinációs logikát igényelhet.
Munkaterhelés tervezése
Értékelje ki, hogyan használható a prioritási üzenetsor mintája a számítási feladatok tervezésében a Azure Well-Architected Keretrendszer pilléreiben foglalt célok és alapelvek kezelésére. Az alábbi táblázat útmutatást nyújt arról, hogy ez a minta hogyan támogatja az egyes pillérek céljait.
| Alappillér | Hogyan támogatja ez a minta a pillércélokat? |
|---|---|
| A megbízhatósági tervezési döntések segítenek a számítási feladatnak ellenállóvá válni a hibás működéssel szemben, és biztosítani, hogy a hiba bekövetkezése után teljesen működőképes állapotba kerüljön. | Az üzleti prioritás alapján elválasztó elemek lehetővé teszik, hogy a megbízhatósági erőfeszítéseket a legkritikusabb munkára összpontosítsa. - RE:02 Kritikus folyamatok |
| A teljesítményhatékonyság a skálázás, az adatok és a kód optimalizálásával segíti a számítási feladatok hatékony kielégítését . | Az üzleti prioritás alapján elválasztó elemek lehetővé teszik, hogy a teljesítményre irányuló erőfeszítéseket a leginkább időérzékeny munkára összpontosítsa. - PE:09 Kritikus folyamatok |
Ha ez a minta kompromisszumokat vezet be egy pilléren belül, vegye figyelembe őket a többi pillér céljaival szemben.
Example
A prioritási üzenetsor mintája a GitHub a prioritási üzenetsor mintájának implementálását mutatja be, amely Azure Service Bus témaköröket és előfizetéseket használ. A példa egy biztonságos tárfiókot, egy Application Insights-erőforrást helyez üzembe a figyeléshez, valamint egy Service Bus névteret, amely lehetővé teszi a feladó és a fogyasztói függvények közötti kommunikációt.
Az üzembe helyezés három függvényalkalmazást tartalmaz: egy feladót és két fogyasztót. A fogyasztói alkalmazások különböző maximális példányszámokat használnak az üzenetek rangsorolásának szimulálásához. A funcPriorityQueueConsumerHigh függvény 200 példányra skálázható fel, míg a funcPriorityQueueConsumerLow függvény legfeljebb 40 példányra korlátozható. Minden függvényalkalmazás a Flex-használati csomagot használja, és az Application Insightshoz csatlakozik a diagnosztika és a monitorozás céljából.
A szerepkör-hozzárendelések biztonságos hozzáférést biztosítanak a Service Bus és a tároláshoz felügyelt identitások használatával. Minden függvényalkalmazás ugyanazt a tárfiókot és Application Insights-erőforrást használja. Ez a konfiguráció központosítja a megfigyelhetőséget és a naplózást.
Az alábbi ábra a prioritási várólista architektúrát mutatja be:
A fenti diagram elemei:
Alkalmazás (gyártó). Az
PriorityQueueSenderalkalmazás üzeneteket hoz létre, minden egyes üzenethez hozzárendel egy egyéni alkalmazástulajdonságotPriority, és beállítja azPriorityértéket a következőreHighvagyLow.Üzenetközvetítő és -témakör. Az Service Bus üzenetközvetítő egyetlen, Service Bus nevű
messagestémakörnek küld üzeneteket. Service Bus SQL-szűrőkkel irányítja az egyes üzeneteket a magas prioritású vagy alacsony prioritású előfizetéshez az érték alapjánPriority.Több fogyasztói készlet. A
PriorityQueueConsumerHighfelhasználói készletekPriorityQueueConsumerLowAzure Functions Service Bus eseményindítók használatával válaszolnak a magas prioritású vagy alacsony prioritású előfizetések üzeneteire.
| Példaszerepkör | Azure szolgáltatás például | Név a példában |
|---|---|---|
| Alkalmazás (gyártó) | Azure Functions-alkalmazás | PriorityQueueSender |
| Üzenetközvetítő | Azure Service Bus | <a service bus-névtér> |
| Üzenettémakör | Azure Service Bus témakör | messages |
| Üzenet-előfizetések | Azure Service Bus előfizetések | highPrioritylowPriority |
| Fogyasztók | Azure Functions-alkalmazás |
PriorityQueueConsumerHigh PriorityQueueConsumerLow |
Következő lépések
- Service Bus üzenetsorokat, témaköröket és előfizetéseket: Tekintse át a Service Bus entitásokat, valamint az üzenetsorok és témakörök közötti különbségeket.
- Duplikált üzenetek észlelése: Megtudhatja, hogyan utasíthatja el Service Bus az ismétlődő üzeneteket, amikor egy feladó egy bizonytalan küldés után újrapróbálkozza.
- Kézbesítetlen levelek üzenetsorai: Megtudhatja, hogyan helyezi át Service Bus azokat az üzeneteket, amelyek nem dolgozhatók fel holtbetűs üzenetsorba vizsgálat vagy újrafeldolgozás céljából.
- Mi az a Azure Queue Storage?: Tekintse át a Azure Queue Storage alapfogalmait, és hasonlítsa össze Service Bus üzenetsorokkal.
Kapcsolódó erőforrások
A minta megvalósításakor az alábbi minták lehetnek hasznosak:
Queue-Based Terhelés simítási mintája: Üzenetsor használata pufferként a kérések bevitele és feldolgozása között. Használja a prioritási üzenetsor mintával, ha a kipukkadás elleni védelemre és a differenciált kezelésre is szüksége van.
Konkurens fogyasztók mintája: Több olyan fogyasztó implementálása, amelyek ugyanazt az üzenetsort figyelik, és párhuzamosan dolgozzák fel a feladatokat az átviteli sebesség növelése érdekében. Az egyes üzeneteket csak egy fogyasztó dolgozza fel.
Szabályozási minta: Szabályozás implementálása üzenetsorok használatával a kérések arányának kezeléséhez. A prioritásos üzenetkezeléssel rangsorolhatja a kritikus alkalmazásoktól vagy a nagy értékű ügyfelektől érkező kéréseket a kevésbé fontosakkal szemben.