zoukankan      html  css  js  c++  java
  • 客户端负载均衡与服务器端负载均衡区别?

    服务器端负载均衡:

          例如:Nginx,通过Nginx进行负载均衡,先发送请求,然后通过负载均衡算法,在多个服务器之间选择一个进行访问;即在服务器端再进行负载均衡算法分配。

    客户端负载均衡:

          例如:spring cloud中的ribbon,客户端会有一个服务器地址列表,在发送请求前通过负载均衡算法选择一个服务器,然后进行访问,这是客户端负载均衡;即在客户端就进行负载均衡算法分配。

          ribbon的默认负载均衡(轮询),当多次访问Eureka(注册中心)中同一个服务时(该服务有多个服务提供者),采用轮询方式,也可自定义配置。

          自定义配置:

                  1、配置类置于启动类包扫描不到的位置。

                                                    

                  

    /**
     * 
     * 如果这个配置文件是一个全局的配置文件, 那么就把这个类放到SpringBootApplication或者是Compentscan能扫描到的包里面
     * 如果是一个单独的配置, 把这个文件放到不能被上面两个注解扫描到的包,也就是当前类所在的包层级要比他们高,然后单独配置给每一个需要这个配置的负载均衡客户端即可
     * 
     */
    
    @Configuration
    public class RibbonConfig {
        @Bean
        public IRule iRule() {
            return  new RandomRule(); //随机
        }
    }
    

      

                  2、排除包扫描,(自定义注解,排除扫描该类)

                                                   

    /**接口
     * 
     * 我们当前的注解本身没有任何含义,就是一个特征标记
     * 
     */
    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface Abcfdsfdsfdsfds {
    }
    
    //配置类

    @Configuration @Abcfdsfdsfdsfds public class RibbonConfig { @Bean public IRule iRule() { return new RandomRule(); } }
    //启动类

    @SpringBootApplication @EnableDiscoveryClient //如果给多个服务开启负载均衡,通过下面的注解实现 @RibbonClients({@RibbonClient(name = "04PROVIDER-EUREKA", configuration = RibbonConfig.class),@RibbonClient(name = "04PROVIDER-EUREKA1")}) @ComponentScan(excludeFilters={@ComponentScan.Filter({Abcfdsfdsfdsfds.class})}) public class ConsumerStartApp { public static void main (String[] args){ SpringApplication.run(ConsumerStartApp.class,args); } @Bean @LoadBalanced//告诉template 注意有一些服务需要开启负载均衡,通过服务的名字可以访问 public RestTemplate template() { return new RestTemplate(); } }

      

                  3、通过配置文件 application.yml

    server:
      port: 10100
    spring:
      application:
        name: 09consumer-eureka-riibon-config-properties
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:12000/eureka
    #给 04PROVIDER-EUREKA配置负载均衡的规则为 com.netflix.loadbalancer.RandomRule
    04PROVIDER-EUREKA:
      ribbon:
        NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
    @SpringBootApplication
    @EnableDiscoveryClient
    //@RibbonClient(name = "04PROVIDER-EUREKA",configuration = RibbonConfig.class)//给04PROVIDER-EUREKA服务开启负载均衡
    //如果给多个服务开启负载均衡,通过下面的注解实现
    @RibbonClients({@RibbonClient(name = "04PROVIDER-EUREKA"),@RibbonClient(name = "04PROVIDER-EUREKA1")})
    public class ConsumerStartApp {
        public static void main (String[] args){
            SpringApplication.run(ConsumerStartApp.class,args);
        }
    
        @Bean
        @LoadBalanced//告诉template 注意有一些服务需要开启负载均衡,通过服务的名字可以访问
        public RestTemplate template() {
            return new RestTemplate();
        }
    }

    以上仅供参考。

  • 相关阅读:
    nexus-3.2.0-01.zip安装以及如何启动服务
    Windows环境使用Nexus-3.x搭建Maven私服
    Maven中settings.xml的配置项说明
    Maven之setting.xml配置文件详解
    设置MAVEN_OPTS环境变量
    使用Nexus搭建Maven私服
    spark-submit参数配置
    spark遇到的问题(持续更新)
    hikari参数配置
    java 开发遇到的问题
  • 原文地址:https://www.cnblogs.com/Z-wen/p/11688657.html
Copyright © 2011-2022 走看看