봄 클라우드 - 리본 봄로드 밸런싱 클라이언트 클라우드 입문 튜토리얼 (V) : 리본 봄로드 밸런싱 클라이언트 클라우드 입문 튜토리얼 (A) : 등록 서비스

클라이언트를 균형 리본로드 : 봄 클라우드 튜토리얼 (V)를 시작하기

 

서비스가 수행 할 수 없었다 우리의 서비스에 대한 액세스의 양이, 안녕하세요 세계 서지 경우 우리가 안녕하세요 서비스 클러스터를 만들 수 있습니다, 섹션을 연결합니다. 

원본 포트 8762이 8763으로 변경하면서 매우 간단합니다, 우리는, 안녕하세요 세계 서비스를 복사해야합니다. 봄 부팅 모두 다음 응용 프로그램을 시작, 두 안녕하세요 서비스를받을 수 있습니다. 모두 안녕하세요 세계는 유레카 서비스 센터에 등록되어 있습니다. 이 시간은 HTTP를 방문 : // localhost를 : 8761, 두 안녕하세요 세계 서비스가 등록되어 볼 수 있습니다. (등록 서비스 및 참조 : 서비스 등록 봄 클라우드 시작 튜토리얼 (A)를 ).

1. 클라이언트로드 밸런싱

로드 밸런싱 서버와 클라이언트로드 밸런싱로드 밸런싱으로 나눌 수 있습니다, 서버로드 밸런싱 서버에 의해 처리되므로, 클라이언트는 아무것도 할 필요가 없습니다. 클라이언트로드 밸런싱 기술은 클라이언트가 서버 참조의 집합을 유지하기 위해 필요, 클라이언트가 서버에 요청을 보낼 때마다 자동으로 알고리즘에 따라 서비스 노드를 선택합니다. 일반적인로드 밸런싱 알고리즘 :  라운드 로빈, 랜덤, 해시, 등등 StaticWeighted하고 .

리본 + 편안하고 척하기 : 봄은 서비스 스케줄링 두 종류를 제공합니다. 리본 리본은 HTTP 및 TCP 클라이언트에 대한 제어를 많이 제공하고, 클라이언트 기반의로드 밸런서이다. 

내부 척하기는 너무 오래 사용 @FeignClient 노트로,이 장의 내용도 적용 할 수있는, 리본을 사용.

여기에 봄 클라우드 리본이 헬로 월드 서비스로드 밸런싱을 달성하는 방법 방법에 대해 살펴입니다. 다음은 리본 봄 클라우드 클라이언트로드 밸런싱 아키텍처 다이어그램이다.

안녕하세요 세계 서비스와 리본은 서비스 센터에 등록

서비스 안녕하세요 프로젝트는 restTemplate에 의해 호출 된 서비스 Hellowworld 인터페이스 sercvice - 리본, 리본로드 밸런싱의 사용에 전화를 번갈아 것이다 각각 8762,8763 포트가 서비스 레지스트리에 등록 된 두 개의 사본, 출마 안녕하세요 세계는 두 개의 서로 다른 포트를 제공

 2. 리본 서비스 만들기

1) 리본 서비스라는 Maven 프로젝트 생성, 다음과 같이 pom.xml 파일을 :

  pom.xml 파일

 

2) 메인 클래스 만들기 ServiceRibbonApplication을

코드를 복사
1 개 패키지 springcloud.helloworld.ribbon.service; 
 2 
 세 수입 org.springframework.boot.SpringApplication; 
 4 수입 org.springframework.boot.autoconfigure.SpringBootApplication; 
 5 수입 org.springframework.cloud.client.discovery.EnableDiscoveryClient; 
 6 가져 오기 org.springframework.cloud.client.loadbalancer.LoadBalanced; 
 7 수입 org.springframework.context.annotation.Bean; 
 8 수입 org.springframework.web.client.RestTemplate; 
 9 
10 @SpringBootApplication 
11 @EnableDiscoveryClient 
12 개 공용 클래스 ServiceRibbonApplication { 
13 
14 공공 정적 무효 메인 (문자열 []에 args) { 
15 SpringApplication.run (ServiceRibbonApplication.class, 인수); 
16} 
17 
18 @Bean
19 @LoadBalanced 
{20 템플릿 잔류 나머지 템플릿을 () 
(21) 반환 새로운 템플릿 나머지 (); 
22} 
23}
코드를 복사

@EnableDiscoveryClient 서비스 센터에 등록, 그리고의 restTemplate라는 빈을 등록했다.

@ LoadBalanced 등록이 restRemplate이 할 필요가 있음을 보여준다는로드 밸런싱입니다.

 3) 안녕하세요 획득 한 콘텐츠 서비스 클래스를 가져옵니다 만들기

코드를 복사
1 개 패키지 springcloud.helloworld.ribbon.client; 
 2 
 세 가져 오기 org.springframework.beans.factory.annotation.Autowired; 
 4 수입 org.springframework.stereotype.Service; 
 5 수입 org.springframework.web.client.RestTemplate; 
 6 
 7 @Service 
 8 공용 클래스의 HelloService { 
 9 @Autowired RestTemplate restTemplate; 
(10) 
(11) 공공 문자열 getHelloContent () { 
12 반환 restTemplate.getForObject (에 "http : // 서비스-helloworld를 /", String.class); 
13} 
14}
코드를 복사

여기에 키 코드는, restTemplate.getForObject 방법은 자동으로 리본로드 밸런싱 메커니즘을 통과 헬로 워드 서비스를 선택합니다,

서비스 센터에 등록 된 서비스-helloworld를 안녕하세요 세계 서비스의 이름, 두 개의 서비스-을 HelloWorld가 : 여기에 URL "// 서비스-helloworld를 / HTTP"입니다. 따라서,이 호출은로드 밸런싱 알고리즘을 기반으로 서비스-helloworld를 서비스로 서버를 선택하는 클라이언트로 리본 서비스는 본질적이다. 그리고 진정한 소명을 수행하기 위해 선택한 서비스-helloworld를 안녕하세요에게 세계를 방문하십시오.

리본 서비스 응용 프로그램을 시작합니다 3. 우리는 HTTP를 방문 할 수 있습니다 : // localhost를 : 8901 /, 각 새로 고침는 다음과 같은 두 가지 결과가 번갈아 나타납니다 다른 포트의 실제 호출입니다 서로 다른 서비스-helloworld를 보여 볼 수 있습니다.

            

 

서비스가 수행 할 수 없었다 우리의 서비스에 대한 액세스의 양이, 안녕하세요 세계 서지 경우 우리가 안녕하세요 서비스 클러스터를 만들 수 있습니다, 섹션을 연결합니다. 

원본 포트 8762이 8763으로 변경하면서 매우 간단합니다, 우리는, 안녕하세요 세계 서비스를 복사해야합니다. 봄 부팅 모두 다음 응용 프로그램을 시작, 두 안녕하세요 서비스를받을 수 있습니다. 모두 안녕하세요 세계는 유레카 서비스 센터에 등록되어 있습니다. 이 시간은 HTTP를 방문 : // localhost를 : 8761, 두 안녕하세요 세계 서비스가 등록되어 볼 수 있습니다. (등록 서비스 및 참조 : 서비스 등록 봄 클라우드 시작 튜토리얼 (A)를 ).

1. 클라이언트로드 밸런싱

负载均衡可分为服务端负载均衡和客户端负载均衡,服务端负载均衡完全由服务器处理,客户端不需要做任何事情。而客户端负载均衡技术,客户端需要维护一组服务器引用,每次客户端向服务端发请求的时候,会根据算法主动选中一个服务节点。常用的负载均衡算法有: Round Robbin,  Random,Hash,StaticWeighted等

Spring 提供两辆种服务调度方式:Ribbon+restful和Feign。Ribbon就是一个基于客户端的负载均衡器, Ribbon提供了很多在HTTP和TCP客户端之上的控制. 

Feign内部也已经使用了Ribbon, 所以只要使用了@FeignClient注解,那么这一章的内容也都是适用的。

下面就看看如何Spring Cloud如何用Ribbon来实现两个Hello World服务的负载均衡。以下是Spring cloud的ribbon客户端负载均衡架构图。

hello world服务和ribbon均注册到服务中心

service-hi工程跑了两个副本,端口分别为8762,8763,分别向服务注册中心注册, 当sercvice-ribbon通过restTemplate调用service-Hellowworld的接口时,利用用ribbon进行负载均衡,会轮流的调用处于两个不同端口的Hello world服务

 2. 创建一个Ribbon服务

1) 创建一个maven工程,取名叫service-ribbon, pom.xml文件如下:

  pom.xml

 

2). 创建主类ServiceRibbonApplication

코드를 복사
 1 package springcloud.helloworld.ribbon.service;
 2 
 3 import org.springframework.boot.SpringApplication;
 4 import org.springframework.boot.autoconfigure.SpringBootApplication;
 5 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 6 import org.springframework.cloud.client.loadbalancer.LoadBalanced;
 7 import org.springframework.context.annotation.Bean;
 8 import org.springframework.web.client.RestTemplate;
 9 
10 @SpringBootApplication
11 @EnableDiscoveryClient
12 public class ServiceRibbonApplication {
13 
14     public static void main(String[] args) {
15         SpringApplication.run(ServiceRibbonApplication.class, args);
16     }
17 
18     @Bean
19     @LoadBalanced
20     RestTemplate restTemplate() {
21         return new RestTemplate();
22     }
23 }
코드를 복사

@EnableDiscoveryClient向服务中心注册,并且注册了一个叫restTemplate的bean。

@ LoadBalanced注册表明,这个restRemplate是需要做负载均衡的。

 3). 创建获取一个获取Hello内容的service类

코드를 복사
 1 package springcloud.helloworld.ribbon.client;
 2 
 3 import org.springframework.beans.factory.annotation.Autowired;
 4 import org.springframework.stereotype.Service;
 5 import org.springframework.web.client.RestTemplate;
 6 
 7 @Service
 8 public class HelloService {
 9     @Autowired RestTemplate restTemplate;
10 
11     public String getHelloContent() {
12         return restTemplate.getForObject("http://SERVICE-HELLOWORLD/",String.class);
13     }
14 }
코드를 복사

这里关键代码就是, restTemplate.getForObject方法会通过ribbon负载均衡机制, 自动选择一个Hello word服务,

서비스 센터에 등록 된 서비스-helloworld를 안녕하세요 세계 서비스의 이름, 두 개의 서비스-을 HelloWorld가 : 여기에 URL "// 서비스-helloworld를 / HTTP"입니다. 따라서,이 호출은로드 밸런싱 알고리즘을 기반으로 서비스-helloworld를 서비스로 서버를 선택하는 클라이언트로 리본 서비스는 본질적이다. 그리고 진정한 소명을 수행하기 위해 선택한 서비스-helloworld를 안녕하세요에게 세계를 방문하십시오.

리본 서비스 응용 프로그램을 시작합니다 3. 우리는 HTTP를 방문 할 수 있습니다 : // localhost를 : 8901 /, 각 새로 고침는 다음과 같은 두 가지 결과가 번갈아 나타납니다 다른 포트의 실제 호출입니다 서로 다른 서비스-helloworld를 보여 볼 수 있습니다.

            

추천

출처www.cnblogs.com/wzb0228/p/10973113.html