四种常见的负载均衡算法

随机负载

随机从服务列表中挑选一个服务

// 基于Java的随机负载均衡算法
public class RandomLoadBalancer {
    
    // 传入服务器列表,返回随机选择的服务器
    public Server selectServer(List<Server> serverList) {
        // 获取服务器列表大小
        int size = serverList.size();
        // 生成随机数
        int randomIndex = new Random().nextInt(size);
        // 返回随机选择的服务器
        return serverList.get(randomIndex);
    }
    
    // 服务器类
    public static class Server {
        private String ip;
        private int port;
        
        public Server(String ip, int port) {
            this.ip = ip;
            this.port = port;
        }
        
        // getter和setter方法省略
    }
}

轮询负载

遍历服务列表(排好队一个一个来)

public class RoundRobinLoadBalancer {
    
    // 记录上一次选择的服务器下标
    private int lastIndex = -1;
    
    // 传入服务器列表,返回轮询选择的服务器
    public Server selectServer(List<Server> serverList) {
        // 获取服务器列表大小
        int size = serverList.size();
        // 如果服务器列表为空,返回null
        if (size == 0) {
            return null;
        }
        // 如果只有一个服务器,直接返回该服务器
        if (size == 1) {
            return serverList.get(0);
        }
        // 上锁,保证线程安全
        synchronized (this) {
            // 如果上一次选择的服务器下标超出了服务器列表大小,重置为-1
            if (lastIndex >= size) {
                lastIndex = -1;
            }
            // 选择
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值