zoukankan      html  css  js  c++  java
  • SpringCloud系列九:脱离Eureka使用Ribbon

    1. 回顾

      在前文的示例中,是将Ribbon与Eureka配合使用的。但是现实中可能不具备这样的条件,例如一些遗留的微服务,它们可能并没有注册到Eureka Server上,

      甚至根本不是使用Spring Cloud开发的,此时要如何使用Ribbon实现负载均衡

    2. 脱离Eureka使用Ribbon

      > 复制项目 microservice-consumer-movie-ribbon,将ArtifactId修改为 microservice-consumer-movie-without-eureka

      > 为了更具说服力,将Eureka的依赖替换为Ribbon依赖,即将

    <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>

      替换为

    <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
    </dependency>

      > 去掉启动类上的@EnableDiscoveryClient注解

    package com.itmuch.cloud.microserviceconsumermoviewithouteureka;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    import org.springframework.cloud.client.loadbalancer.LoadBalanced;
    import org.springframework.context.annotation.Bean;
    import org.springframework.web.client.RestTemplate;
    
    @SpringBootApplication
    public class MicroserviceConsumerMovieWithoutEurekaApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(MicroserviceConsumerMovieWithoutEurekaApplication.class, args);
        }
    
        @Bean
        @LoadBalanced // 实现负载均衡
        public RestTemplate restTemplate() {
            return new RestTemplate();
        }
    }

      > 将application.yml修改如下:

    server:
      port: 8010
    spring:
      application:
        name: microservice-consumer-movie
    microservice-provider-user:
      ribbon:
        listOfServers: localhost:8000,localhost:8001

      其中,属性microservice-provider-user.ribbon.listOfServers用于为名为microservice-provider-user的Ribbon客户端设置请求的地址列表

      > 启动两个以上的 microservice-simple-provider-user 实例

      > 启动 microservice-consumer-without-eureka 

      > 多次访问 http://localhost:8010/log-instance,控制台打印类似如下日志

      由结果可知,尽管电影微服务和用户微服务并没有注册到Eureka上,Ribbon仍可正常工作,请求依旧会分摊到两个用户微服务节点上

    3. 总结

      本文讲解了脱离Eureka使用Ribbon的情况。

      下文将讲解使用Feign实现声明式REST调用,敬请期待~~~

     4. 参考

      周立 --- 《Spring Cloud与Docker微服务架构与实战》

  • 相关阅读:
    swoole中退出、异常与错误的处理笔记
    centos6.9+lnmp1.5环境部署swoole记录
    linux递归查找文件内容并替换
    使用FFMPEG 压缩png图片 与tinypng压缩结果对比
    XAMPP安装PHP_GMP
    Yii2 输出图片相关
    (xampp)lampp 下配置https(ssl)自签双向认证以后 apache无法启动解决方案
    PHP正则表达式匹配俄文字符
    windows 7 php 7.1 命令行 执行 中文文件名 的PHP文件
    centos6.9 安装完xampp 7.2.0后,执行/opt/lampp/lampp报错
  • 原文地址:https://www.cnblogs.com/jinjiyese153/p/8657717.html
Copyright © 2011-2022 走看看