加权轮询

后端集群每台机器都分配一个权重,权重高得会承担更多的流量,相反权重低的分配的流量也会少,这种策略允许后端集群机器配置差异化

java实现

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;import org.springframework.stereotype.Controller;@Controller
public class IpMapController extends LogBaseController implements Runnable {private static Integer pos = 0;// 待scp的Ip列表,Key代表Ip,Value代表该Ip的权重public static HashMap<String, Integer> serverWeightMap = new HashMap<String, Integer>();static {serverWeightMap.put("127.0.0.1", 1);serverWeightMap.put("127.0.0.2", 1);serverWeightMap.put("127.0.0.3", 1);serverWeightMap.put("127.0.0.4", 1);}public void run() {// 重建一个Map,避免服务器的上下线导致的并发问题Map<String, Integer> serverMap = new HashMap<String, Integer>();serverMap.putAll(serverWeightMap);// 取得Ip地址ListSet<String> keySet = serverMap.keySet();Iterator<String> iterator = keySet.iterator();// 根据权重组成iplistList<String> serverList = new ArrayList<String>();while (iterator.hasNext()) {String server = iterator.next();int weight = serverMap.get(server);for (int i = 0; i < weight; i++)serverList.add(server);}String server = null;synchronized (pos) {if (pos >= keySet.size()){pos = 0;}server = serverList.get(pos);System.out.println("server:" + server + ",pos=" + pos);pos++;}}public static void main(String[] args) {IpMapController ipRunnable = new IpMapController();for (int i = 0; i <= 10; i++) {System.out.println("t" + i);new Thread(ipRunnable).start();}}}

多线程输出结果

t0
t1
t2
t3
t4
t5
t6
server:127.0.0.4,pos=0
server:127.0.0.3,pos=1
server:127.0.0.2,pos=2
server:127.0.0.2,pos=2
t7
server:127.0.0.4,pos=0
server:127.0.0.3,pos=1
t8
server:127.0.0.2,pos=2
server:127.0.0.2,pos=2
t9
server:127.0.0.4,pos=0
t10
server:127.0.0.3,pos=1
server:127.0.0.2,pos=2

Java加权负载均衡策略相关推荐

  1. 企业级java springcloud b2bc商城系统开源源码二次开发-负载均衡策略...

    简单轮询负载均衡 以轮询的方式依次将请求调度不同的服务器,即每次调度执行i=(i+1) mod n 文章来源 JAVA ssm b2b2c多用户商城系统源码 随机负载均衡 随机选择状态为UP的serv ...

  2. Nginx 负载均衡策略之加权轮询分析

    为什么80%的码农都做不了架构师?>>>    nginx 作为方向代理服务,能作为后端服务器提供负载均衡功能,其中加权轮询策略是默认使用的负载均衡策略. 直观上就是将来自客户的请求 ...

  3. 【云原生微服务八】Ribbon负载均衡策略之WeightedResponseTimeRule源码剖析(响应时间加权)

    文章目录 一.前言 二.WeightedResponseTimeRule 1.计算权重? 1)如何更新权重? 2)如何计算权重? 3)例证权重的计算 2.权重的使用 1)权重区间问题? 一.前言 前置 ...

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

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

  5. 面试官:你能说说Ribbon的负载均衡策略及原理嘛?

    来源:blog.csdn.net/wudiyong22/article/details/80829808 Load Balance负载均衡是用于解决一台机器(一个进程)无法解决所有请求而产生的一种算法 ...

  6. SpringCloud组件:Ribbon的负载均衡策略及原理

    来源:blog.csdn.net/wudiyong22/article/details/80829808 Load Balance负载均衡是用于解决一台机器(一个进程)无法解决所有请求而产生的一种算法 ...

  7. 经过负载均衡图片加载不出来_吐血输出:2万字长文带你细细盘点五种负载均衡策略。...

    Dubbo的五种负载均衡策略 2020 年 5 月 15 日,Dubbo 发布 2.7.7 release 版本.其中有这么一个 Features 新增一个负载均衡策略. 熟悉我的老读者肯定是知道的, ...

  8. 吐血输出:2万字长文带你细细盘点五种负载均衡策略。

    Dubbo的五种负载均衡策略 2020 年 5 月 15 日,Dubbo 发布 2.7.7 release 版本.其中有这么一个 Features 新增一个负载均衡策略. 熟悉我的老读者肯定是知道的, ...

  9. 负载均衡策略图文详解

    一.「负载均衡」是什么 正如题图所示的这样,由一个独立的统一入口来收敛流量,再做二次分发的过程就是「负载均衡」,它的本质和「分布式系统」一样,是「分治」. 如果大家习惯了开车的时候用一些导航软件,我们 ...

最新文章

  1. vim常用命令总结 (转)
  2. 《中国顶尖技术团队访谈录·第二季》发布
  3. 两个asp.net发送邮件类
  4. OSPF多区域;特殊区域;
  5. ZJOI2013 防守战线
  6. go web db每次关闭_竟然不用写代码!一款可视化 Web 管理后台生成工具
  7. MySQL Create JSON Values
  8. java 字符串函数_Java字符串函数– 25+必须知道方法
  9. 六石编程学:如何整合两个项目的代码
  10. 基于单片机的老人防摔GSM报警
  11. JNI详细调用(附带图文)
  12. 计算机设备招标书范文,计算机设备招标书
  13. 1v1微信聊天测试点
  14. 视频插件VideoJS5介绍
  15. Mysql 主从间延迟,主从切换策略
  16. 分享一个公主连结辅助工具
  17. 秋招总结|阿里转正失败,到拿到10个大厂产品offer
  18. 24点游戏---java编写
  19. 如何做好自己的职业规划?
  20. python编程题6-抓狐狸小游戏

热门文章

  1. 经典书单 —— 机器学习/深度学习/AI/CV/PGM
  2. while 常见程序逻辑
  3. 顺时针 vs 逆时针
  4. [面试] C/C++ 语法(七)—— C++ 类型转换
  5. 机器学习基础(二十四)—— Random Forest
  6. C++基础——非类型模板参数
  7. VMware网络连接方式(Host-only、NAT、Bridged)介绍及NAT环境下静态IP配置
  8. java中的criteria_java-jpa-criteriaBuilder使用入门
  9. pycharm和python一样吗_PyCharm中Directory与Python package的区别
  10. js json制表符报错_Node.js一个好汉的三个帮