Spring Boot Spring Cloud B2B2C o2o 분포 식 마이크로 서비스 네 번 째 편: 차단기 (Hystrix) (Finchley 버 전) - B2B2C 애플 릿 전자상거래

1. 차단기 안내
넷 플 릭 스 has created a library called Hystrix that implements the circuit breaker pattern. In a microservice architecture it is common to have multiple layers of service calls. --- 홈 페이지 에서 spring cloud b2b2b2c 전자상거래 수요 가 있 는 친 구 는 펭귄 을 추가 할 수 있 습 니 다.
2. 이 글 은 이전 글 의 공 사 를 바탕 으로 먼저 이전 글 의 공 사 를 시작 하고 eureka - server 공 사 를 시작 합 니 다.서비스 - hi 프로젝트 를 시작 합 니 다. 포트 는 8762 입 니 다.
3. ribbon 에서 차단기 로 serice - ribbon 프로젝트 의 코드 를 개조 합 니 다. 먼저 pox. xml 파일 에 spring - cloud - starter - netflix - hystrix 의 시작 의존 도 를 추가 합 니 다.
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
  </dependency>

프로그램의 시작 클래스 ServiceRibbonApplication 에 @ EnableHystrix 주석 을 추가 하여 Hystrix 를 엽 니 다.
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
@EnableHystrix
public class ServiceRibbonApplication {

    public static void main(String[] args) {
        SpringApplication.run( ServiceRibbonApplication.class, args );
    }

    @Bean
    @LoadBalanced
    RestTemplate restTemplate() {
        return new RestTemplate();
    }

}

HelloService 클래스 를 개조 하고 hiService 방법 에 @ Hystrix Command 주 해 를 추가 합 니 다.이 주 해 는 이 방법 에 대해 퓨즈 기능 을 만 들 고 fallback Method 퓨즈 방법 을 지정 하 였 습 니 다. 퓨즈 방법 은 문자열 을 직접 되 돌려 주 었 습 니 다. 문자열 은 "hi," + name + ", sorry, error!" 이 고 코드 는 다음 과 같 습 니 다.
@Service
public class HelloService {

    @Autowired
    RestTemplate restTemplate;

    @HystrixCommand(fallbackMethod = "hiError")
    public String hiService(String name) {
        return restTemplate.getForObject("http://SERVICE-HI/hi?name="+name,String.class);
    }

    public String hiError(String name) {
        return "hi,"+name+",sorry,error!";
    }

}

시작: service - ribbon 프로젝트, 우리 가 방문 할 때http://localhost:8764/hi?name=forezp, 브 라 우 저 표시:
hi forezp,i am from port:8762
이 때 service - hi 프로젝트 를 닫 고 다시 방문 할 때http://localhost:8764/hi?name=forezp, 브 라 우 저 표시:
hi ,forezp,orry,error!
이 는 서비스 - hi 프로젝트 가 사용 되 지 않 을 때 서비스 - ribbon 이 서비스 - hi 의 API 인 터 페 이 스 를 호출 할 때 빠 른 실 패 를 하고 응답 시간 이 초과 되 기 를 기다 리 는 것 이 아니 라 문자열 을 되 돌려 줍 니 다. 이것 은 용기 의 스 레 드 차단 을 잘 제어 합 니 다.
4. Feign 에서 차단기 Feign 을 사용 하 는 것 은 자체 차단기 이 고 D 버 전의 Spring Cloud 이후 기본 으로 켜 지지 않 았 습 니 다.설정 파일 에 열 려 면 설정 파일 에 다음 코드 를 추가 해 야 합 니 다.
feign.hystrix.enabled=true
서비스 - fegn 프로젝트 를 기반 으로 개 조 를 진행 하려 면 FeignClient 의 Schedual ServiceHi 인터페이스의 주석 에 fallback 의 지정 클래스 를 추가 하면 됩 니 다.
@FeignClient(value = "service-hi",fallback = SchedualServiceHiHystric.class)
public interface SchedualServiceHi {
    @RequestMapping(value = "/hi",method = RequestMethod.GET)
    String sayHiFromClientOne(@RequestParam(value = "name") String name);
}


SchedualServiceHiHystric 는 SchedualServiceHi 인 터 페 이 스 를 실현 하고 Ioc 용기 에 주입 해 야 합 니 다. 코드 는 다음 과 같 습 니 다.
@Component
public class SchedualServiceHiHystric implements SchedualServiceHi {
    @Override
    public String sayHiFromClientOne(String name) {
        return "sorry "+name;
    }
}

4 servie - fegn 프로젝트 를 시작 하고 브 라 우 저 를 엽 니 다.http://localhost:8765/hi?name=forezp이 때 service - hi 프로젝트 가 시작 되 지 않 았 습 니 다. 웹 페이지 표시:
sorry forezp
service - hi 프로젝트 를 열 고 다시 방문 합 니 다. 브 라 우 저 표시:
hi forezp,i am from port:8762
이것 은 차단기 가 작용 했다 는 것 을 증명 한다.

좋은 웹페이지 즐겨찾기