美文网首页
Ribbon客户端

Ribbon客户端

作者: o_O小薯条 | 来源:发表于2021-01-15 09:11 被阅读0次

    Ribbon

    • Ribbon 是 Netflix 提供的一个基于Http和Tcp的客户段负载均衡工具
    • 服务端负载均衡
    • 负载均衡算法在服务端
    • 由负载均衡器维护服务地址列表
    • 客户端负载均衡
    • 负载均衡算法在客户端
    • 客户端维护服务地址列表

    Ribbon简化远程调用

    • Ribbon可以简化RestTemplate的远程调用
    • 实现步骤
    • 1.在声明Restemplate的@Bean的时候添加注解 @LoadBalanced
    package com.itheima.consumer.config;
    
    import org.springframework.cloud.client.loadbalancer.LoadBalanced;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.client.RestTemplate;
    
    @Configuration
    public class RestemplateConfig {
    
         //加上这个注解
        @LoadBalanced
        @Bean
        public RestTemplate restTemplate() {
            return new RestTemplate();
        }
    }
    
    • 2.在使用restTemplate发起请求时,需要定义url时,host:port可以替换为服务提供方的应用名称 例如:EUREKA-PROVIDER

    Ribbon负载均衡

    • 随机:RandomRule
    • 轮询:RoundRobinRule
    • 最小并发:BestAvailableRule
    • 过滤:AvailabilityFilteringRule
    • 响应时间:WeightedResponseTimeRule
    • 轮询重试:RetryRule
    • 性能可用性:ZoneAvoidanceRule

    Ribbon负载均衡配置(默认轮询策略)

    1·编码方式设置Ribbon的负载均衡策略

    • 1.创建一个配置类MyRule
    package com.itheima.consumer.config;
    
    import com.netflix.loadbalancer.IRule;
    import com.netflix.loadbalancer.RandomRule;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class MyRule {
        @Bean
        public IRule rule(){
            return new RandomRule();
        }
    
    }
    
    • 2.在应用程序启动类中添加配置
    package com.itheima.consumer;
    
    import com.itheima.consumer.config.MyRule;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
    import org.springframework.cloud.netflix.ribbon.RibbonClient;
    
    /**
     * 启动类
     */
    
    @SpringBootApplication
    @EnableEurekaClient
    @EnableDiscoveryClient //激活DiscoveryClient
    /**
     * 配置Ribbon负载均衡策略
     * name:设置 服务提供方的 应用名称
     * configuration: 设置 负载均衡的Bean
     */
    @RibbonClient(name = "EUREKA_PROVIDER", configuration = MyRule.class)
    public class ConsumerApp {
        public static void main(String[] args) {
            SpringApplication.run(ConsumerApp.class, args);
        }
    }
    

    2·配置方式设置Ribbon的负载均衡策略

    • 在yml中配置
    #配置方式设置Ribbon的负载均衡策略
    EUREKA_PROVIDER: #设置服务提供方 的应用名称
      ribbon:
        NFloadBalanceRuleClassName: com.netflix.loadbalancer.RandomRule #策略类
    

    相关文章

      网友评论

          本文标题:Ribbon客户端

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