Vad är Skottmönster som används av Hystrix?

i allmänhet är målet med skottmönstret att undvika fel i en del av ett system för att ta ner hela systemet. Termen kommer från fartyg där ett fartyg är uppdelat i separata vattentäta fack för att undvika ett enda skrovbrott för att översvämma hela fartyget; det kommer bara att översvämma ett skott.

implementeringar av skottmönstret kan ta många former beroende på vilken typ av fel du vill skydda systemet från. Jag kommer bara att diskutera vilken typ av fel Hystrix hanterar i detta svar.

Jag tror att skottmönstret populariserades av boken släpp det! inbunden från Michael T. Nygard.

vad Hystrix löser

skott implementeringen i Hystrix begränsar antalet samtidiga samtal till en komponent. På så sätt är antalet resurser (vanligtvis trådar) som väntar på ett svar från komponenten begränsat.

anta att du har en begäran baserad, multi threaded program (till exempel en typisk webbapplikation) som använder tre olika komponenter, A, B och C. Om förfrågningar till komponent C börjar hänga, så småningom alla begäran hantering trådar kommer att hänga på väntar på ett svar från C. Detta skulle göra programmet helt icke-lyhörd. Om förfrågningar till C hanteras långsamt har vi ett liknande problem om lasten är tillräckligt hög.

Hystrix ’ implementering av skottmönstret begränsar antalet samtidiga samtal till en komponent och skulle ha sparat applikationen i det här fallet. Antag att vi har 30 begäran hantering trådar och det finns en gräns på 10 samtidiga samtal till C. Då kan högst 10 begäran hantera trådar hänga när man ringer C, de andra 20 trådarna kan fortfarande hantera förfrågningar och använda komponenterna a och B.

Hystrix’ tillvägagångssätt

Hystrix’ har två olika tillvägagångssätt för skottet, trådisolering och semaforisolering.

trådisolering

standardmetoden är att överlämna alla förfrågningar till komponent C till en separat trådpool med ett fast antal trådar och ingen (eller en liten) förfrågningskö.

Semaforisolering

det andra tillvägagångssättet är att alla som ringer ska få tillstånd (med 0 timeout) före förfrågningar till C. Om ett tillstånd inte kan förvärvas från semaforen, samtal till C skickas inte igenom.

skillnader

fördelen med trådpoolmetoden är att förfrågningar som skickas till C kan timas ut, något som inte är möjligt när man använder semaforer.

Lämna ett svar

Din e-postadress kommer inte publiceras.