Ribbon+LoadBalance

ribbon是一套客户端的负载均衡工具。主要提供客户端的负载均衡算法和服务调用。当调用服务时ribbon会自动的帮助你基于某种规则(轮询、随机)去链接机器调用服务。我们也可以使用ribbon实现自定义的负载均衡算法。Ribbon是客户端的负载均衡,Nginx是服务器的负载均衡。

  1. pom依赖

    eureka自带了ribbon依赖,所以只需加入eureka客户端依赖。

  2. Ribbon要结合RestTemplate实现远程调用

    /*** 配置RestTemplate* 使用@LoadBalanced 默认轮询的负载均衡策略*/
    @Configuration
    public class RestTemplateConfig {@Bean@LoadBalancedpublic RestTemplate getRestTemplate(){return new RestTemplate();}
    }
    
    @RestController
    public class OrderController {@Resourceprivate RestTemplate restTemplate;public static final String PAYMENT_URL = "http://CLOUD-PAYMENT-SERVICE";@GetMapping("/login/{admin}/{password}")public Result<Users> orderLogin(@PathVariable String admin,@PathVariable String password){String login_url = PAYMENT_URL+"/sent/user/login/"+admin+"/"+password;//使用restTemplate实现远程调用服务Result<Users> result = restTemplate.getForObject(login_url,Result.class);return result;}
    }
    
  3. 自定义ribbon负载均衡算法

    自定义的ribbon负载规则不能放在@ComponentScan所扫描的包下以及子包下,也就是说不能放在主启动类所在的包内,要与主启动类所在包并列。利用IRule设置规则

    @Configuration
    public class MyRandomRule {@Beanpublic IRule myRule(){return new RandomRule();}
    }
    

    ,在主启动类加上

    @RibbonClient(name = "CLOUD-PAYMENT-SERVICE",configuration = MyRandomRule.class)
    

    以下为Ribbon均衡负载规则的类型。

  4. 在spring-cloud2020后eureka移除了ribbon。需要使用LoadBalance来设置自定义的负载均衡。eureka自带了LoadBalance依赖,所以只需加入eureka客户端依赖。和ribbon一样需要配置RestTemplate实现远程调用。

    1. 自定义LoadBalance负载均衡策略

      /*** 自定义随机负载均衡策略*/
      public class MyRandomRule {@BeanReactorLoadBalancer<ServiceInstance> randomLoadBalancer(Environment environment,LoadBalancerClientFactory loadBalancerClientFactory){String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);return new RandomLoadBalancer(loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class),name);}
      }
      
    2. 创建RestTemplate时加上自定义负载均衡策略

      /*** 配置RestTemplate* 使用@LoadBalanced 默认轮询的负载均衡策略*/
      @Configuration
      @LoadBalancerClient(name = "CLOUD-PAYMENT-SERVICE",configuration = MyRandomRule.class)
      public class RestTemplateConfig {@Bean@LoadBalancedpublic RestTemplate getRestTemplate(){return new RestTemplate();}
      }
      

Ribbon+LoadBalance相关推荐

  1. springcloud ribbon @LoadBalance负载均衡源码流程分析

    一.编写示例 1.服务端 pom.xml <properties><java.version>1.8</java.version><spring-cloud. ...

  2. springcloud之负载均衡

    文章目录 1.1 两种负载均衡 客户端负载均衡 服务端负载均衡 1.2 概念 1.3 Ribbon组成 1.4 编码及测试 1.4.1 利用Eureka手写负载均衡: 1.4.2 ribbon负载均衡 ...

  3. springcloud----负载均衡--Ribbon与LoadBalance

    简介 Spring Cloud Ribbon 是 Netflix Ribbon 实现的一套客户端 负载均衡工具 简单的说,Ribbon 是 Netflix 发布的开源项目,主要功能是提供 客户端的复杂 ...

  4. 深入理解Ribbon之源码解析

    什么是Ribbon Ribbon是Netflix公司开源的一个负载均衡的项目,它属于上述的第二种,是一个客户端负载均衡器,运行在客户端上.它是一个经过了云端测试的IPC库,可以很好地控制HTTP和TC ...

  5. 聊聊WebClient的LoadBalance支持

    为什么80%的码农都做不了架构师?>>>    序 本文主要研究一下WebClient的LoadBalance支持 代码实例 配置 @Configuration public cla ...

  6. Ribbon、Feign、OpenFeign、spring-cloud-openfeign的区别

    一. Ribbon 随着服务注册中心的安装完成后,客户端的负载均衡和服务的调用又是我们关注的话题.Ribbon可以实现客户端的负载均衡, 负载均衡LB LoadBalance(负载均衡):简单的说就是 ...

  7. SpringCloud:Ribbon负载均衡(基本使用、 负载均衡、自定义配置、禁用 Eureka 实现 Ribbon 调用)

    现在所有的服务已经通过了 Eureka 进行了注册,那么使用 Eureka 注册的目的是希望所有的服务都统一归属到 Eureka 之中进 行处理,但是现在的问题,所有的微服务汇集到了 Eureka 之 ...

  8. Ribbon源码解析(一)

    目录 介绍 引入 关键组件 Modules模块 Ribbon和Spring-Cloud-Loadbalancer Core IClient RetryHandler DefaultLoadBalanc ...

  9. SpringCloud Ribbon(一)之自定义负载均衡器ILoadBalancer

    一.Ribbon负载均衡 一个服务对应一个LoadBalancer,一个LoadBalancer只有一个Rule,LoadBalancer记录服务的注册地址,提供更新服务的注册地址,Rule提供从服务 ...

最新文章

  1. 如何建立和维护自己的“人脉”
  2. AngularJs学习
  3. SVN 之 去掉SVN管理标记
  4. 20应用统计考研复试要点(part21)--概率论与数理统计
  5. ubuntu下python的错误
  6. 探究Redis两种持久化方式下的数据恢复
  7. 使用Visual Studio Code设置Python开发环境
  8. java singleton inner class_Java面向对象设计模式-单例模式
  9. php禁用exec,php – 警告:出于安全原因,已禁用`exec()`
  10. HBase shell 示例
  11. 不知道这些,你的世界杯就白看了!
  12. s3c6410 RTC driver——读取实时时间信息 LDD3 ELDD 学习笔记
  13. 【图像去噪】基于matlab GUI均值+中值+高通低通+巴特沃斯+PCA+小波+维纳滤波图像去噪【含Matlab源码 1705期】
  14. web前端——旋转3D魔方
  15. java数据采集方案_java--数据采集系统.doc
  16. Potplayer + LAVFilters + madVR 配置教程
  17. SpringBoot整合Minio实现文件上传、下载
  18. 《中国云计算数据中心运营指南》
  19. 智能手环,智能手表,智能眼镜,我们到底该怎么选呢?
  20. Shadow SSDT

热门文章

  1. MATLAB案例-汽车雷达
  2. 多旋翼自主飞行器(C 题 本科组)-- 2015 年全国大学生电子设计竞赛试题
  3. win7 64位 卸载ie11 方法
  4. WinDbg入门教程
  5. 电商-分享时短链接生成方案
  6. 计算机音乐谱无羁,天谕手游忘羡无羁乐谱代码是什么-天谕手游忘羡无羁乐谱代码分享_快吧手游...
  7. (一)c语言百题趣味题之--分糖问题
  8. 关于android手游Sdk开发的专题(一)
  9. php redis smove,Redis Smove 命令 - Redis 教程 - 自强学堂
  10. 航天科工研发“高速飞行列车”,最高时速可达4000公里?