Ribbon默认的负载均衡策略默认的有下面几种:

我们也可以自定义负载均衡策略:
修改springcloud-consumer-dept-80的主启动类:

下面开始编写自定义配置类MySelfRule,但这个类不能乱放!

官方文档给出警告:
这个自定义的类不能放在@ComponentScan所扫描的当前包以及子包下,否则我们自定义的这个配置类就会被所有的Ribbon客户端所共享,也就是我们达不到特殊化指定的目的了。

新建包编写MySelfRule类:

自定义算法RandomRule_ZY 如下:

 public class RandomRule_ZY extends AbstractLoadBalancerRule
{// total = 0 // 当total==5以后,我们指针才能往下走,// index = 0 // 当前对外提供服务的服务器地址,// total需要重新置为零,但是已经达到过一个5次,我们的index = 1// 分析:我们5次,但是微服务只有8001 8002 8003 三台,OK?private int total = 0;    // 总共被调用的次数,目前要求每台被调用5次private int currentIndex = 0; // 当前提供服务的机器号public Server choose(ILoadBalancer lb, Object key)
{if (lb == null) {return null;}Server server = null;while (server == null) {if (Thread.interrupted()) {return null;}List<Server> upList = lb.getReachableServers();List<Server> allList = lb.getAllServers();int serverCount = allList.size();if (serverCount == 0) {return null;}if(total < 5){server = upList.get(currentIndex);total++;}else {total = 0;currentIndex++;if(currentIndex >= upList.size()){currentIndex = 0;}} if (server == null) {Thread.yield();continue;}if (server.isAlive()) {return (server);}  server = null;Thread.yield();}return server;}
@Overridepublic Server choose(Object key){return choose(getLoadBalancer(), key);}@Overridepublic void initWithNiwsConfig(IClientConfig clientConfig){}}

自定义算法RandomRule_ZY 必须继承AbstractLoadBalanceRule类

启动springcloud-eureka-7001,7002,7003,8001,8002,8003,80 电脑惨叫的声音。。。
测试发现,此时的负载均衡策略,就是我们自定义的负载均衡策略!

github :https://github.com/XiaoMaKui/test2

Ribbon 自定义负载均衡策略相关推荐

  1. Spring Cloud Alibaba - 11 Ribbon 自定义负载均衡策略(同集群优先权重负载均衡算法)

    文章目录 Pre 需求 工程 Code 继承AbstractLoadBalancerRule实现自定义Rule 随机权重策略 配置 验证 源码 Pre Spring Cloud Alibaba - 0 ...

  2. Spring Cloud Alibaba - 10 Ribbon 自定义负载均衡策略(权重算法)

    文章目录 Pre 工程 首先屏蔽细粒度配置 然后通过代码设置一个全局配置 指定 GlobalRibbonConfig GlobalRibbonConfig 设置负载均衡策略 开发自定义策略 (权重访问 ...

  3. springcloud ribbon 配置负载均衡策略以及自定义策略

    一.系统内置的策略有以下几种.  这个负载策略配置说白了就是让 Ribbon 这个客户端负载均衡器怎么进行访问服务提供者列表.是轮流访问?随机访问?权重?等. Ribbon 的负载均衡策略 策略类   ...

  4. SpringCloud Ribbon(二)之自定义负载均衡策略IRule

    一.Ribbon负载均衡策略 一个服务对应一个LoadBalancer,一个LoadBalancer只有一个Rule,LoadBalancer记录服务的注册地址,Rule提供从服务的注册地址中找出一个 ...

  5. Ribbon的负载均衡策略

    一.Ribbon负载均衡 如上图所示,负载均衡就是避免单个服务的实例处理大批量请求而导致其他实例空闲,造成资源浪费.负载均衡分为客户端.服务端的负载均衡,它们最大的区别在于维护服务器的清单保存的位置不 ...

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

    LoadBalance已有策略   LoadBalance的源码中已有两种策略,RandomLoadBalancer(随机).RoundRobinLoadBalancer(轮询,默认的负载均衡策略). ...

  7. SpringCloud的Ribbon自定义负载均衡算法

    1.Ribbon默认使用RoundRobinRule策略轮询选择server 策略名 策略声明 策略描述 实现说明 BestAvailableRule public class BestAvailab ...

  8. Spring Cloud Alibaba gateway ribbon 自定义负载均衡规则。发散灰度发布,金丝雀测试等

    上一篇介绍了,ribbon的组件.本篇要自己写一个灰度方案.其实就是一个很简单的思维扩散. 需求 前端header请求携带version字段.路由服务根据version去需要对应版本的服务集合,进行或 ...

  9. Ribbon自定义负载均衡算法

    Ribbon是什么? Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起.Ribbon客户端组件提供一系列完善的配置项如连接超时 ...

最新文章

  1. XML的二十个热点问题
  2. C语言的集成开发环境
  3. pytorch scatter_函数学习笔记
  4. Gradle引人注目的特性集
  5. LeetCode:3. Longest Substring Without Repeating Characters
  6. 利用 TensorFlow 实现上下文的 Chat-bots
  7. VTK:IO之GenericDataObjectReader
  8. 云服务器怎么查看文件目录结构,查看云服务器目录结构图
  9. Linux iptables 防火墙相关命令介绍及使用
  10. [CATARCS_2017] Week 1
  11. Mac OS/Linux命令查询网络端口占用情况
  12. Android 系统(135)---Android anr 分析步骤总结
  13. 死磕Android_App 启动过程(含 Activity 启动过程)
  14. Js/jQuery实时监听input输入框值变化
  15. android电视机清理内存,电视盒子总是内存不足?五大清理方法释放更多内存
  16. VGG11、VGG13、VGG16、VGG19网络结构图
  17. 15款用Unity开发iOS、安卓手机游戏的必备插件
  18. Unity - Timeline 之 Trimming clips(裁剪剪辑)
  19. python语言下同一个类下有多个函数,其中一个函数想调用另外一个函数里面的变量怎么调用
  20. react 图片剪切(react-easy-crop)

热门文章

  1. 怎样赞美别人更有创意?
  2. 数据结构视频教程 -《零基础学算法》
  3. beanstalk php 扩展,如何安装Amazon AWS Elastic Beanstalk的PHP扩展?
  4. 调试时使用的 7 种断点
  5. Crypto世界的显学:先驱熵学
  6. 视频教程-MCSE 2012之410视频课程:安装和配置Windows Server 2012 R2-微软认证
  7. pytorch函数unsqueeze函数的理解
  8. pytorch中的squeeze和unsqueeze函数的使用
  9. 一个vue项目的运行流程
  10. vue路由传参-使用encodeURI加密参数