ribbon自定义负载均衡策略,应用所有服务_dubbo的负载均衡策略

ribbon自定义负载均衡策略,应用所有服务_dubbo的负载均衡策略Ribbon默认的负载均衡策略默认的有下面几种:我们也可以自定义负载均衡策略:修改springcloud-consumer-dept-80的主启动类:下面开始编写自定义配置类MySelfRule,但这个类不能乱放!官方文档给出警告:这个自定义的类不能放在@ComponentScan所扫描的当前包以及子包下,否则我们自定义的这个配置类就会被所有的Ribbon客户端所共享,也就是我们达…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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;
   }
@Override
 public Server choose(Object key)
 {
  return choose(getLoadBalancer(), key);
 }

@Override
 public void initWithNiwsConfig(IClientConfig clientConfig)
 {
 }
 }             

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/182436.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Windows下nmap命令及Zenmap工具的使用方法「建议收藏」

    Windows下nmap命令及Zenmap工具的使用方法「建议收藏」#Nmap简介nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。正如大多数被用于网络安全的工具,nmap也是不少黑客爱用的工具。系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器,但是黑客会利用nmap来搜集目标电脑的网络设定,从而计划攻击的方法。Nmap常被跟评估系统漏洞软件Nessus混为一谈。Nmap

  • 建立友好城市有什么用_算法基础课acwing下载

    建立友好城市有什么用_算法基础课acwing下载原题连接Palmia国有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市。北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相同。每对友好城市都向政府申请在河上开辟一条直线航道连接两个城市,但是由于河上雾太大,政府决定避免任意两条航道交叉,以避免事故。编程帮助政府做出一些批准和拒绝申请的决定,使得在保证任意两条航线不相交的情况下,被批准的申请尽量多。输入格式第1行,一个整数N,表示城市数。第2行到第n+1行,每行两个整数,中间用1个空格隔开,分别表示南岸和

  • C# 登陆验证码工具类VerifyCode

    C# 登陆验证码工具类VerifyCodeusingSystem;usingSystem.Collections.Generic;usingSystem.Drawing;usingSystem.Drawing.Imaging;usingSystem.IO;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;…

  • 将字符串指针赋值给数组[通俗易懂]

    比如char*p=”sdflkjasljfsjlsdfsa”;charp1[200];将p赋给p1(1)strcpy(p1,p);(2)char*src=”helloworld”;chardes[100]={0};memcpy(des,src,strlen(src)+1);//void*memcpy(void*str1,const…

  • java请求C# asmx接口[通俗易懂]

    java请求C# asmx接口[通俗易懂]packagecom.example.demo.controller;importorg.apache.axis.client.Call;importorg.apache.axis.client.Service;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind….

  • 使用google earth engine(GEE)提取2000年到2019年长江下游水体(河流、湖泊)数据[通俗易懂]

    使用google earth engine(GEE)提取2000年到2019年长江下游水体(河流、湖泊)数据[通俗易懂]我最近想通过GEE直接统计长时间序列下长江下游流域的水体面积变化情况,如果通过传统做法很复杂,于是想到了使用GEE。下面是提取水体的效果图,时间是2000年的,你也可以设置显示2000-2019年中任意一年的水体数据。代码链接:https://code.earthengine.google.com/2440b9511ba0c1cefaf926c7c47e5ea2读者可以先通过代码看看效果,下面我说一下最主要的思路:1.数据源的选择;2.数据的时间、地点筛选;3.水体的标准设置;4

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号