Spring Cloud 는 어떻게 리본 부하 균형 모드 를 전환 합 니까?

이 글 은 스프링 클 라 우 드 가 리본 부하 균형 모델 을 어떻게 전환 하 는 지 를 소개 한다.이 글 은 예시 코드 를 통 해 매우 상세 하 게 소개 되 어 있 으 며,여러분 의 학습 이나 업무 에 대해 어느 정도 참고 학습 가 치 를 가지 고 있 으 므 로 필요 한 분 들 은 참고 하 시기 바 랍 니 다.
Spring Cloud Ribbon 은 HTTP 와 TCP 를 기반 으로 하 는 클 라 이언 트 부하 균형 도구 로 넷 플 릭 스 Ribbon 을 기반 으로 이 루어 집 니 다.Spring Cloud 의 패 키 징 을 통 해 서 비 스 를 위 한 REST 모드 요청 을 클 라 이언 트 부하 균형 있 는 서비스 호출 로 쉽게 전환 할 수 있 습 니 다.Spring Cloud Ribbon 은 도구 류 프레임 워 크 일 뿐 서비스 등록 센터,배치 센터,API 게 이 트 웨 이 처럼 독립 적 으로 배치 해 야 하 는 것 은 아니 지만 모든 Spring Cloud 가 구축 한 마이크로 서비스 와 인 프 라 에 거의 존재 한다.마이크로 서비스 간 호출,API 게 이 트 웨 이 요청 퍼 가기 등 내용 은 사실상 Ribbon 을 통 해 이 루어 집 니 다.후속 으로 저희 가 소개 할 Feign 을 포함 하여 Ribbon 을 기반 으로 하 는 도구 이기 도 합 니 다.따라서 Spring Cloud Ribbon 에 대한 이해 와 사용 은 우리 가 Spring Cloud 를 사용 하여 마이크로 서 비 스 를 구축 하 는 데 매우 중요 하 다.
Ribbon 은 우리 에 게 많은 부하 균형 알고리즘 을 제공 했다.예 를 들 어 폴 링,랜 덤 등 이다.우 리 는 스스로 알고리즘 을 정의 할 수 있다.그러면 Ribbon 은 기본적으로 어떤 모델 을 사용 하 는 지 테스트 할 수 있다.우 리 는 여기 서 세 개의 서비스 제공 자,한 서비스 소비 자 를 시작 했다.다음 그림 과 같다.

테스트 클래스

@SpringBootTest
@RunWith(SpringRunner.class)
public class LoadBalanceTest {

  @Autowired
  private RibbonLoadBalancerClient client;

  @Test
  public void test(){
    for (int i = 0; i < 50; i++) {
      ServiceInstance instance = client.choose("service-provider");
      System.out.println(instance.getHost()+":"+instance.getPort());
    }
  }
}
출력 결과

LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8890
이것 은 폴 링 모델 임 을 뚜렷하게 알 수 있 기 때문에 Ribbon 은 폴 링 의 부하 균형 모델 을 기본적으로 사용 한 다 는 것 을 증명 할 수 있다.
그렇다면 부하 균형 모드 를 어떻게 바 꿉 니까?
설정 파일 에 아래 단락 만 설정 하면 됩 니 다.(yml 을 예 로 들 면)

{       }:
 ribbon:
  NFLoadBalancerRuleClassName: {IRule    }
예 를 들 어 나의 설정 은 다음 과 같다.

service-provider:
 ribbon:
  NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
선택 가능 한 모드 는 다음 과 같 습 니 다.이것 은 모두 IRule 의 실현 클래스 입 니 다.

랜 덤 모드 로 전환 하 는 효 과 는 어떤 가요?설정 수정 후 테스트 클래스 다시 실행

LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8890
LAPTOP-LFAOC6JB:8888
LAPTOP-LFAOC6JB:8889
LAPTOP-LFAOC6JB:8889
운행 결과 가 무 작위 로 바 뀌 었 음 을 알 수 있다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기