ribbon 예제

리본에서 제공하는 구현은 리본 설명서를 참조하십시오. 필터 일정.LOAD_BALANCER_KEY의 키를 사용하여 RequestContext에 개체를 넣으면 IRule 구현의 선택 메서드로 전달됩니다. 앞의 예제에 표시된 코드는 RibbonRoutingFilter가 실행되기 전에 실행되어야 합니다. 줄의 프리 필터는 그렇게하기에 가장 좋은 장소입니다. 사전 필터에서 RequestContext를 통해 HTTP 헤더 및 쿼리 매개 변수에 액세스할 수 있으므로 리본에 전달되는 LOAD_BALANCER_KEY를 결정하는 데 사용할 수 있습니다. REQUESTContext에서 LOAD_BALANCER_KEY를 사용하여 값을 넣지 않으면 null이 select 메서드의 매개 변수로 전달됩니다. UserApplication 클래스에 몇 가지 다른 관련 변경 사항이 적용되었습니다. 이제 RestTemplate도 로드밸런스로 표시됩니다. 이것은 스프링 클라우드가 부하 분산 지원을 활용하려는 것을 알려줍니다(이 경우 리본에서 제공). 클래스는 @RibbonClient 함께 추가되며, 클라이언트(예: 안녕하세요)의 이름을 지정한 다음 해당 클라이언트에 대한 추가 구성을 포함하는 다른 클래스를 지정합니다.

이러한 유형 중 하나의 Bean을 만들고 @RibbonClient 구성(예: 위의 FooConfiguration)에 배치하면 다음 예제와 같이 설명된 각 빈을 재정의 @Configuration할 수 있습니다. 그러나 기본 응용 프로그램 컨텍스트에 대한 @ComponentScan 아니라는 점을 주의하십시오. 그렇지 않으면 모든 @RibbonClients 공유됩니다. @ComponentScan(또는 @SpringBootApplication)를 사용하는 경우 포함되지 않도록 조치를 취해야 합니다(예: 겹치지 않는 별도의 패키지에 넣거나 @ComponentScan 명시적으로 스캔할 패키지를 지정할 수 있습니다). 리본의 로드 밸런싱 전략 중 하나인 WeightedResponseTimeRule을 사용하여 응용 프로그램에서 구성 파일의 명명된 클라이언트 아래에 정의된 2개의 서버 간에 클라이언트 측 부하 분산을 활성화합니다. 이러한 속성에 정의된 클래스는 @RibbonClient(구성=MyRibbonConfig.class)와 스프링 클라우드 Netflix에서 제공하는 기본값을 사용하여 정의된 빈보다 우선합니다. 리본 API의 작동을 확인하기 위해 스프링 레스트 템플릿을 사용하여 샘플 마이크로 서비스 응용 프로그램을 구축하고 스프링 클라우드 넷플릭스 API와 함께 Netflix 리본 API를 사용하여 향상시켰습니다. 이렇게 하면 리본 클라이언트에서 속성이 구성됩니다.