Spring Cloud Ribbon 클 라 이언 트 부하 균형 구현 예시

5013 단어 SpringCloudRibbon
앞에서 우 리 는 이미 등록 센터 와 서비스 제공 자 두 개의 기본 구성 요 소 를 완성 했다.본 고 는 Spring Cloud Ribbon 을 사용 하여 클 라 이언 트 에 균형 잡 힌 호출 서 비 스 를 소개 한다.
 대형 응용 시스템 부하 균형(LB:Load Balancing)이 가장 먼저 해결 되 는 문제 다.마이크로 서비스 이전에 LB 방안 은 주로 집중 식 부하 균형 방안 으로 서비스 소비자 와 서비스 제공 자 사이 에 또 하나의 독립 된 LB 이다.LB 는 보통 전문 적 인 하드웨어,예 를 들 어 F5 또는 소프트웨어 를 바탕 으로 하 는 VS,HAproxy 등 이다.LB 에는 모든 서비스의 주소 매 핑 표 가 있 습 니 다.서비스 소비자 가 특정한 목표 서 비 스 를 호출 할 때 LB 에 먼저 요청 하고 LB 가 특정한 전략(예 를 들 어 Round-Robin)으로 부하 균형 을 이 룬 후에 목표 서비스 로 전송 할 것 을 요청 합 니 다.
한편,마이크로 서비스의 등장 은 LB 의 실현 에 또 다른 방향 을 제공 했다.LB 의 기능 을 집중 적 인 장치 나 서버 가 제공 하 는 것 이 아니 라 라 라 이브 러 리 방식 으로 서비스 소비자 의 프로 세 스 에 통합 시 켰 다.이런 방안 을 소프트 부하 균형(Soft Load Balancing)또는 클 라 이언 트 부하 균형 이 라 고 한다.Spring Cloud 에서 Eureka 의 서비스 등록 기능 에 맞 춰 리본 서브 프로젝트 는 REST 클 라 이언 트 에 부하 균형 을 이 루 었 다.
Spring Cloud Ribbon 을 사용 하여 서비스 소비자 실현
새 spring-cloud-sample-tutorial-consumer 프로젝트
spring-cloud-sample-tutorial 에서 spring-cloud-sample-tutorial-consumer 하위 프로젝트 를 새로 만 듭 니 다.
ribbon 과 eureka 의존 추가

<dependencies>
 <dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-eureka</artifactId>
 </dependency>
 <dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-ribbon</artifactId>
 </dependency>
 <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
</dependencies>
applicationoin.properties,등록 센터 주소 설정

spring.application.name=consumer
server.port=30001
eureka.client.service-url.defaultZone=http://localhost:10001/eureka/,http://localhost:10002/eureka/
UserController 를 작성 하고@LoadBalanced 주 해 를 추가 하 며 Ribbon 부하 균형 을 사용 합 니 다.

@Controller
@RequestMapping("user")
public class UserController {
 
 @Bean
 @LoadBalanced
 RestTemplate initRestTemplate(){
  return new RestTemplate();
 }
 
 @Autowired
 private RestTemplate restTemplate;
 
 @RequestMapping("add")
 @ResponseBody
 public String add(String userName, String age){
  return restTemplate.getForEntity("http://PRODUCER/user/add",String.class,userName,age).getBody();
 }
}
ConsumerApplication 을 작성 하고@EnableEurekaClient 를 추가 하 며 서비스 등록 을 사용 합 니 다.

@EnableEurekaClient
@SpringBootApplication
public class ConsumerApplication {
 public static void main(String[] args) {
  SpringApplication.run(ConsumerApplication.class,args);
 }
}
클 러 스 터 배포 프로듀서
클 러 스 터 의 Producer 를 모 의 하기 위해 producer 프로젝트 에 application-profile 1.properties 와 application-profile 2.properties 를 새로 만 듭 니 다.
application-profile1.properties

spring.application.name=producer
server.port=20001
eureka.client.service-url.defaultZone=http://localhost:10001/eureka/,http://localhost:10002/eureka/
application-profile2.properties

spring.application.name=producer
server.port=20002
eureka.client.service-url.defaultZone=http://localhost:10001/eureka/,http://localhost:10002/eureka/
부하 효 과 를 측정 하기 위해 서,우 리 는 호출 된 서비스의 포트 를 꺼 냈 다.

@Controller
@RequestMapping("user")
public class UserController {
 private Logger logger = LoggerFactory.getLogger(getClass());
 
 @Autowired
 private DiscoveryClient client;
 @RequestMapping("add")
 @ResponseBody
 public String addUser(String userName, String age) {
  return "Success from " + client.getLocalServiceInstance().getHost() + ":" + client.getLocalServiceInstance().getPort() ;
 }
}
시작 테스트
등록 센터 시작
각각 Active Profiles 를 profile 1 과 profile 2 로 설정 하고 두 번 시작 하여 등록 센터 클 러 스 터 의 서비스 시작 을 완료 합 니 다.

시작 서비스 공급 자
위 와 같은 방법 으로 서비스 제공 자 를 시작 합 니 다.
서비스 소비자 시작
서비스 제공 자 는 단일 기기 로 하면 되 고 Consumer Application 을 정상적으로 시작 하면 됩 니 다.
검증 하 다.
브 라 우 저 에서 입력http://localhost:30001/user/add

재 방문:

이 를 통 해 알 수 있 듯 이 우리 의 부하 균형 호출 서 비 스 는 이미 성공 적 이 고 기본적으로 교대 훈련 방식 에 따라 부하 균형 을 이룬다.
총결산
본 고 는 Spring Cloud Ribbon 을 사용 하여 클 라 이언 트 부하 균형 호출 을 소개 하고 완성 했다.
다음은 스프링 클 라 우 드 를 어떻게 사용 하여 서비스 모니터링 을 하 는 지 계속 소개 하 겠 습 니 다.
원본 코드 다운로드
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기