봄 클라우드 (C) : 서비스 내결함성 보호 --Spring 클라우드 Hystrix

  마이크로 서비스 아키텍처에서, 이러한 현상은 일반적으로 서비스가로서, 서비스는 이용할 수 없다 다음 때 호출자에 대한 서비스 제공하는 서비스 호출자 B, C, D에 B 서비스라고하면, 사용할 수없는 발생 시간이 지남에 따라이 분산 아키텍처에 실패를 계단식이 문제를 해결하기 위해 B 서비스를 이용할 수없는 경우, 서비스를 사용할 수없는 B를 사용할 수 없게 C, D 서비스, 결국 순서대로 사용할 수 없게 전체 시스템에 이르는 발생할 수 있습니다 이어질 것 일련의 회로 차단기 및 기타 보호 서비스를 제공합니다.

  Hystrix는 봄 클라우드의 차단기를 달성 사용, 봄 클라우드 Hystrix은 오픈 소스 넷플릭스 프레임 워크 Hystrix 구현을 기반으로합니다. 건강 (헬스 서비스 요청 상태 = 요청 실패의 개수 / 전체 수)과의 비교에 의해 결정되는 세트 임계 값 (기본로부터 10 초간 이내 20 결함)의 현재의 서비스 상태에서 개방 상태에서 차단기를 오프로 전환한다. 차단기 스위치, 회로 차단기를 통해 상기 요청을 허용 꺼지면 건강 현재 서비스 상태가 설정된 임계 값보다 높은 경우, 스위치는 오프 남아, 현재 서비스 상태가 설정된 임계 값 미만인 경우, 스위치가 개방 상태로 전환된다. 차단기 스위치가 온되면, 요청은 대체 방법이 제공하는 경우, 회로 차단기 스위치는 시간이 지남에 따라, 회로 차단기는 자동 반 개방 상태로 전환되며, 온 비아 요청을 허용하는 경우, 처리는, 대체 입력한다 금지 통화 요청이 성공하면 차단기가 OFF 상태로 돌아가거나 열린 상태로 유지됩니다.

  이 섹션은 프로젝트 단위로, 프로젝트 주소에 건설 될 https://github.com/francis785/springclouddemo.git  , 당신은 단지 다음 단계를 수행 할 수 있습니다 봄 클라우드 Hystrix을 사용할 수 :

1. 만들기  springcloud - 데모 사용자 hystrix의  모듈을  pom.xml 파일  은 다음과 같이 문서를 읽

<? XML 버전 = " 1.0 " 인코딩 = " UTF-8 " ?> 
<프로젝트의 xmlns = " http://maven.apache.org/POM/4.0.0 " 
         에 xmlns :이 xsi = " HTTP : //www.w3 .ORG / 2001 / 된 XMLSchema 인스턴스 " 
         는 xsi :의 schemaLocation = " http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd " > 
    <부모> 
        <artifactId를> springcloud-데모 부모 </ artifactId를> 
        <의 groupId> com.fix </의 groupId> 
        <version>은 1.0 -snapshot </ 버전>
    </ 부모> 
    <modelVersion>4.0 . 0 </ modelVersion> 

    <artifactId를> springcloud - 데모 - 사용자 - hystrix </ artifactId를> 
    <종속성> 
        <! - 필요가의 도입에 의존 할 때 핀 칠리, 봄 구름의 그리니치 버전, 클라이언트 프로젝트를 생성 -> 
        < 의존성> 
            <의 groupId> org.springframework.boot </를의 groupId> 
            <artifactId를> 초보자 - 봄 - 부팅 웹 </를 artifactId를> 
        </ 의존성> 
        <의존성> 
            <의 groupId> org.springframework.cloud </를의 groupId> 
            <artifactId를> -Cloud - 초보 - 봄 넷플릭스 - 유레카 - 클라이언트 </ artifactId를> 
        </ 의존성> 
        <! - hystrix 차단기 지원 -> 
        <의존성>
            <의 groupId> org.springframework.cloud </의 groupId>
            <artifactId를> 스프링 클라우드 스타터 넷플릭스 hystrix </ artifactId를> 
        </ 의존성> 
        <! - hystrixCommandAspect的初始化依赖于com.google.common.collect.ImmutableMap -> 
        <의존성> 
            <의 groupId> com.google .guava </의 groupId> 
            <artifactId를> 구아바 </ artifactId를> 
            <version>은 28.0 -jre </ 버전> 
        </ 의존성> 
    </ 의존성> 
</ 프로젝트>

2. 쓰기  application.yaml  :

서버 : 
  포트 : 8030 
유레카 : 
  예 : 
    선호 -ip 주소를 : true로      # IP를 호스트 여부 
  클라이언트 : 
    서비스 - URL : 
      defaultzone : HTTP : // localhost를 : 8761 / 유레카 / #은 유레카 서버 주소를 지정하려면 
봄 : 
  응용 프로그램을 : 
    이름 : springcloud -DEMO - 사용자 - hystrix을

메인 클래스의 작성 3.  UserHystrixMain을  하고, 함께 수업을 마스터  @EnableCircuitBreaker의  참고 개방 회로 차단기 기능을 나타냅니다 :

@SpringBootApplication 
@EnableEurekaClient @EnableCircuitBreaker

 공용  클래스 UserHystrixMain {
     공공  정적  무효 메인 (문자열 []에 args) { 
        SpringApplication.run (UserHystrixMain. 클래스 , 인수); 
    } 

    @Bean은 
    @LoadBalanced 
    공공 RestTemplate initRestTemplate는 () {
         반환  ) (RestTemplate을; 
    } 
}

4. 제조  UserController  및  findOrderByUser ()  상기의 방법을 더한  @HystrixCommand  콜백 방법을 지정하는 주석 :

@RestController
 공용  클래스 UserController { 
    @Autowired 
    개인 RestTemplate RestTemplate; 

    / * * 
     * 주문 정보 쿼리의 사용자 ID에 따라서 
     * @param ID에 사용자 ID 
     * @return 사용자 주문 정보 
     * / 
    @GetMapping ( " / findOrderByUser / {ID} " )
    @HystrixCommand (fallbackMethod = " fallBackMethod " )
     공중 문자열 findOrderByUser (@PathVariable 문자열 ID) {
         int로 ORDERID = 123 ;
         리턴  이 본 (.restTemplate.getForObject를 "HTTP : // SPRINGCLOUD-DEMO - 더 주문 / 주문 / " . + ORDERID, 문자열 클래스 ); 
    } 

    / * * 
     * 주문 문의 전화 인터페이스 정보를 반환하는 실패 후 
     * 위에서 ID 언급 한 파라미터 : 
     * @return 
     * / 
    공공 문자열 fallBackMethod을 (@PathVariable ID 문자열) {
         반환  " 서비스는 현재 쿼리 = ID를 사용할 수없는 " + ; ID 
    } 
}

기능 검증

  서비스 등록 센터뿐만 아니라 다른 모듈을 시작하기 위해, 서비스는 다음과 같은 서비스 레지스트리 인스턴스가 :

  브라우저에서 액세스 : HTTP : // localhost를 : 8030 / findOrderByUser / 1  에 액세스 할 수 있습니다 :

  다음 닫기  springcloud - 데모 주문  서비스, 방문을 계속 // localhost를 : HTTP 8030 / findOrderByUser / 1 링크를 다음과 같은 정보를 묻는 메시지가 표시됩니다 :

  설명 봄 클라우드 Hystrix이 적용됩니다.

추천

출처www.cnblogs.com/fengweiweicoder/p/11075054.html