mi Válaszfal minta által használt Hystrix?

általában a válaszfal mintázat célja, hogy elkerülje a rendszer egyik részének hibáit, hogy az egész rendszert lebontsa. A kifejezés olyan hajókról származik, ahol a hajót külön vízzáró rekeszekre osztják, hogy elkerüljék az egyetlen hajótest megsértését az egész hajó elárasztására; csak egy válaszfalat áraszt el.

a válaszfal mintájának megvalósítása sokféle formát ölthet attól függően, hogy milyen hibáktól szeretné megvédeni a rendszert. Ebben a válaszban csak a Hystrix által kezelt hibák típusát fogom megvitatni.

azt hiszem, a válaszfal minta népszerűsítette a könyv engedje el! írta: Michael T. Nygard.

mit old meg a Hystrix

a válaszfal megvalósítás a Hystrix-ben korlátozza az egyidejű hívások számát egy komponensre. Ily módon korlátozott az erőforrások (általában szálak) száma, amelyek válaszra várnak az összetevőtől.

tegyük fel, hogy van egy kérésen alapuló, többszálú alkalmazás (például egy tipikus webes alkalmazás), amely három különböző összetevőt használ, A, B és C. Ha a C komponenshez intézett kérések lefagynak, végül az összes kéréskezelő szál lefagy, várva a választ C-től. Ha a C-hez intézett kéréseket lassan kezeljük, hasonló problémánk van, ha a terhelés elég magas.

a válaszfal minta Hystrix implementációja korlátozza az egyidejű hívások számát egy komponensre, és ebben az esetben mentette volna az alkalmazást. Tegyük fel, hogy 30 kéréskezelő szálunk van, és 10 egyidejű hívás van a C-re. Ezután legfeljebb 10 kéréskezelő szál függeszthető fel a C hívásakor, a másik 20 szál továbbra is képes kezelni a kéréseket és használni az A és B komponenseket.

Hystrix’ megközelítések

a Hystrix’ két különböző megközelítést alkalmaz a válaszfalhoz, a szálszigetelést és a szemafor elkülönítést.

Szálszigetelés

a standard megközelítés az, hogy az összes kérést a C komponensnek egy külön szálkészletbe adjuk át, rögzített számú szálral és nincs (vagy egy kis) kérési sor.

szemafor elkülönítés

a másik megközelítés az, hogy minden hívónak engedélyt kell szereznie (0 időtúllépéssel) a C-hez intézett kérések előtt. Ha az engedélyt nem lehet megszerezni a szemafor, hívások C nem halad át.

különbségek

a thread pool megközelítés előnye, hogy a C-nek átadott kérések időzíthetők, ami szemaforok használatakor nem lehetséges.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.