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


Stratégiák a részleges hibák kezelésére

Tipp.

Ez a tartalom egy részlet a .NET-alkalmazásokhoz készült .NET-alkalmazásokhoz készült eBook, .NET Microservices Architecture című eBookból, amely elérhető a .NET Docs-on vagy egy ingyenesen letölthető PDF-fájlként, amely offline módban is olvasható.

.NET Microservices Architecture for Containerized .NET Applications eBook cover thumbnail.

A részleges hibák kezeléséhez használja az itt leírt stratégiák egyikét.

Használjon aszinkron kommunikációt (például üzenetalapú kommunikációt) a belső mikroszolgáltatások között. Nagyon ajánlott, hogy ne hozzon létre hosszú láncokat szinkron HTTP-hívások a belső mikroszolgáltatásokban, mert a helytelen kialakítás végül a rossz kimaradások fő oka lesz. Éppen ellenkezőleg, kivéve az ügyfélalkalmazások és a mikroszolgáltatások első szintje vagy a részletes API Gatewayek közötti előtérbeli kommunikációt, javasoljuk, hogy csak az aszinkron (üzenetalapú) kommunikációt használja a kezdeti kérés-válasz ciklus után, a belső mikroszolgáltatásokban. A végleges konzisztencia és az eseményvezérelt architektúrák segítenek minimalizálni a hullámos hatásokat. Ezek a megközelítések magasabb szintű mikroszolgáltatás-autonómiát kényszerítenek ki, ezért megakadályozzák az itt említett problémát.

Használja az újrapróbálkozást exponenciális visszalépéssel. Ez a technika segít elkerülni a rövid és időszakos hibákat azáltal, hogy bizonyos számú újrapróbálkozást hajt végre, ha a szolgáltatás csak rövid ideig nem volt elérhető. Ez időszakos hálózati problémák vagy egy mikroszolgáltatás/tároló fürt egy másik csomópontra való áthelyezése miatt fordulhat elő. Ha azonban ezek az újrapróbálkozások nem megfelelően vannak kialakítva az áramkör-megszakítókkal, az tovább súlyosbíthatja a hullámzó hatásokat, ami végső soron szolgáltatásmegtagadást (DoS) is okozhat.

A hálózati időtúllépések megkerülője. Általánosságban elmondható, hogy az ügyfeleket úgy kell megtervezni, hogy ne tiltsanak le határozatlan ideig, és hogy mindig időtúllépéseket használjanak a válaszra való várakozáskor. Az időtúllépések biztosítják, hogy az erőforrások soha ne legyenek határozatlan ideig lekötve.

Használja az áramkör-megszakító mintát. Ebben a megközelítésben az ügyfélfolyamat nyomon követi a sikertelen kérések számát. Ha a hibaarány meghaladja a konfigurált korlátot, a "megszakító" utazások, hogy a további kísérletek azonnal meghiúsulnak. (Ha sok kérés meghiúsul, az azt jelzi, hogy a szolgáltatás nem érhető el, és a kérések küldése értelmetlen.) Egy időtúllépési időszak után az ügyfélnek újra kell próbálkoznia, és ha az új kérések sikeresek, zárja be az áramkör-megszakítót.

Tartalékok megadása. Ebben a megközelítésben az ügyfélfolyamat tartalék logikát hajt végre egy kérés meghiúsulásakor, például gyorsítótárazott adatok vagy alapértelmezett érték visszaadása esetén. Ez egy lekérdezésekhez alkalmas megközelítés, és összetettebb a frissítésekhez vagy parancsokhoz.

Az üzenetsorba helyezett kérelmek számának korlátozása. Az ügyfeleknek felső határt kell szabnia az ügyfél mikroszolgáltatás által egy adott szolgáltatásnak küldhető függőben lévő kérelmek számának. Ha elérte a korlátot, valószínűleg nincs értelme további kéréseket küldeni, és ezeknek a kísérleteknek azonnal sikertelennek kell lennie. A megvalósítás szempontjából a Polly Válaszfal elkülönítési szabályzata használható ennek a követelménynek a teljesítéséhez. Ez a megközelítés lényegében egy párhuzamosítási szabályozás SemaphoreSlim a megvalósítás során. A válaszfalon kívül is engedélyez egy "üzenetsort". A felesleges terhelést proaktív módon még a végrehajtás előtt is el tudja tüntetni (például mert a kapacitás teljesnek minősül). Ez gyorsabb választ ad bizonyos meghibásodási forgatókönyvekre, mint egy megszakító, mivel a megszakító megvárja a hibákat. A Polly BulkheadPolicy objektuma elérhetővé teszi a válaszfal és az üzenetsor teljes számát, és túlcsordulás esetén kínál eseményeket, így az automatikus horizontális skálázást is lehetővé teszi.

További erőforrások