development

Hystrix에서 사용하는 벌크 헤드 패턴은 무엇입니까?

big-blog 2020. 9. 7. 21:12
반응형

Hystrix에서 사용하는 벌크 헤드 패턴은 무엇입니까?


복잡한 분산 시스템에서 지연 및 내결함성을위한 Netflix API 인 Hystrix는 스레드 격리를 위해 벌크 헤드 패턴 기술을 사용합니다. 누군가 그것에 대해 자세히 설명해 주시겠습니까?


일반

일반적으로 벌크 헤드 패턴의 목표는 시스템의 한 부분에서 오류를 방지하여 전체 시스템을 중단하는 것입니다. 이 용어는 선박 전체가 범람하는 단일 선체 파손을 피하기 위해 선박이 별도의 수밀 구획으로 분할 된 선박에서 유래합니다. 하나의 격벽 만 침수됩니다.

벌크 헤드 패턴의 구현은 시스템을 보호하려는 오류의 종류에 따라 다양한 형태를 취할 수 있습니다. 이 답변에서 Hystrix가 처리하는 오류 유형에 대해서만 설명합니다.

벌크 헤드 패턴이 책 Release It 에서 대중화되었다고 생각합니다 ! 작성자 : Michael T. Nygard.

Hystrix가 해결하는 것

Hystrix의 벌크 헤드 구현 은 구성 요소에 대한 동시 호출 수를 제한합니다 . 이렇게하면 구성 요소의 응답을 기다리는 리소스 (일반적으로 스레드)의 수가 제한됩니다.

세 가지 다른 구성 요소 인 A , B , C 를 사용하는 요청 기반 다중 스레드 애플리케이션 (예 : 일반적인 웹 애플리케이션)이 있다고 가정합니다 . 구성 요소 C에 대한 요청이 중단되기 시작하면 결국 모든 요청 처리 스레드가 C 의 응답을 기다리는 동안 중단됩니다 . 이로 인해 응용 프로그램이 완전히 응답하지 않습니다. C에 대한 요청 이 느리게 처리되는 경우 부하가 충분히 높으면 비슷한 문제가 발생합니다.

Hystrix의 벌크 헤드 패턴 구현은 구성 요소에 대한 동시 호출 수를 제한하며이 경우 애플리케이션을 저장했을 것입니다. 요청 처리 스레드가 30 개이고 C에 대한 동시 호출이 10 개로 제한되어 있다고 가정합니다 . 그러면 C를 호출 할 때 최대 10 개의 요청 처리 스레드가 중단 될 수 있고 다른 20 개의 스레드는 여전히 요청을 처리하고 구성 요소 AB를 사용할 수 있습니다 .

Hystrix의 접근 방식

Hystrix는 벌크 헤드에 대해 스레드 격리와 세마포어 격리라는 두 가지 접근 방식을 가지고 있습니다.

스레드 격리

표준 접근 방식은 구성 요소 C 에 대한 모든 요청을 고정 된 수의 스레드가 있고 요청 대기열이없는 (또는 작은) 별도의 스레드 풀로 전달하는 것입니다.

세마포 분리

다른 방법은 C에 대한 요청 전에 모든 호출자가 허용 (시간 초과 0)을 얻도록하는 것 입니다. 세마포어에서 허가를 얻을 수없는 경우 C 호출 이 통과되지 않습니다.

차이점

스레드 풀 방식의 장점은 C 로 전달되는 요청이 시간 초과 될 수 있다는 것입니다. 이는 세마포어를 사용할 때 불가능한 일입니다.

참고 URL : https://stackoverflow.com/questions/30391809/what-is-bulkhead-pattern-used-by-hystrix

반응형