@RibbonClient와 @LoadBalanced의 차이점
알겠습니다.@LoadBalanced
는 Rest 템플릿이 Ribbon을 사용한 클라이언트 측 로드밸런싱에 기반해야 함을 나타내고 Eureka 서버를 체크하여 호스트/포트에 대한 서비스 이름을 해결함을 나타냅니다.
의 용도는 무엇입니까?@RibbonClient
Eureka를 사용하지 않고 네이티브 리본 클라이언트 LB를 지원하며 Eureka Discover를 지원하는 경우DiscoveryEnabledNIWSServerList
?
TL;DR:@LoadBalanced
마커 주석 및@RibbonClient
는 설정 목적으로 사용됩니다.
@LoadBalanced
주석을 달았다는 것을 나타내는 마커 주석으로 사용됩니다.RestTemplate
를 사용해야 합니다.RibbonLoadBalancerClient
서비스와의 상호 작용에 대해 설명합니다.
그 결과, 「논리 식별자」를 사용해, 에 건네주는 URL 에 사용할 수 있습니다.RestTemplate
. 이러한 논리 식별자는 일반적으로 서비스 이름입니다.예를 들어 다음과 같습니다.
restTemplate.getForObject("http://some-service-name/user/{id}", String.class, 1);
어디에some-service-name
는 논리 식별자입니다.
@RibbonClient
리본 클라이언트 설정에 사용됩니다.
@RibbonClient가 필요합니까?
아니요! 서비스 디스커버리를 사용하고 있으며 기본 리본 설정이 모두 만족스럽다면@RibbonClient
주석입니다.
언제 사용하면 좋을까요?@RibbonClient
?
적어도 두 가지 경우 다음을 사용해야 합니다.@RibbonClient
- 특정 리본 클라이언트의 리본 설정을 커스터마이즈해야 합니다.
- 서비스 디스커버리를 사용하지 않는 경우
리본 설정 사용자 지정:
의 정의@RibbonClient
@RibbonClient(name = "some-service", configuration = SomeServiceConfig.class)
name
- Ribbon에서 호출하는 서비스와 동일한 이름으로 설정하지만 Ribbon이 해당 서비스와 상호 작용하는 방법에 대한 추가 커스터마이즈가 필요합니다.configuration
- 로 설정합니다.@Configuration
모든 커스터마이즈가 다음과 같이 정의된 클래스@Beans
이 클래스는 다음 사용자가 픽업하지 않도록 합니다.@ComponentScan
그렇지 않으면 모든 리본 클라이언트의 기본값이 덮어씁니다.
Spring Cloud Netflix 설명서(링크)의 "RibbonClient 사용자 지정" 섹션을 참조하십시오.
서비스 디스커버리 없이 리본 사용
서비스 디스커버리를 사용하지 않는 경우name
의 분야@RibbonClient
주석은 의 설정에 프레픽스를 붙이기 위해 사용됩니다.application.properties
또, 전달처의 URL 의 「논리 식별자」도 참조해 주세요.RestTemplate
.
의 정의@RibbonClient
@RibbonClient(name = "myservice")
그럼 네 안에application.properties
myservice.ribbon.eureka.enabled=false
myservice.ribbon.listOfServers=http://localhost:5000, http://localhost:5001
RestTemplate
로드 밸런싱 지원, 사용@LoadBalanced
는 Spring Cloud에 로드밸런싱 지원을 이용하고 싶다고 말합니다(리본을 사용하는 경우 RestTemplate는 RibbionClient를 사용하여 서버 주소를 가져옵니다).
또한 LoadBalancer가 어떻게자동 설정은 이쪽에서 동작합니다.
@RibbonClients 를 사용하면 리본 클라이언트에 선언형 설정을 제공할 수 있습니다.
예.
@SpringBootApplication
@RestController
@RibbonClient(name = "app", configuration = RibbonConfig.class)
public class App {
@LoadBalanced
@Bean
RestTemplate restTemplate(){
return new RestTemplate();
}
//...
}
해서 ㄴ, ㄴ, ㄴ다를 만들어요.RibbonConfig.class
이치노
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import com.netflix.client.config.IClientConfig;
import com.netflix.loadbalancer.IPing;
import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.PingUrl;
import com.netflix.loadbalancer.AvailabilityFilteringRule;
public class RibbonConfig {
@Autowired
IClientConfig ribbonClientConfig;
@Bean
public IPing ribbonPing (IClientConfig config) {
return new PingUrl();//we override default Iping which is a NoOpPing
}
@Bean
public IRule ribbonRule(IClientConfig config) {
return new AvailabilityFilteringRule(); // we override the default ZoneAvoidanceRule
}
}
언급URL : https://stackoverflow.com/questions/39587317/difference-between-ribbonclient-and-loadbalanced
'programing' 카테고리의 다른 글
jQuery.easing[j]Query.easing.def]가 함수가 아닙니다. (0) | 2023.04.02 |
---|---|
대응: useState 또는 useRef? (0) | 2023.04.02 |
WordPress에서 포스트슬러그를 얻는 방법 (0) | 2023.04.02 |
옵션을 동적으로 변경할 때 IE 선택 문제를 수정하는 방법 (0) | 2023.04.02 |
Mongo에서 "not null"을 어떻게 조회합니까? (0) | 2023.04.02 |