zoukankan      html  css  js  c++  java
  • 客户端负载均衡(Ribbon)六:环境搭建

    简介

      Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随即连接等)去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法。

    Ribbon 工作原理

        ......

    案例搭建

    示例代码

     建立ribbon-provider-consumer子工程,对于Robbin,我们不用再去重新添加jar了,因为在eureka中就已经有了。

    服务注册中心

     前几节已经演示过,这里就不多讲了,如需要了解请点击进入

    服务消费方

    application.yml 配置文件

    #服务启动端口号
    server:
      port: 9001
    
    #服务名称(服务注册到eureka名称)
    spring:
      application:
        name: consumer
    #客户端注册进eureka服务列表内
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:7001/eureka
        #该应用为注册中心,不会注册自己,默认true
        register-with-eureka: true
        #是否需要从eureka上获取注册信息,默认true
        fetch-registry: true

    服务接口

    package net.riking.springcloud.consumer.controller;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.client.RestTemplate;
    
    @RestController
    @RequestMapping("/user/consumer")
    public class UserConsumerController {
        @Autowired
        private RestTemplate restTemplate;
    
        private static final String REST_URL_PREFIX = "http://PROVIDER";
    
        @GetMapping("/port")
        public String port() {
            String result = restTemplate.getForObject(REST_URL_PREFIX+"/user/provider/port", String.class);
            return  "消费服务:"+result ;
        }
    
      
    
    }

    启动消费方服务

    package net.riking.springcloud.consumer;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.loadbalancer.LoadBalanced;
    import org.springframework.context.annotation.Bean;
    import org.springframework.web.client.RestTemplate;
    @SpringBootApplication
    public class AppConsumer {
        public static void main(String[] args) {
            SpringApplication.run(AppConsumer.class, args);
        }
    
        @Bean
        @LoadBalanced   //如果提供者服务为集群,当在请求时,拥有客户端负载均衡的能力,
        RestTemplate restTemplate() {
            return new RestTemplate();
        }
    
    }

    服务提供方一

    application.yml 配置文件

    #服务启动端口号
    server:
      port: 8001
    
    #服务名称(服务注册到eureka名称)
    spring:
      application:
        name: provider
    
    #客户端注册进eureka服务列表内
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:7001/eureka
        #该应用为注册中心,不会注册自己,默认true
        register-with-eureka: true
        #是否需要从eureka上获取注册信息,默认true
        fetch-registry: true

    服务接口

    package net.riking.springcloud.provider.controller;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.cloud.client.discovery.DiscoveryClient;
    import org.springframework.web.bind.annotation.*;
    
    
    @RestController
    @RequestMapping("/user/provider")
    public class UserProviderController {
    
        @Autowired
        private DiscoveryClient client;
    
        @Value("${server.port}")
        private String  port;
    
        @GetMapping("/port")
        public String port() {
            return  "调用提供者provider端口号:"+port ;
        }
    
    }

    启动提供方服务

    package net.riking.springcloud.provider;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
    
    @SpringBootApplication
    @EnableEurekaClient  ///开启对EurekaClient的支持,即:作为Eureka客户端,高版本可省略
    public class AppProvider {
        public static void main(String[] args) {
            SpringApplication.run(AppProvider.class, args);
        }
    
    }

    服务提供方二

    将服务提供者一中application.yml配置文件端口号修改至8002,然后启动服务提供者二

    IDEA工具 项目重复启动方式

    启动工程后,访问:http://eureka7001:7001/,我们可以看到有两个提供方服务和一个消费方服务注册进eureka中,这时f环境搭建成功,如下图

    Ribbon负载均衡验证

     访问http://localhost:9001/user/consumer/port  ,信息如下:

     

     再次访问http://localhost:9001/user/consumer/port  ,信息如下:

     源码分析

             本来想好了自己写,但是看了这篇文章( 点击进入),然后就放弃,对于这篇文章,我感觉清晰明了,如果想深入Ribbon可以看看。 

  • 相关阅读:
    Android DSelectorBryant 单选滚动选择器
    Android BSearchEdit 搜索结果选择框
    Android TeaScreenPopupWindow多类型筛选弹框
    Android TeaPickerView数据级联选择器
    Android 兔子基金小工具
    Android 监听手机锁屏的工具类
    Android 弹出Dialog时隐藏状态栏和底部导航栏
    Android Studio 3.0+ Record Espresso Test 自动化测试
    Android GZIP压缩与解压
    体验 OpenDiablo2, 一款Golang开发的开源游戏
  • 原文地址:https://www.cnblogs.com/kongliuyi/p/11358866.html
Copyright © 2011-2022 走看看