hvad er skot mønster, der bruges af Hanstrick?

generelt er målet med skotmønsteret at undgå fejl i en del af et system for at tage hele systemet ned. Udtrykket kommer fra skibe, hvor et skib er opdelt i separate vandtætte rum for at undgå et enkelt skrogbrud for at oversvømme hele skibet; det vil kun oversvømme et Skott.

implementeringer af skotmønsteret kan tage mange former afhængigt af, hvilken slags fejl du vil beskytte systemet mod. Jeg vil kun diskutere den type fejl Hystriks håndtag i dette svar.

Jeg tror, at skotmønsteret blev populariseret af bogen Release It! af Michael T. Nygard.

hvad Hystrik løser

skottets implementering begrænser antallet af samtidige opkald til en komponent. På denne måde er antallet af ressourcer (typisk tråde), der venter på et svar fra komponenten, begrænset.

Antag, at du har en anmodningsbaseret applikation med flere gevind (f. eks. en typisk internetapplikation), der bruger tre forskellige komponenter, A, B og C. Hvis anmodninger om komponent C begynder at hænge, til sidst vil alle anmodningshåndteringstråde hænge på og vente på et svar fra C. Dette ville gøre applikationen helt ikke-lydhør. Hvis anmodninger til C håndteres langsomt, har vi et lignende problem, hvis belastningen er høj nok.implementering af skotmønsteret begrænser antallet af samtidige opkald til en komponent og ville have gemt applikationen i dette tilfælde. Antag, at vi har 30 anmodning om håndtering af tråde, og der er en grænse på 10 samtidige opkald til C. Derefter kan højst 10 anmodningshåndteringstråde hænge, når du ringer til C, de andre 20 tråde kan stadig håndtere anmodninger og bruge komponenter a og B.

Hystriks’ tilgange

Hystriks’ har to forskellige tilgange til skottet, trådisolering og semaforeisolering.

trådisolering

standardmetoden er at aflevere alle anmodninger til komponent C til en separat trådpulje med et fast antal tråde og ingen (eller en lille) anmodningskø.

Semaphore Isolation

den anden tilgang er at få alle opkaldere til at erhverve en tilladelse (med 0 timeout) før anmodninger til C. Hvis en tilladelse ikke kan erhverves fra semaforen, sendes opkald til C ikke igennem.

forskelle

fordelen ved trådpuljetilgangen er, at anmodninger, der sendes til C, kan timeout, noget der ikke er muligt, når du bruger semaforer.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.