Ribbon负载均衡

Ribbon负载均衡

什么是Ribbon?

  • Ribbon是Netflix提供的一个基于HTTP和TCP的客户端负载均衡工具
  • 导入Eureka依赖后无需再导入Ribbon的依赖
Ribbon的主要两个功能
  • 简化远程调用
  • 负载均衡
服务端负载均衡
  • 负载均衡算法在服务端

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

    在这里插入图片描述

客户端负载均衡
  • 负载均衡算法在客户端

  • 客户端维护服务地址列表

    在这里插入图片描述

简化RestTemplate远程调用

步骤:

  1. 在声明restTemplate的Bean时候,需要添加一个注解:@LoadBalanced

    @Configuration
    public class RestTemplateConfig {
    
        @LoadBalanced//远程调用
        @Bean
        public RestTemplate restTemplate(){
            return new RestTemplate();
        }
    }
    
  2. 在使用restTemplate发起请求时,需要定义url时,host:port可以替换为服务提供方的应用名称

    String url = "http://localhost:8000/goods/findOne/"+id;
    
Ribbon负载均衡策略

RIbbon自带负载均衡,默认负载均衡策略为轮询

  • Ribbon负载均衡策略:

    • 随机:RandomRule

    • 轮询:RoundRobinRule

    • 最小并发:BestAvailableRule

    • 过滤:AvailabilityFilteringRule

    • 响应时间:WeightedResponseTimeRule

    • 轮询重试:RetryRule(默认10次)

    • 性能可用性:ZoneAvoidanceRule

  • 设置负载均衡策略:

    1. 编码

      @Configuration
      public class MyRule {
          @Bean
          public IRule rule(){
              //配置为随机
              return  new RandomRule();
          }
      }
      

      在启动类加上RibbonClient注解

      配置Ribbon的负载均衡策略:

      • name:设置提供方的应用名称

      • configuration:设置负载均衡的Bean

        @RibbonClient(name = "EUREKA-PROVIDER",configuration = MyRule.class)
        
    2. 配置

      EUREKA-PROVIDER: #服务提供方的应用名称
        ribbon:
          NFloadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #策略类
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值