码迷,mamicode.com
首页 > 编程语言 > 详细

负载均衡算法

时间:2019-07-26 01:40:54      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:随机   shm   pos   public   array   算法   load   slist   list   

1、随机算法

随机算法的实现很简单,我们可以直接通过Random的nextInt()方法实现一个加权随机算法,这种方式在日常的开发工作中还是很常用到的。

 我们首先定义一个ServerIps类,用来存放所有服务IP值

public class ServerIps {
    public static final List<String> LIST = Arrays.asList(
            "192.168.0.1",
            "192.168.0.2",
            "192.168.0.3",
            "192.168.0.4",
            "192.168.0.5",
            "192.168.0.6",
            "192.168.0.7",
            "192.168.0.8",
            "192.168.0.9",
            "192.168.0.10"
    );
}

然后我们创建类LoadBalance来实现随机算法

public class LoadBalance {
    public static String getServer(){
        Random random = new Random();
        int randomPos = random.nextInt(ServerIps.LIST.size());
        return ServerIps.LIST.get(randomPos);
    }
}

 2、加权随机算法

我们生产环境上部署多台服务,可能有的机器性能好,有道机器性能较差,这个时候我们希望更多的请求能够落在性能好的机器上,而性能差的机器处理更少的请求

这个时候我们就需要使用加权随机算法来实现负载均衡,可以通过Map来实现加权

public class ServerIps {
    public static final Map<String, Integer> WEIGHT_LIST = new HashMap<>();
    static {
        WEIGHT_LIST.put("192.168.0.1",5);
        WEIGHT_LIST.put("192.168.0.2",3);
        WEIGHT_LIST.put("192.168.0.3",1);
        WEIGHT_LIST.put("192.168.0.4",6);
        WEIGHT_LIST.put("192.168.0.5",2);
        WEIGHT_LIST.put("192.168.0.6",1);
        WEIGHT_LIST.put("192.168.0.7",7);
        WEIGHT_LIST.put("192.168.0.8",1);
        WEIGHT_LIST.put("192.168.0.9",1);
        WEIGHT_LIST.put("192.168.0.10",1);
    }
}
public class LoadBalance {
    public static String getServer(){
        List<String> ips = new ArrayList<>();
        ServerIps.WEIGHT_LIST.forEach((k, v) ->{
            String ip = k;
            Integer weight = v;
            for (int i = 0;i < weight; i++){
                ips.add(ip);
            }
        });
        Random random = new Random();
        int randomPos = random.nextInt(ips.size());
        return ips.get(randomPos);
    }
}

 

负载均衡算法

标签:随机   shm   pos   public   array   算法   load   slist   list   

原文地址:https://www.cnblogs.com/chentop/p/11247766.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!