美文网首页
Ribbon使用

Ribbon使用

作者: CodeYang | 来源:发表于2021-08-26 09:31 被阅读0次

    一、首先创建 Eureka 注册中心项目

    二、创建服务提供者cloud-provider

    因为要测试负载均衡,但是不想写重复的项目,我们可以通过启动同一个项目来设定不同端口号,达到该目的。

    1. 设置动态端口
    server:
      port: ${port:8001}
    
    spring:
      application:
        name: cloud-provider
    
    eureka:
     client:
       register-with-eureka: true
       service-url:
         defaultZone: http://localhost:7001/eureka/
     instance:
       instance-id: provider-${server.port}    # Eureka Statue显示地址为 provider8001
       prefer-ip-address: true  #访问路径可以显示IP地址
       lease-renewal-interval-in-seconds: 1   # Eureka客户端向服务器发送心跳的间隔
       lease-expiration-duration-in-seconds: 2 # Eureka服务器收到最后一次心跳后等待的时间上限
    
    
    1. 修改创建启动类


      image.png

    三、创建消费者 cloud-consumer 。

    1. 在消费者项目中,实验负载均衡,已经引入 Eureka 依赖,里面包含 Ribbon 依赖

    2. 创建 controller ,进行调用

        //远程调用
        @Resource
        RestTemplate restTemplate;
    
        //引入 Ribbon 负载
        @Resource
        private LoadBalancerClient loadBalancerClient;
    
        @GetMapping("/consumer/ribbon/{name}")
        public String testRibbon(@PathVariable("name")String name){
            ServiceInstance choose = loadBalancerClient.choose("cloud-provider");//不区分大小写
            System.out.println("getUri:"+choose.getUri());
            System.out.println("getHost:"+choose.getHost());
            System.out.println("getPort:"+choose.getPort());
            System.out.println("getInstanceId:"+choose.getInstanceId());
            System.out.println("getMetadata:"+choose.getMetadata());
            System.out.println("getScheme:"+choose.getScheme());
            System.out.println("getServiceId:"+choose.getServiceId());
            return " ConsumerController";
        }
    
    

    四、测试
    分别启动 Eureka 、cloud-provider8001、cloud-provider8002、cloud-consumer

    1. 查看Eureka 控制台


      Eureka 控制台.png
    2. 发现每次调用结果不同,默认采用 轮询方式


      调用结果.png

    相关文章

      网友评论

          本文标题:Ribbon使用

          本文链接:https://www.haomeiwen.com/subject/cqvciltx.html