Spring Cloud의 구성 요소 시간 초과 요약

앞말
Spring Cloud는 Spring Boot을 기반으로 한 마이크로 서비스 구현 프레임워크입니다.그는 마이크로 서비스 개발에 필요한 설정 관리, 서비스 발견, 차단기, 스마트 루트, 마이크로 에이전트, 제어 버스, 전역 자물쇠, 정책 결정 경선, 분포식 세션과 집단 상태 관리 등 구성 요소를 제공했다.가장 중요한 것은springboot 프레임워크와 함께 사용하면 마이크로서비스 구조의 클라우드 서비스를 개발하는 데 매우 편리하다는 것이다.Spring Cloud는 매우 많은 하위 프레임워크를 포함하는데 그 중에서 Spring Cloud 넷플릭스는 그 중의 프레임워크이다. 넷플릭스가 개발한 후에 Spring Cloud 대가족에 합병되었다. 주로 제공하는 모듈은 서비스 발견, 차단기와 모니터링, 스마트 루트, 클라이언트의 부하 균형 등을 포함한다.
본고는 Spring Cloud 각 구성 요소의 시간 초과 관련 내용을 소개하고 참고 학습을 위해 공유할 것입니다. 다음은 더 이상 말하지 않겠습니다. 상세한 소개를 보겠습니다.
리본의 시간 초과
전역 설정:

ribbon:
ReadTimeout: 60000
ConnectTimeout: 60000
로컬 설정:

service-id:
ribbon:
ReadTimeout: 1000
ConnectTimeout: 1000
그 중에서 서비스-id는 리본이 사용하는 가상 호스트 이름으로 일반적으로 유레카 서버에 등록된 서비스 이름과 일치한다. 즉, spring.application.name과 일치한다.
Feign의 시간 초과
Feign은 Spring Cloud Edgware를 시작으로 속성 구성 시간 초과를 지원합니다.

feign:
 client:
 config:
  feignName:
  connectTimeout: 5000
  readTimeout: 5000
구판본에 대해서는 feign.Request.Options 을 쓸 수 있고, 참고: org.springframework.cloud.netflix.feign.ribbon.FeignRibbonClientAutoConfiguration#feignRequestOptions 의 작법을 참고하면 된다.
RestTemplate의 시간 초과
일부 경우 RestTemplate를 사용했을 수 있습니다. 예를 들어

@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
시간 초과는 다음과 같이 설정할 수 있습니다.

@Bean
@LoadBalanced
public RestTemplate restTemplate() {
SimpleClientHttpRequestFactory simpleClientHttpRequestFactory = new SimpleClientHttpRequestFactory();
simpleClientHttpRequestFactory.setConnectTimeout(1000);
simpleClientHttpRequestFactory.setReadTimeout(1000);
return new RestTemplate(simpleClientHttpRequestFactory);
}
Zuul의 시간 초과
Zuul의 시간 초과는 비교적 복잡하다. 왜냐하면 Zuul은 Ribbon, Hystrix를 통합했기 때문이다.다음은 두 가지 상황으로 나누어 토론한다.
만약 Zuul의 라우팅이 Ribbon을 사용한다면
그러면 Zuul의 시간 초과는 Ribbon, Hystrix와 관련이 있습니다. 이때 Zuul의 시간 초과는 다음과 같이 구성할 수 있습니다.

hystrix:
 command:
 default:
  execution:
  isolation:
   thread:
   timeoutInMilliseconds: 1000
ribbon:
 ReadTimeout: 1000
 ConnectTimeout: 1000
코드 해석: 이 경우 Zuul 전송에 사용되는 필터는 org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter입니다. 이 필터에서 Hystrix와 Ribbon을 통합했습니다.
Zuul의 라우팅이 Ribbon을 사용하지 않는 경우
예를 들어 Zuul의 라우팅 구성은 다음과 같습니다.

zuul:
 routes:
 user-route:     #  ,user-route , 。
  url: http://localhost:8000/ #  url
  path: /user/**    # url 。
그러면 Zuul의 시간 초과는 다음 두 가지 구성에만 적용됩니다.

zuul:
 host:
 socket-timeout-millis: 10000
 connect-timeout-millis: 2000
코드 해석: URL 루트를 직접 설정하는 방식은 Ribbon을 사용할 수도 없고 Hystrix를 사용할 수도 없습니다. Zuul 전송에 사용되는 필터는 org.springframework.cloud.netflix.zuul.filters.route.SimpleHostRoutingFilter입니다. 이 필터에서 Zuul은 Apache HttpClient를 사용하여 전송합니다.
현실 장면에서 때때로 두 가지 루트 방식이 협조적으로 사용될 수 있기 때문에 상기 모든 속성을 설정하는 것을 권장합니다.
Hystrix의 시간 초과

hystrix:
 command:
 default:
  execution:
  timeout:
   enabled: true
  isolation:
   thread:
   timeoutInMilliseconds: 1000
위와 같이 Hystrix의 기본 시간 초과 시간은 1초입니다.기본적으로 시간 초과 메커니즘을 엽니다.Hystrix의 시간 초과를 해제하려면 xxx.enabled 를 false로 설정합니다.
Tips
구성 요소가 Hystrix와 함께 사용되는 경우 일반적으로 Hystrix의 시간 초과 > 다른 구성 요소의 시간 초과를 권장합니다. 그렇지 않으면 재시도 기능이 효력을 상실할 수 있습니다.
총결산
이상은 바로 이 글의 전체 내용입니다. 본고의 내용이 여러분의 학습이나 업무에 대해 참고 학습 가치가 있기를 바랍니다. 의문이 있으면 댓글로 교류해 주십시오. 저희에 대한 지지에 감사드립니다.

좋은 웹페이지 즐겨찾기