• spring cloud 学习(Ribbon)客户端负载均衡


    spring cloud 学习(Ribbon)

    Ribbon 是一个基于Http和Tcp的客户端负载均衡工具,主要有2个功能: 1.简化远程调用 2. 负载均衡

    服务端负载均衡:

      负载均衡算法在服务端

      由负载均衡器维护服务地址列表

    客户端负载均衡

      负责均衡算法在客户端

      客户端维护服务地址列表

    Ribbon可以简化RestTemplate的远程调用

    步骤:1.在定义RestTemplate的时候添加@LoadBalanced注解(该注解就集成了负载均衡)

    1  @Bean
    2     @LoadBalanced
    3     public RestTemplate restTemplate() {
    4         return new RestTemplate();
    5     }

    2.这时候就可以直接在controller的url中直接书写 服务名称

    @GetMapping("/goods2/{id}")
        public Goods findGoodsById2(@PathVariable("id") int id){
    
    
            String url= "http://EUREKA-PROVIDER/goods/findOne/"+id;
            //远程调用Goods服务中的findOne接口
            Goods goods = restTemplate.getForObject(url, Goods.class);
            return goods;
        }

    负载均衡策略:

      随机:  RandomRule

      轮询:  RoundRobinRule

      最小并发:  BestAvailableRule

      过滤:  AvaliabilityFilteringRule

      响应时间:  WeightedResponseRule

      轮询重试:  RetryRule

      性能可用性: ZoneAvoidanceRule

    Ribbon默认使用轮询策略

    如何修该 Ribbon 负载均衡策略

    方式一:代码方式

      定义一个配置类,返回一个负载均衡的策略

    1 @Configuration
    2 public class MyRule{
    3 
    4 @Bean
    5 public IRule rule(){
    6 
    7 return new RandomRule();//负载均衡策略
    8 }
    9 }

    启动类上添加@RibbonClient注解   注解里面需要设置 服务提供方的 应用名称    以及负载均衡的bean

    @RibbonClient(name=“EUREKA-PROVIDER”,configuration = MyRule.class)

    方式二:配置的方式设置负载均衡策略

     1 EUREKA-PROVIDER: #设置服务提供方的 应用名称 2 ribbon; 3 NFloadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule 4 #策略类的全限定类名 

    设置ribbon的超时时间

    1 # 设置Ribbon的超时时间
    2 
    3 ribbon:
    4 
    5   ConnectTimeout: 1000 # 连接超时时间 默认1s  默认单位毫秒
    6 
    7   ReadTimeout: 3000 # 逻辑处理的超时时间 默认1s 默认单位毫秒
  • 相关阅读:
    使用指针的误区之指针未初始化
    实验室react项目名词解释
    生活感悟之大学
    git 快速入门
    口才锻炼
    narcissus
    crest value &minimum
    factorial
    Str_turn
    array_x
  • 原文地址:https://www.cnblogs.com/luckysupermarket/p/13810612.html
Copyright © 2020-2023  润新知