spring-cloud-eureka-consumer-ribbon 客户端负载均衡服务消费者

客户端负载平衡器:Ribbon

Ribbon是一个客户端负载均衡器,它可以很好地控制HTTP和TCP客户端的行为。Feign已经使用Ribbon,所以如果您使用@FeignClient,则本节也适用。

Ribbon中的中心概念是指定客户端的概念。每个负载平衡器是组合的组合的一部分,它们一起工作以根据需要联系远程服务器,并且集合具有您将其作为应用程序开发人员(例如使用@FeignClient注释)的名称。Spring Cloud使用RibbonClientConfiguration为每个命名的客户端根据需要创建一个新的合奏作为ApplicationContext。这包含(除其他外)ILoadBalancerRestClientServerListFilter

创建 Eureka-Consumer-Ribbon

  1. 创建springboot工程,引入依赖

      
         org.springframework.boot
         spring-boot-starter-parent
         1.5.10.RELEASE
          
     
    
     
         UTF-8
         UTF-8
         1.8
         Dalston.SR4
     
    
     
         
             org.springframework.boot
             spring-boot-starter-actuator
         
         
             org.springframework.cloud
             spring-cloud-starter-eureka
         
         
             org.springframework.cloud
             spring-cloud-starter-ribbon
         
         
             org.springframework.boot
             spring-boot-starter-web
         
    
         
             org.springframework.boot
             spring-boot-starter-test
             test
         
     
    
     
         
             
                 org.springframework.cloud
                 spring-cloud-dependencies
                 ${spring-cloud.version}
                 pom
                 import
             
         
     
    
  2. 启动类上写注解 @@EnableEurekaClient

     @SpringBootApplication
     @@EnableEurekaClient
     public class SpringCloudEurekaConsumerRibbonApplication {
     
         public static void main(String[] args) {
             SpringApplication.run(SpringCloudEurekaServerApplication.class, args);
         }
     }
     
     @Bean
     @LoadBalanced//负载均衡
     public RestTemplate restTemplate() {
         return new RestTemplate();
     }
    
  3. 修改application配置文件,添加配置

     spring.application.name=eureka-consumer-ribbon
     server.port=8083
     eureka.client.serviceUrl.defaultZone=http://eureka-server.jetbrains.org.cn/eureka/
    
  4. 启动效果


    image
    • 这里看到我们启动了2个eureka-client,为了测试ribbon负载均衡,默认使用的是轮训规则
  5. spring-cloud-eureka-consumer-ribbon 调用 spring-cloud-eureka-client 中的接口

     @GetMapping("/consumer")
     public String dc() {
    
         //获取具体的服务提供者的地址
    
         return restTemplate.getForObject("http://eureka-client/dc", String.class);
    
     }
    
  6. 请求ip:8083/consumer(及spring-cloud-eureka-consumer-ribbon接口)观察eureka-client中dc接口日志输出,两个eureka-client,dc接口日志如果都有输出及实现了负载均衡。

思考

根据上述方式,我们实现了简单的负载均衡服务调用,发现有2个问题是restTemplate调用接口时每次都需要写请求地址与返回类型,那么有没有更优雅的方式呢?下节我们引入Spring Cloud Feign

参考资料

  1. https://github.com/changdaye/spring-cloud-study/tree/master/spring-cloud-eureka-consumer-ribbon

  2. http://blog.didispace.com/spring-cloud-starter-dalston-2-2/

  3. https://springcloud.cc/spring-cloud-dalston.html#spring-cloud-ribbon

spring-cloud-eureka-consumer-ribbon 客户端负载均衡服务消费者_第1张图片
image

你可能感兴趣的:(spring-cloud-eureka-consumer-ribbon 客户端负载均衡服务消费者)