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 ArrayList();
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();
}
}
} 另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
当前题目:Java加权负载均衡策略实现过程解析-创新互联
链接URL:http://www.jxjierui.cn/article/csphss.html


咨询
建站咨询
