척하기 Hystrix 퓨즈를 사용하여 스프링 구름

 

눈사태

마이크로 서비스 아키텍처에서 일반적으로 계단식 실패로 이어질하고, 전체 시스템이, 눈사태 효과 서비스라는 현상 사용할 수없는 원인이 될 수 여러 서비스 계층 호출, 기본 서비스의 장애를 가지고있다. 서비스 눈사태 효과 불가능 "서비스 소비자"의 "서비스 제공자"의 결과 것은 가능하고 점차적으로 과정을 확대 사용할 수 없습니다.

이 경우 다음과 같다 : 서비스 제공자 A와, B는 서비스 이용자 A는, C 및 D는 B 서비스 소비자이다. 적법 불가능 B에 없음, 및 확대 눈덩이 C 및 D에 제공되지 않습니다 사태 효과가 형성된다.

 

 

 

퓨즈 (회로 - 차단기)

퓨즈 원리는 전력 과부하 보호로, 매우 간단합니다. 시간이 지남에 많은 유사한 오류를 감지하면, 실패 그것을 실패를 호출 한 후 더 빨리 강제로, 더 이상 지속적으로 응용 프로그램을 방지 실패 할 수 있습니다 작업을 실행하려고하기 위해 원격 서버에 액세스 신속하게 구현 될 수 없다 그래서 애플리케이션은 에러 정정을 기다리지 않고 계속 실행, 또는 CPU 시간의 낭비는 시간 초과 긴 대기를 생성. 퓨즈는 이미 수정 된 응용 프로그램이 작업을 다시 호출하려고하면 오류가 수정되었는지 여부를 진단하는 응용 프로그램을 사용할 수 있습니다.

그 오류가 발생하기 쉬운의 퓨즈 모드 동작처럼 행동. 이 에이전트는, 최근 통화가 발생하는 오류의 수를 기록 사용하기로 결정 할 수있는 운영자가 계속 할 수 있습니다, 또는 즉시 오류를 반환합니다. 퓨즈 스위치의 논리 변환을 아래와 같이 :

 

 

 

퓨즈는 방어의 보호 서비스 마지막 줄의 가용성이다.

Hystrix 속성

1. 차단기기구

회로 차단기는 잘 백엔드 서비스 요청이 Hystrix 명령 수량이 일정 비율 (기본값 50 %), 회로 차단기가 개방 상태 (오픈)로 전환됩니다를 초과 실패했을 때,있는 것을 알 수있다.이 경우 모든 요청은 백엔드 서비스의 실패에 직접 전송되지 않습니다 차단기는 일정 기간 (디폴트로 5 초)으로 자동 반 개방 상태 (반 개방)로 전환 한 후에 개방 상태로 유지된다. 요청이 성공적이면,이 경우에는 그 상황을 반환하도록 요청 (차단기 스위치의 폐쇄 상태를 다시 결정한다 ) CLOSED, 또는 백 엔드 서비스를 사용할 수없는 한 번 Hystrix 회로 차단기 퓨즈 우리 가족처럼, 회로 차단기가 무효 많은 수의 요청이 시스템 처리량에 영향을 보내는 피하기 위해 요청의 직접 체인을 잘라 것입니다 개방 상태 (OPEN).로 다시 전환 회로 차단기는 자체 테스트 및 복구 할 수있는 능력을 가지고있다.

2.Fallback

백엔드 서비스 요청 예외가, 당신은 값 대체 메소드가 리턴를 사용할 수있을 때 대체 동등한 다운 그레이드. 쿼리 작업을 위해, 우리는, 대체 방법을 얻을 수 있습니다. 반환 값은 보통 기본값을 설정하거나 캐시 대체 방법에서됩니다.

3. 자원의 분리

Hystrix에서 주로 우리가 여러 스레드로 분할 될 때 일반적으로 사용, 격리를 달성하기 위해 스레드 풀 자원으로 제품에 예를 호출하십시오. 원격 서비스 호출을 기반으로 서비스 스레드 풀을 명령 수영장, 명령 통화 계정 서비스를 넣어 스레드 풀에 B는. 이것의 가장 큰 장점은 운영 환경이 이러한 서비스는 존재한다. 따로 설정되었다하더라도 호출 코드의 버그 경우 또는 인해 기타 다른 서비스 시스템에 영향을 미치지 않습니다, 자신의 시간 스레드 풀이 모두 발생한다. 그러나 다중 스레드를 유지하는 비용이 추가 성능 오버 헤드를 가져올 풀 시스템을 가지고있다.이 엄격한 성능 요구 사항 및 서비스를 호출하는 클라이언트 코드는 문제가되지 않을 것이라고 생각하는 경우, 당신은 (Hystrix 신호 패턴을 사용할 수 있습니다 세마포어는) 자원을 분리합니다.

실현

척하기를 사용하여 마지막 기사에서는 구현이 이해하는 데 도움이 될 것입니다 더 편리한 방법 척하기 호출, 서비스를 호출합니다.

공급자 노드가 다운, 액세스가되면 다음 봄 구름은 문제가, 그것은 서비스 예외 처리를 수행하는 것을 의미, 퓨즈를 제공 할

클러스터의 마비로 이어지는, 눈사태 효과를 방지하기 위해 거래를합니다. 발신자 소비자가 변환 우리는 서비스를 제공 할 필요가있다.

지원에 척하기와 Hystrix을 가지고 있기 때문에, 그래서 추가 수입 새로운에 의존하지 않는

오픈 퓨즈 application.yml

가장하다 : 
  hystrix를 : 
    사용 가능 : 사실

MessageRemoteHyx.java 퓨즈는 호출 인터페이스 척하기를 상속

@Component
 공공  클래스 MessageRemoteHyx는 구현 MessageRemote { 

    @Override 
    공개 지도 안녕하세요 () { 
        지도지도 = 새로운 HashMap의 (); 
        map.put ( " 메시지 " , " 안녕하세요 세계는 오류입니다! " );
        반환 지도; 
    } 
}

MessageRemote 인터페이스 추가

대체 = MessageRemoteHyx.class
@FeignClient (NAME = " PROVIDER " , 대체 = MessageRemoteHyx.class )
 공중  인터페이스 MessageRemote { 

    @RequestMapping (값 = " / 공급자 / 헬로 " ) 
    (헬로 MAP); 
}

첫째, 척하기 일반 전화하여 HelloWorld 서비스를 통해

 

 이제 수동으로 공급자를 차단, 다시 전화

 

다시 공급자를 시작한 후, 시간이 좀 걸릴 (5 초 후 기본을 반 개방 상태를 설정, 서비스에 액세스 성공하면, 퓨즈를 해제하려고 시도)

 

추천

출처www.cnblogs.com/yhood/p/11572427.html