Java加权负载均衡策略实现过程解析

网友投稿 245 2022-12-10


Java加权负载均衡策略实现过程解析

加权轮询

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

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 serverWeightMap = new HashMap();

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 serverMap = new HashMap();

serverMap.putAll(serverWeightMap);

// 取得Ip地址List

Set keySet = serverMap.keySet();

Iterator iterator = keySet.iterator();

// 根据权重组成iplist

List serverList = new ArrayLiOQcWLNSJst();

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:127OQcWLNSJ.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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Flink开发IDEA环境搭建与测试的方法
下一篇:java结合email实现自动推送功能
相关文章

 发表评论

暂时没有评论,来抢沙发吧~