ce este modelul pereților etanși folosit de Hystrix?

în general, scopul modelului pereților etanși este de a evita defectele într-o parte a unui sistem pentru a lua întregul sistem în jos. Termenul provine de la navele în care o navă este împărțită în compartimente etanșe separate pentru a evita o singură încălcare a corpului pentru a inunda întreaga navă; va inunda doar un singur perete.

implementările modelului pereților etanși pot lua mai multe forme în funcție de tipul de defecțiuni de care doriți să protejați sistemul. Voi discuta doar tipul de defecte hystrix mânere în acest răspuns.

cred că modelul pereților etanși a fost popularizat de Cartea Release It! de Michael T. Nygard.

ce rezolvă Hystrix

implementarea pereților etanși în Hystrix limitează numărul de apeluri concurente la o componentă. În acest fel, Numărul de resurse (de obicei fire) care așteaptă un răspuns din partea componentei este limitat.

Să presupunem că aveți o aplicație multi-threaded bazată pe cerere (de exemplu, o aplicație web tipică) care utilizează trei componente diferite, A, B și C. În cazul în care cererile de componenta C începe să stea, în cele din urmă toate firele de manipulare cerere va atârna pe așteptare pentru un răspuns de la C. Acest lucru ar face cererea în întregime non-receptiv. Dacă cererile către C sunt tratate încet, avem o problemă similară dacă sarcina este suficient de mare.

implementarea modelului de perete hystrix limitează numărul de apeluri concurente către o componentă și ar fi salvat aplicația în acest caz. Să presupunem că avem 30 cerere de manipulare fire și există o limită de 10 apeluri concurente la C. Apoi, cel mult 10 fire de manipulare cerere poate atârna la apelarea C, celelalte 20 fire pot ocupa în continuare cereri și de a folosi Componentele a și B.

abordări Hystrix’

Hystrix’ are două abordări diferite la peretele etanș, izolarea firului și izolarea semafor.

izolarea firului

abordarea standard este de a preda toate cererile către componenta C unui grup de fire separat, cu un număr fix de fire și fără (sau o mică) coadă de solicitare.

izolarea semaforului

cealaltă abordare este ca toți apelanții să obțină un permis (cu 0 timeout) înainte de cererile către C. Dacă un permis nu poate fi obținut de la semafor, apelurile către C nu sunt transmise.

diferențe

avantajul abordării thread pool este că cererile care sunt transmise către C pot fi expirate, lucru care nu este posibil atunci când se utilizează semafoare.

Lasă un răspuns

Adresa ta de email nu va fi publicată.