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


Circuit Breaker tervezési minta

Az áramkör-megszakító minta segít kezelni azokat a hibákat, amelyek helyreállítása változó ideig tarthat, amikor egy alkalmazás távoli szolgáltatáshoz vagy erőforráshoz csatlakozik. Az áramkör-megszakító ideiglenesen letiltja a hibás szolgáltatáshoz való hozzáférést, miután észleli a hibákat. Ez a művelet megakadályozza az ismétlődő sikertelen kísérleteket, hogy a rendszer hatékonyan helyreálljon. Ez a minta javíthatja az alkalmazások stabilitását és rugalmasságát.

Környezet és probléma

Elosztott környezetben a távoli erőforrásokra és szolgáltatásokra irányuló hívások átmeneti hibák miatt meghiúsulhatnak. Az átmeneti hibák közé tartoznak a túlkomponensű vagy ideiglenesen nem elérhető erőforrások, a lassú hálózati kapcsolatok vagy az időtúllépések. Ezek a hibák általában rövid idő elteltével javítják ki magukat. Ezeknek a hibáknak a kezeléséhez meg kell terveznie egy felhőalkalmazást, amely egy stratégiát használ, például az Újrapróbálkozási mintát.

A nem várt események olyan hibákat okozhatnak, amelyek kijavítása hosszabb időt vesz igénybe. Ezek a hibák súlyosságúak lehetnek a kapcsolat részleges elvesztésétől a teljes szolgáltatáshibaig. Ilyen helyzetekben az alkalmazásnak nem szabad folyamatosan újrapróbálkoznia egy olyan művelettel, amely valószínűleg nem fog sikerülni. Ehelyett az alkalmazásnak gyorsan fel kell ismernie a sikertelen műveletet, és ennek megfelelően kell kezelnie a hibát.

Ha egy szolgáltatás foglalt, a rendszer egy részének meghibásodása kaszkádolt hibákhoz vezethet. Konfigurálhat például egy olyan műveletet, amely egy szolgáltatás meghívásával időtúllépést valósít meg. Ha a szolgáltatás ezen időszakon belül nem válaszol, a művelet hibaüzenettel válaszol.

Ez a stratégia azonban letilthatja ugyanahhoz a művelethez kapcsolódó egyidejű kéréseket, amíg az időtúllépési időszak el nem jár. Ezek a letiltott kérések kritikus rendszererőforrásokat, például memóriát, szálakat és adatbázis-kapcsolatokat tartalmazhatnak. Ez a probléma kimerítheti az erőforrásokat, ami meghiúsulhat a rendszer más, nem kapcsolódó részeiben, amelyeknek ugyanazokat az erőforrásokat kell használniuk.

Ilyen esetekben a műveletnek azonnal sikertelennek kell lennie, és csak akkor kell meghívnia a szolgáltatást, ha az valószínűleg sikeres lesz. A probléma megoldásához állítson be rövidebb időtúllépést. De győződjön meg arról, hogy az időtúllépés elég hosszú ahhoz, hogy a művelet az idő nagy részében sikeres legyen.

Megoldás

Az áramkör-megszakító minta segít megakadályozni, hogy egy alkalmazás ismétlődően megpróbáljon olyan műveletet futtatni, amely valószínűleg sikertelen lesz. Ez a minta lehetővé teszi, hogy az alkalmazás zökkenőmentesen továbbra is fusson anélkül, hogy megvárná a hiba kijavítását vagy a processzorciklusok elpazarlását annak megállapítására, hogy a hiba állandó-e. Az áramkör-megszakító minta lehetővé teszi az alkalmazás számára a hiba elhárításának észlelését is. Ha a hiba megoldódott, az alkalmazás megpróbálhatja újra meghívni a műveletet.

Megjegyzés:

Az áramkör-megszakító minta más célt szolgál, mint az Újrapróbálkozási minta. Az Újrapróbálkozási minta lehetővé teszi, hogy az alkalmazás újrapróbálkozza a műveletet azzal a várakozással, hogy végül sikerülni fog. Az áramkör-megszakító minta megakadályozza, hogy egy alkalmazás olyan műveletet hajtson végre, amely valószínűleg sikertelen lesz. Az alkalmazások kombinálhatják ezt a két mintát úgy, hogy az újrapróbálkozási mintát használják egy művelet áramkör-megszakítón keresztüli meghívására. Az újrapróbálkozási logikának azonban érzékenynek kell lennie az áramkör-megszakító által visszaadott kivételekre, és le kell állítania az újrapróbálkozási kísérleteket, ha az áramkör-megszakító azt jelzi, hogy a hiba nem átmeneti.

Az áramkör-megszakító proxyként viselkedik az esetlegesen meghiúsuló műveleteknél. A proxynak figyelnie kell a legutóbbi hibák számát, és ezekkel az információkkal eldöntheti, hogy engedélyezi-e a művelet folytatását, vagy azonnal kivételt ad vissza.

A proxyt az alábbi állapotokat tartalmazó állapotgépként implementálhatja. Ezek az állapotok utánozzák az elektromos áramkör-megszakító működését:

  • Zárt: Az alkalmazás kérése a művelethez lesz irányítva. A proxy nyilvántartja a legutóbbi hibák számát. Ha a művelet hívása sikertelen, a proxy növeli ezt a számot. Ha a legutóbbi hibák száma meghaladja a megadott küszöbértéket egy adott időszakon belül, a proxy nyitott állapotba kerül, és elindít egy időtúllépési időzítőt. Amikor az időzítő lejár, a proxy félig nyitott állapotba kerül.

    Megjegyzés:

    Az időtúllépés során a rendszer megpróbálja kijavítani a hibát okozó problémát, mielőtt lehetővé tenné az alkalmazás számára, hogy újra megkísérelje a műveletet.

  • Nyitott: Az alkalmazás kérése azonnal meghiúsul, és a rendszer kivételt ad vissza az alkalmazásnak.

  • Félig nyitott: Az alkalmazástól érkező kérések korlátozott számban továbbíthatják és meghívhatják a műveletet. Ha ezek a kérések sikeresek, a megszakító feltételezi, hogy a hibát okozó hiba ki lett javítva, és az áramkör-megszakító a Lezárt állapotra vált. A hibaszámláló vissza van állítva. Ha egy kérés meghiúsul, a megszakító feltételezi, hogy a hiba továbbra is fennáll, ezért visszaáll a Nyitott állapotra. Újraindítja az időtúllépési időzítőt, így a rendszer helyre tud állni a hibából.

    Megjegyzés:

    A Félig nyitott állapot segít megakadályozni, hogy a helyreállító szolgáltatás hirtelen elárasztsa a kéréseket. A szolgáltatás helyreállításakor előfordulhat, hogy a helyreállítás befejezéséig korlátozott mennyiségű kérést tud támogatni. Ha azonban a helyreállítás folyamatban van, a munka áradása miatt a szolgáltatás időtúllépést vagy újra meghiúsulást okozhat.

Az alábbi diagram az egyes állapotok számlálóműveletét mutatja be.

Az áramkör-megszakító állapotait bemutató diagram.

A lezárt állapot hibaszámlálója időalapú. Rendszeres időközönként automatikusan alaphelyzetbe áll. Ez a kialakítás segít megakadályozni, hogy az áramkör-megszakító open állapotba lépjen, ha időnként hibák lépnek fel. A hibaküszöb csak akkor aktiválja a megnyitási állapotot, ha egy megadott időközönként megadott számú hiba történik.

A Half-Open állapot sikerszámlálója a művelet meghívására tett sikeres kísérletek számát rögzíti. Az áramkör-megszakító egy megadott számú sikeres, egymást követő művelethívás után visszaáll a lezárt állapotra. Ha bármilyen hívás meghiúsul, a megszakító azonnal beírja a Nyitott állapotot, és a sikerszámláló a következő alkalommal alaphelyzetbe állítja a Félig nyitott állapotot.

Megjegyzés:

A rendszer helyreállítása külső műveleteken alapul, például egy meghibásodott összetevő visszaállításán vagy újraindításán vagy egy hálózati kapcsolat javításán.

Az áramkör-megszakító minta stabilitást biztosít arra az időszakra, amíg a rendszer helyreáll egy meghibásodás után, és minimálisra csökkenti a hiba teljesítményre gyakorolt hatását. Segíthet a rendszer válaszidejének fenntartásában. Ez a minta gyorsan elutasít egy olyan kérést, amely valószínűleg sikertelen műveletre vonatkozik, ahelyett, hogy arra várna, hogy a művelet időtúllépést érjen el, vagy soha ne térjen vissza. Ha az áramkör-megszakító minden alkalommal eseményt hoz létre, amikor az állapotot módosítja, ezek az információk segíthetnek a védett rendszer összetevő állapotának monitorozásában, vagy riasztást kaphatnak a rendszergazdától, amikor egy megszakító a Nyitott állapotra vált.

Ezt a mintát testre szabhatja és a különböző típusú hibákhoz igazíthatja. Alkalmazhat például egy növekvő időtúllépési időzítőt egy áramkör-megszakítóra. Az áramkör-megszakítót kezdetben néhány másodpercre Megnyitva állapotba helyezheti. Ha a hiba nem oldódott meg, növelje az időtúllépést néhány percre, és ennek megfelelően módosítsa. Bizonyos esetekben a megnyitási állapot ahelyett, hogy hibát ad vissza és kivételt emelne ki, az alkalmazás számára értelmezhető alapértelmezett értéket adhat vissza.

Megjegyzés:

A megszakítók hagyományosan előre konfigurált küszöbértékekre támaszkodtak, például a hibaszámlálókra és az időtúllépési időtartamra. Ez a megközelítés determinisztikus, de néha nem optimális viselkedést eredményezett.

Az AI-t és a gépi tanulást használó adaptív technikák dinamikusan módosíthatják a küszöbértékeket valós idejű forgalmi minták, rendellenességek és korábbi meghibásodási arányok alapján. Ez a megközelítés javítja a rugalmasságot és a hatékonyságot.

Problémák és szempontok

A minta megvalósításakor vegye figyelembe a következő tényezőket:

  • Kivételkezelés: Ha a művelet nem érhető el, egy olyan alkalmazásnak kell tudnia kezelni a kivételeket, amely egy áramkör-megszakítón keresztül indítja el a műveletet. A kivételkezelés az alkalmazáson alapul. Előfordulhat például, hogy egy alkalmazás átmenetileg rontja a működését, másik műveletet hív meg, hogy megpróbálja elvégezni ugyanazt a feladatot, vagy szerezze be ugyanazokat az adatokat, vagy jelentse a kivételt a felhasználónak, és kérje meg őket, hogy később próbálkozzon újra.

  • Kivételek típusai: A kéréshibák okai súlyosságban eltérhetnek. Előfordulhat például, hogy egy kérés meghiúsul, mert egy távoli szolgáltatás összeomlik, és több percet igényel a helyreállítás, vagy mert egy túlterhelt szolgáltatás időtúllépést okoz. Az áramkör-megszakító képes lehet megvizsgálni a előforduló kivételek típusait, és a kivételek jellege alapján módosíthatja a stratégiáját. Előfordulhat például, hogy több időtúllépési kivételre van szükség ahhoz, hogy az áramkör-megszakítót nyitott állapotba váltsa, összehasonlítva a nem elérhető szolgáltatás által okozott hibák számával.

  • Ellenőrző: Az áramkör-megszakítónak egyértelmű megfigyelhetőséget kell biztosítania mind a sikertelen, mind a sikeres kérések tekintetében, hogy az üzemeltetési csapatok felmérhessék a rendszer állapotát. Elosztott nyomkövetés használata a teljes körű láthatóság érdekében a szolgáltatások között.

  • Helyreállíthatóság: Az áramkör-megszakítót úgy kell konfigurálni, hogy megfeleljen a védett művelet valószínű helyreállítási mintájának. Ha például az áramkör-megszakító hosszú ideig nyitott állapotban marad, akkor is kivételeket okozhat, ha a hiba oka megoldódott. Hasonlóképpen, az áramkör-megszakítók ingadozhatnak és csökkenthetik az alkalmazások válaszideit, ha túl gyorsan vált a Nyitott állapotról a Félig nyitott állapotra.

  • Sikertelen műveletek tesztelése:Nyitott állapotban ahelyett, hogy időzítővel határozzuk meg, hogy mikor váltson a félig nyitott állapotra, az áramkör-megszakító rendszeres időközönként pingelheti a távoli szolgáltatást vagy erőforrást annak megállapításához, hogy elérhető-e. Ez a ping megkísérelhet meghívni egy korábban sikertelen műveletet, vagy használhat egy speciális állapotellenőrzési műveletet, amelyet a távoli szolgáltatás biztosít. További információért tekintse meg az Egészségügyi végpont monitorozási mintát.

  • Manuális felülbírálás: Ha egy sikertelen művelet helyreállítási ideje rendkívül változó, akkor olyan manuális visszaállítási beállítást kell megadnia, amely lehetővé teszi a rendszergazda számára egy kapcsolatcsoport-megszakító bezárását és a hibaszámláló alaphelyzetbe állítását. Hasonlóképpen, a rendszergazda kényszerítheti a megszakítót Nyitott állapotba, és újraindíthatja az időtúllépési időzítőt, ha a védett művelet átmenetileg nem érhető el.

  • Konkurencia: Egy alkalmazás nagy számú egyidejű példánya férhet hozzá ugyanahhoz az áramkör-megszakítóhoz. Ez a megvalósítás valószínűleg nem blokkolja a párhuzamos kéréseket, és nem ad túlzott többletterhelést az egyes műveletmeghívásokhoz.

  • Erőforrás-különbség: Legyen óvatos, ha egyetlen megszakítót használ egy erőforrástípushoz, ha több mögöttes független szolgáltató is lehet. Egy több szegmenst tartalmazó adattárban például előfordulhat, hogy egy szegmens teljes mértékben elérhető, míg egy másik átmeneti problémát tapasztal. Ha ezekben a forgatókönyvekben a hibaválaszok egyesülnek, előfordulhat, hogy egy alkalmazás megpróbál hozzáférni bizonyos szegmensekhez, még akkor is, ha a hiba valószínű. És a többi töredékhez való hozzáférést még akkor is blokkolhatják, ha valószínűleg sikeres lenne.

  • Gyorsított áramkör-megszakítás: Néha a hibaválasz elegendő információt tartalmazhat ahhoz, hogy az áramkör-megszakító azonnal lekapcsoljon, és minimális ideig lekapcsolva maradjon. Egy túlterhelt megosztott erőforrás hibaválasza például azt jelezheti, hogy az alkalmazásnak néhány perc múlva újra kell próbálkoznia ahelyett, hogy azonnal újrapróbálkoznia.

  • Többrégiós üzemelő példányok: Az egyrégiós vagy többrégiós üzemelő példányokhoz tervezhet áramkör-megszakítót. Többrégiós üzemelő példányok tervezéséhez használjon globális terheléselosztókat vagy egyéni régióbarát kapcsolatcsoporttörési stratégiákat, amelyek segítenek a szabályozott feladatátvétel, a késésoptimalizálás és a jogszabályi megfelelőség biztosításában.

  • Szolgáltatáshálós kapcsolatcsoport megszakítói: Az áramkör-megszakítókat az alkalmazásrétegben vagy keresztvágásos, absztrakciós funkcióként is implementálhatja. A szolgáltatáshálók például gyakran támogatják a kapcsolatcsoporttörést oldalkocsis ként vagy önálló funkcióként az alkalmazáskód módosítása nélkül.

    Megjegyzés:

    Egy szolgáltatás HTTP 429-et (túl sok kérést) adhat vissza, ha korlátozza az ügyfelet, vagy HTTP 503-at (a szolgáltatás nem érhető el), ha a szolgáltatás nem elérhető. A válasz egyéb információkat is tartalmazhat, például a késés várható időtartamát.

  • Sikertelen kérés visszajátszása:Nyitott állapotban a megszakító ahelyett, hogy azonnal kudarcot vallana, rögzítheti az egyes kérések részleteit egy naplóban, és lehetővé teheti ezen kérések visszajátszását, amikor a távoli erőforrás vagy szolgáltatás elérhetővé válik.

  • Nem megfelelő időtúllépések a külső szolgáltatásoknál: Előfordulhat, hogy egy biztosítékkapcsoló nem védi teljesen az alkalmazásokat az olyan külső szolgáltatások hibái ellen, amelyeknél hosszú az időtúllépési idő. Ha az időtúllépés túl hosszú, előfordulhat, hogy az áramkör-megszakítót futtató szál hosszabb ideig le lesz tiltva, mielőtt az áramkör-megszakító azt jelzi, hogy a művelet sikertelen volt. Ez idő alatt számos más alkalmazáspéldány is megpróbálhatja meghívni a szolgáltatást az áramkör-megszakítón keresztül, és számos szálat köthet össze, mielőtt mindegyik sikertelen lenne.

  • A számítási diverzifikációhoz való alkalmazkodás: Az áramkör-megszakítóknak különböző számítási környezeteket kell figyelembe vennie a kiszolgáló nélkülitől a tárolóalapú számítási feladatokig, ahol az olyan tényezők, mint a hidegindítás és a méretezhetőség befolyásolják a hibák kezelését. Az adaptív megközelítések dinamikusan módosíthatják a stratégiákat a számítási típus alapján, ami segít biztosítani a heterogén architektúrák közötti rugalmasságot.

Mikor érdemes használni ezt a mintát?

Használja ezt a mintát, ha:

  • Ha ezek a műveletek valószínűleg sikertelenek, meg szeretné akadályozni a kaszkádolt hibákat, ha leállítja a túlzott távoli szolgáltatáshívásokat vagy hozzáférési kéréseket egy megosztott erőforráshoz.

  • A többrégiós rugalmasság növelése érdekében intelligensen szeretné irányítani a forgalmat valós idejű hibajelzések alapján.

  • Szeretne védekezni a lassú függőségekkel szemben, hogy fenntarthassa a szolgáltatási szintű célkitűzéseket, és elkerülhesse a nagy késésű szolgáltatások teljesítménycsökkenését.

  • Szeretné kezelni az időszakos csatlakozási problémákat, és csökkenteni szeretné a kéréshibákat az elosztott környezetekben.

Ez a minta nem feltétlenül megfelelő, ha:

  • Kezelnie kell a helyi privát erőforrásokhoz való hozzáférést egy alkalmazásban, például a memóriában lévő adatstruktúrákhoz. Ebben a környezetben egy áramkör-megszakító többletterhelést ad a rendszernek.

  • Az alkalmazások üzleti logikájának kezelésében egy helyettesítő eszközt kell használnia a kivételek kezelésére.

  • A jól ismert újrapróbálkozások algoritmusai elegendőek, és a függőségek az újrapróbálkozás mechanizmusainak kezelésére lettek kialakítva. Ebben a forgatókönyvben az alkalmazás megszakítója szükségtelen bonyolultságot adhat a rendszernek.

  • Az áramkör-megszakító alaphelyzetbe állítására való várakozás elfogadhatatlan késéseket eredményezhet.

  • Olyan üzenetvezérelt vagy eseményvezérelt architektúrával rendelkezik, amely gyakran egy holt levél sorba irányítja a sikertelen üzeneteket manuális vagy halasztott feldolgozás céljából. A beépített hibaelkülönítési és újrapróbálkozási mechanizmusok gyakran elegendőek.

  • A hibahelyreállítás kezelése az infrastruktúra vagy a platform szintjén történik, például a globális terheléselosztókban vagy szolgáltatáshálókban végzett állapot-ellenőrzésekkel.

Munkaterhelés tervezés

Értékelje ki, hogyan használhatja a Circuit Breaker mintát egy feladat tervében az 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.

Pillé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ítják, hogy a hiba bekövetkezése után teljesen működőképes állapotba kerüljön. Ez a minta segít megelőzni a hibás függőségek túlterhelését. Ezzel a mintával kíméletes romlást válthat ki a terhelésben. Párosítson megszakítókat automatikus újraindítással, hogy biztosítsa az önmegőrzést és az öngyógyulást.

- RE:03 Hibamód elemzése
- Átmeneti hibák
- RE:07 Önmegőrzés
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 . Ez a minta elkerüli az újrapróbálkozási megközelítést, ami túlzott erőforrás-használathoz vezethet a függőségek helyreállítása során, és túlterhelheti a helyreállítást megkísérlõ függőség teljesítményét.

- PE:07 Kód és infrastruktúra
- PE:11 Élő problémákra adott válaszok

Ha ez a minta kompromisszumokat vezet be egy pilléren belül, vegye figyelembe őket a többi pillér céljaival szemben.

példa

Ez a példa a Circuit Breaker mintát használja annak érdekében, hogy megakadályozza a kvótatúllépést az Azure Cosmos DB ingyenes élettartam szintje használatával. Ez a szint elsősorban nem kritikus adatokra vonatkozik, és egy kapacitásterv szerint működik, amely másodpercenként egy adott erőforrásegység-kvótát foglal le. A szezonális események során a kereslet meghaladhatja a megadott kapacitást, ami válaszokhoz 429 vezethet.

Ha az igények kiugróan magasak, a dinamikus küszöbértékekkel rendelkező Azure Monitor-riasztások észlelik és proaktív módon értesítik a műveleti és felügyeleti csapatokat arról, hogy az adatbázis több kapacitást igényel. Ezzel egyidejűleg egy áramköri megszakító, amelyet a korábbi hibaminták alapján hangoltak, leállít hogy megelőzze a láncreakció hibákat. Ebben az állapotban az alkalmazás az alapértelmezett vagy gyorsítótárazott válaszok visszaadásával kecsesen romlik. Az alkalmazás tájékoztatja a felhasználókat bizonyos adatok ideiglenes elérhetetlenségéről, miközben megőrzi a rendszer általános stabilitását.

Ez a stratégia növeli az üzleti indoklásnak megfelelő rugalmasságot. Szabályozza a kapacitásnövekedést, így a számítási feladatok csapatai szándékosan kezelhetik a költségnövekedést, és fenntarthatják a szolgáltatásminőséget anélkül, hogy váratlanul növelhetné az üzemeltetési költségeket. A kereslet csökkenése vagy a megnövekedett kapacitás megerősítése után a megszakító alaphelyzetbe áll, és az alkalmazás visszatér a műszaki és költségvetési célkitűzéseknek megfelelő teljes funkcionalitáshoz.

Diagram, amely bemutatja az Azure Cosmos DB-t és egy megszakító implementációját az Azure App Service-ben.

A diagram három elsődleges szakaszból áll. Az első szakasz két böngészőikont tartalmaz. Az első ikon egy teljesen működőképes felhasználói felületet jelenít meg, a második ikon pedig egy csökkentett felhasználói élményt jelenít meg, amely egy képernyős figyelmeztetéssel jelzi a problémát a felhasználóknak. A második szakasz egy szaggatott vonalú téglalapon belül van, amely két csoportra van osztva. A felső csoport tartalmazza a számítási feladatok erőforrásait, az App Service-t és az Azure Cosmos DB-t. Mindkét böngészőikon nyílbillentyűi az App Service-példányra mutatnak, amely az ügyfél bejövő kéréseit jelöli. Emellett az App Service-példányból az Azure Cosmos DB-be mutató nyilak jelzik az alkalmazásszolgáltatások és az adatbázis közötti adatkapcsolatokat. Egy másik hurok alakú nyíl az App Service-példányból önmagába tér, ami az áramkör-megszakító időtúllépési mechanizmust szimbolizálja. Ez a hurok azt jelzi, hogy a 429-es túl sok kérésre adott válasz észlelésekor a rendszer visszaesik a gyorsítótárazott válaszok kiszolgálására, ami csökkenti a felhasználói élményt, amíg a helyzet meg nem szűnik. Ennek a szakasznak az alsó csoportja a megfigyelhetőségre és a riasztásra összpontosít. Az Azure Monitor a felső csoportban lévő Azure-erőforrásokból gyűjt adatokat. Az Azure Monitor egy riasztási szabály ikonhoz is csatlakozik. A harmadik szakasz a riasztás létrehozásakor aktivált méretezhetőségi munkafolyamatot mutatja be. Egy nyíl összekapcsolja a riasztás ikont a jóváhagyókkal, ami azt jelzi, hogy az értesítést a rendszer elküldi nekik felülvizsgálatra. Egy másik nyíl a jóváhagyóktól egy fejlesztői konzolhoz vezet, amely az adatbázis skálázásának jóváhagyási folyamatát jelzi. Végül a következő nyíl a fejlesztői konzoltól az Azure Cosmos DB-ig terjed, amely az adatbázis túlterhelési állapotra adott skálázásának műveletét mutatja be.

Töltse le az architektúra Visio-fájlját.

Áramlás A: Zárt állapot

  • A rendszer normálisan működik, és minden kérés http-válaszok nélkül éri el az adatbázist 429 .

  • Az áramkör-megszakító zárva marad, és nincs szükség alapértelmezett vagy gyorsítótárazott válaszokra.

B folyamat: Megnyitott állapot

  1. Amikor az áramkör-megszakító megkapja az első 429 választ, open állapotba kerül.

  2. Az ezt követő kérések azonnal gyorsan lezárulnak, amely alapértelmezett vagy gyorsítótárazott válaszokat ad vissza, és tájékoztatja a felhasználókat az ideiglenes teljesítménycsökkenésről. Az alkalmazás védett a további túlterheléstől.

  3. Az Azure Monitor naplókat és telemetriai adatokat fogad, és dinamikus küszöbértékek alapján értékeli őket. A riasztás akkor aktiválódik, ha a riasztási szabály feltételei teljesülnek.

  4. Egy műveletcsoport proaktív módon értesíti a túlterhelési feltétel műveleti csapatát.

  5. A számítási feladatok csapatának jóváhagyása után az üzemeltetési csapat növelheti a kiosztott átviteli sebességet, hogy enyhítse a túlterhelést vagy késlelteti a skálázást, ha a terhelés természetesen csökken.

C folyamat: Half-Open állapot

  1. Az előre meghatározott időtúllépés után a megszakító Félig nyitott állapotba lép, amely korlátozott számú próbakérést engedélyez.

  2. Ha ezek a próbakérelmek válaszok visszaadása 429 nélkül sikeresek, a megszakító visszaállítja a zárt állapotot, és a normál műveletek visszaállnak az A folyamatra. Ha a hibák továbbra is fennállnak, a megszakító visszaáll a Nyitott állapotra vagy a B folyamatra.

Összetevők

  • Az Azure App Service üzemelteti az ügyfélkérések elsődleges belépési pontjaként szolgáló webalkalmazást. Az alkalmazáskód implementálja azt a logikát, amely kikényszeríti az áramkör-megszakító szabályzatokat, és alapértelmezett vagy gyorsítótárazott válaszokat ad, amikor az áramkör nyitva van. Ez az architektúra segít megelőzni az alsóbb rétegbeli rendszerek túlterhelését, és fenntartani a felhasználói élményt a csúcsigény vagy a hibák során.

  • Azure Cosmos DB az alkalmazás egyik adattára. Nem kritikus adatokat szolgál ki az ingyenes szinten keresztül, amely ideális a kis éles munkaterhelésekhez. Az áramkör-megszakító mechanizmus segít korlátozni az adatbázis felé tartó forgalmat a nagy igényű időszakokban.

  • Az Azure Monitor központosított monitorozási megoldásként működik. Összesíti az összes tevékenységnaplót az átfogó, teljes körű megfigyelhetőség biztosítása érdekében. Az Azure Monitor naplókat és telemetriai adatokat fogad az App Service-ből, valamint az Azure Cosmos DB fő metrikáit (például a válaszok számát 429 ) az összesítéshez és elemzéshez.

  • Azure Monitor-riasztások mérlegelik a riasztási szabályokat dinamikus küszöbértékekkel a lehetséges kimaradások azonosításához az előzményadatok alapján. Az előre definiált riasztások értesítik az operatív csapatot a küszöbértékek átlépésekor.

    Előfordulhat, hogy a számítási feladatokkal foglalkozó csapat jóváhagyja a kiosztott átviteli sebesség növelését, de az üzemeltetési csapat arra számít, hogy a rendszer önállóan is helyreállhat, mert a terhelés nem túl magas. Ezekben az esetekben a megszakító időtúllépése természetesen lezajlik. Ez idő alatt, ha a 429 válaszok megszűnnek, a küszöbérték-számítás észleli a hosszan tartó kimaradásokat, és kizárja őket a tanulási algoritmusból. Ennek eredményeképpen a következő túlterheléskor a küszöbérték magasabb hibaarányra vár az Azure Cosmos DB-ben, ami késlelteti az értesítést. Ez a beállítás lehetővé teszi, hogy az áramkör-megszakító azonnali riasztás nélkül kezelje a problémát, ami javítja a költségeket és a működési hatékonyságot.

  • A Reliable Web App minta a megszakító mintázatot alkalmazza azokra a webalkalmazásokra, amelyek a felhőben összpontosítanak.

  • Az újrapróbálkozási minta azt ismerteti, hogy az alkalmazás hogyan tudja kezelni a várt átmeneti hibákat, amikor egy korábban sikertelen művelet transzparens újrapróbálásával próbál csatlakozni egy szolgáltatáshoz vagy hálózati erőforráshoz.

  • Az állapotvégpont-monitorozási minta ismerteti, hogyan tesztelhet egy áramkör-megszakító egy szolgáltatás állapotát azáltal, hogy kérést küld egy olyan végpontnak, amelyet a szolgáltatás biztosít. A szolgáltatásnak az állapotát jelző információkat kell visszaadnia.