Spring Boot Spring Cloud B2B2C o2o 분포 식 마이크로 서비스 네 번 째 편: 차단기 (Hystrix) (Finchley 버 전) - B2B2C 애플 릿 전자상거래
넷 플 릭 스 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
이것 은 차단기 가 작용 했다 는 것 을 증명 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.