generelt er målet med skottmønsteret å unngå feil i en del av et system for å ta hele systemet ned. Begrepet kommer fra skip hvor et skip er delt i separate vanntette rom for å unngå et enkelt skrogbrudd for å oversvømme hele skipet; det vil bare oversvømme ett skott.
Implementeringer av skottmønsteret kan ta mange former avhengig av hva slags feil du vil beskytte systemet mot. Jeg vil bare diskutere typen feil Hystrix håndterer i dette svaret.
jeg tror skott mønster ble popularisert av boken Slipper Det! Av Michael T. Nygard.
Hva Hystrix Løser
skottimplementeringen i Hystrix begrenser antall samtidige kall til en komponent. På denne måten er antall ressurser (vanligvis tråder) som venter på svar fra komponenten begrenset.Anta at du har en forespørsel basert, multi threaded program (for eksempel en typisk web-applikasjon) som bruker tre forskjellige komponenter, A, B Og C. Hvis forespørsler til komponent C begynner å henge, til slutt alle forespørsel håndtering tråder vil henge på å vente på et svar Fra C. Dette ville gjøre programmet helt ikke-responsive. Hvis forespørsler Til C håndteres sakte, har vi et lignende problem hvis lasten er høy nok.Hystrix ‘ implementering av skottmønsteret begrenser antall samtidige anrop til en komponent og ville ha lagret programmet i dette tilfellet. Anta at vi har 30 forespørselshåndteringstråder, og det er en grense på 10 samtidige samtaler Til C. Deretter kan maksimalt 10 forespørselshåndteringstråder henge når du ringer C, de andre 20 trådene kan fortsatt håndtere forespørsler og bruke komponenter A og B.
Hystrix’ tilnærminger
Hystrix’ har to forskjellige tilnærminger til skottet, trådisolasjon og semaforisolasjon.
Trådisolasjon
standardmetoden er å overlevere alle forespørsler til komponent C til et eget trådbasseng med et fast antall tråder og ingen (eller en liten) forespørselskø.
Semaforisolasjon
den andre tilnærmingen er å få alle innringere til å skaffe tillatelse (med 0 timeout) før forespørsler Til C. Hvis en tillatelse ikke kan skaffes fra semaforen, sendes ikke samtaler Til C gjennom.
Forskjeller
fordelen med tråden pool tilnærming er at forespørsler som sendes Til C kan tidsavbrudd, noe som ikke er mulig når du bruker semaforer.