Ribbon 부하 균형 사용 방식 (Eurka 와 함께 사용)

4430 단어 springCloud
1. 부하 균형
    부하 균형 은 시스템 의 높 은 사용 가능, 네트워크 압력 의 완화 와 처리 능력 의 확대 에 중요 한 수단 중 하나 이다.
2. 서버 측 부하 균형 과 클 라 이언 트 부하 균형
    1) 서버 측 부하 균형
        우리 가 일반적으로 말 하 는 부하 균형 은 서버 측의 부하 균형 을 가리 키 는데 그것 은 하드웨어 와 소프트웨어 부하 균형 방식 으로 나 뉜 다.
        * 하드웨어 부하 균형: 서버 노드 간 에 부하 균형 에 사용 되 는 장 치 를 전문 적 으로 설치 합 니 다. 예 를 들 어 F5 등 입 니 다.
        * 소프트웨어 부하 균형: 서버 에 균형 부하 기능 이나 모듈 을 가 진 소프트웨어 알 리 를 설치 하여 배포 요청 을 완성 합 니 다. 예 를 들 어 Nginx 등 입 니 다.
    2) 클 라 이언 트 부하 균형
        서버 측 부하 균형 과 가장 큰 차이 점 은 서비스 목록 에 저 장 된 위치 에 있다.
        * 서버 측 부하 균형 에서 하드웨어 나 소프트웨어 장 치 는 사용 가능 한 서버 목록 을 유지 하고 심장 박동 검 사 를 통 해 고장 난 서버 노드 를 제거 하여 목록 에 내 가 정상적으로 접근 할 수 있 는 노드 임 을 확보한다.
        * 클 라 이언 트 부하 균형 에서 모든 클 라 이언 트 노드 는 자신 이 방문 할 서버 목록 을 유지 해 야 합 니 다.이 서버 들 의 목록 은 서비스 등록 센터 에서 나온다.심장 박동 을 통 해 서버 목록 의 건강 을 유지 하려 면 서비스 등록 센터 의 협조 가 필요 하 다.
Ribbon 도입 에 필요 한 의존:
		
			org.springframework.cloud
			spring-cloud-starter-eureka
		
		
			org.springframework.cloud
			spring-cloud-starter-ribbon
		
		
			org.springframework.cloud
			spring-cloud-starter-config
		

yml 설정 eureka 군집 설정:
eureka:
  client:
    register-with-eureka: false
    service-url: 
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/

ConfigBean 설정 클래스 수정:
1. RestTemplate 추가 @ LoadBalanced 를 수정 하여 부하 균형 을 엽 니 다.
2. Ribbon 방법 부하 균형 전략 추가:
@Bean
	public IRule muRule() {
		// return new RoundRobinRule();//  
		return new RandomRule();//   
	}

간단 한 부하 균형 설정 이 완료 되 었 습 니 다. 다음은 ConfigBean 전체 코드 를 설치 합 니 다.
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;

@Configuration
public class ConfigBean {

	@Bean
	@LoadBalanced // ribbon    
	public RestTemplate getRestTemplate() {
		return new RestTemplate();
	}

	@Bean
	public IRule muRule() {
		// return new RoundRobinRule();//  
		return new RandomRule();//   
	}
}

Ribbon 자체 부하 균형 전략 소개:
정책 이름
전략 성명
정책 설명
실현 설명
BestAvailableRule
public class BestAvailableRule extends ClientConfigEnabledRoundRobinRule
최소 병렬 요청 서버 선택
서버 를 하나씩 살 펴 보고 서버 가 tripped 되면 무시 합 니 다. 그 중에서 ActiveRequestsCount 의 가장 작은 server 를 선택 하 십시오.
AvailabilityFilteringRule
public class AvailabilityFilteringRule extends PredicateBasedRule
계속 연결 에 실 패 했 기 때문에 circuit tripped 로 표 시 된 백 엔 드 server 를 걸 러 내 고, 높 은 병렬 백 엔 드 server (active connections 가 설정 한 한도 값 을 초과 함) 를 걸 러 냅 니 다.
필터 서버 의 논 리 를 포함 하 는 Availability Predicate 를 사용 합 니 다. 사실은 status 에 기 록 된 각 server 의 운행 상 태 를 검사 하 는 것 입 니 다.
WeightedResponseTimeRule
public class WeightedResponseTimeRule extends RoundRobinRule
해당 시간 에 따라 하나의 weight 를 분배 하고 해당 시간 이 길 수록 weight 가 작 을 수록 선 택 될 가능성 이 낮 습 니 다.
하나의 배경 스 레 드 는 status 에서 평가 응답 시간 을 정기 적 으로 읽 고 모든 server 에 하나의 weight 를 계산 합 니 다.Weight 의 계산 도 비교적 간단 합 니 다. responsetime 에서 각 server 의 평균 responsetime 을 빼 는 것 은 server 의 가중치 입 니 다.처음 실행 되 었 을 때 statas 가 형성 되 지 않 았 을 때 roubine 정책 으로 server 를 선택 하 십시오.
RetryRule
public class RetryRule extends AbstractLoadBalancerRule
선 택 된 부하 균형 전략 기 에서 재 시도 메커니즘.
설정 시간 동안 server 를 선택 하지 못 하면 subRule 방식 으로 사용 가능 한 server 를 선택 하려 고 시도 합 니 다.
RoundRobinRule
public class RoundRobinRule extends AbstractLoadBalancerRule
roundRobin 방식 폴 링 선택 server
폴 링 index, index 가 대응 하 는 위 치 를 선택 한 server
RandomRule
public class RandomRule extends AbstractLoadBalancerRule
서버 를 무 작위 로 선택
index 에서 랜 덤 으로 index 가 대응 하 는 위 치 를 선택 한 server
ZoneAvoidanceRule
public class ZoneAvoidanceRule extends PredicateBasedRule
서버 가 있 는 지역 의 성능 과 서버 의 가용성 을 복합 적 으로 판단 하 는 서버
Zone Avoidance Predicate 와 Availability Predicate 를 사용 하여 서버 를 선택 할 지 여 부 를 판단 합 니 다. 이전 판단 은 하나의 zone 의 운행 성능 이 사용 가능 한 지 여 부 를 판단 하고 사용 할 수 없 는 zone (모든 server) 을 제거 합 니 다. Availability Predicate 는 연결 수가 너무 많은 서버 를 걸 러 내 는 데 사 용 됩 니 다.

좋은 웹페이지 즐겨찾기