우리는 등록 센터와 서비스 제공 업체의 두 가지 기본 구성 요소를 완료했습니다. 이 기사에서는 스프링 클라우드 리본을 사용하여 클라이언트 측에서 밸런싱을로드하는 통화 서비스를 소개합니다.
로드 밸런싱 (LB :로드 밸런싱)이 해결해야 할 첫 번째 문제입니다. 마이크로 서비스 전에, LB 솔루션은 주로 중앙 집중식로드 밸런싱 솔루션이자 서비스 소비자와 서비스 제공 업체 간의 또 다른 독립적 인 LB였습니다. LB는 일반적으로 F5 또는 VS, Haproxy 등과 같은 소프트웨어 기반과 같은 전용 하드웨어입니다. LB의 모든 서비스에 대한 주소 매핑 테이블이 있습니다. 서비스 소비자가 대상 서비스를 호출하면 먼저 LB에 요청을 시작합니다. LB는 특정 정책 (예 : 라운드 로빈)을 사용하여 요청과 대상 서비스에 대한 밸런스 밸런스를로드합니다.
MicroServices의 출현은 LB 구현에 대한 또 다른 아이디어를 제공합니다. LB의 기능을 중앙 장치 나 서버에서 제공하지 않고 라이브러리 형태로 서비스 소비자의 프로세스에 통합하는 것입니다. 이 솔루션을 소프트로드 밸런싱 또는 클라이언트로드 밸런싱이라고합니다. Spring Cloud에서 Eureka의 서비스 등록 기능과 함께 리본 하위 프로젝트는 나머지 클라이언트의 부하 밸런싱을 구현합니다.
스프링 클라우드 리본으로 소비자에게 서비스를 제공하십시오
새로운 Spring-Cloud-Sample-Tutorior-Consumer 프로젝트를 만듭니다
Spring-Cloud-Sample-Tutorial에서 새로운 Spring-Cloud-Sample-Tutorial-Consumer 하위 프로젝트를 만듭니다
리본과 유레카 종속성을 추가하십시오
<pectionies> <pectinement> <groupid> org.springframework.cloud </groupid> <artifactid> Spring-Cloud-Starter-Eureka </artifactid> </depectency> <groupid> org.springframework.cloud </groupid> <arepinciD> Spring-cloud-starter-ribbon> </artifactid> <groupid> org.springframework.boot </groupid> <artifactid> 스프링-부트 스타터-web </artifactid> </fectionency> </fectionements>
Applicationin.properties, 레지스터 센터 주소를 구성하십시오
spring.application.name = consumerserver.port = 30001eureka.client.service-url.defaultzone = http : // localhost : 10001/eureka/, http : // localhost : 10002/eureka/
UserController를 작성하고 @loadbalanced 주석을 추가하고 리본로드 밸런싱을 활성화하십시오
@controller @requestMapping ( "사용자") 공개 클래스 userController {@bean @loadbalanced resttemplate initRestTemplate () {return new restTemplate (); } @autowired private resttemplate resttemplate; @requestmapping ( "add") @ResponseBody public String add (문자열 사용자 이름, 문자열 age) {return resttemplate.getForentity ( "http : // producer/user/add", string.class, username, age) .getBody (); }}소비자를 쓰고 @enableeurekaclient를 추가하고 서비스 등록을 활성화하십시오
@enableEureKAclient@SpringBootApplicationPublic Class ConsumerApplication {public static void main (String [] args) {springApplication.run (consumerApplication.class, args); }}클러스터 배포 생산자
클러스터의 생산자를 시뮬레이션하기 위해 새로운 응용 프로그램 -profile1.properties 및 application-profile2.properties가 생산자 프로젝트에서 생성됩니다.
Application-Profile1.properties
spring.application.name = producerserver.port = 20001eureka.client.service-url.defaultzone = http : // localhost : 10001/eureka/, http : // localhost : 10002/eureka/
Application-Profile2.properties
spring.application.name = producerserver.port = 20002eureka.client.service-url.defaultzone = http : // localhost : 10001/eureka/, http : // localhost : 10002/eureka/
로드 효과를 테스트하기 위해 호출 된 서비스 포트를 입력했습니다.
@controller@requestMapping ( "사용자") 공개 클래스 userController {private logger = loggerfactory.getLogger (getClass ()); @autowired Private DiscoveryClient Client; @requestmapping ( "add") @ResponseBody public String addUser (문자열 사용자 이름, 문자열 age) { "return"return "return" + client.getLocalServiceInstance (). gethost () + ":" + client.getLocalServiceInstance (). getport (); }}테스트를 시작하십시오
등록 센터를 시작하십시오
프로파일 1 및 프로파일 2에 활성 프로파일을 구성하고 두 번 시작한 다음 레지스트리 클러스터의 서비스 시작을 완료하십시오.
서비스 제공 업체를 시작하십시오
위와 같은 방식으로 서비스 제공 업체를 시작하십시오.
소비자에게 봉사하십시오
서비스 제공 업체는 독립형으로 수행 할 수 있으며 소비자는 정상적으로 시작할 수 있습니다.
확인하다
브라우저에서 http : // localhost : 30001/user/add를 입력하십시오
다시 방문하십시오 :
로드 밸런싱 콜 서비스가 성공했으며 회전 훈련에 따라 기본값이로드 밸런싱입니다.
요약
이 기사에서는 클라이언트로드 밸런싱에 Spring Cloud 리본을 사용하는 호출을 소개하고 완료합니다.
다음으로 서비스 모니터링을 위해 Spring Cloud를 사용하는 방법을 계속 소개합니다.
소스 코드 다운로드
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.