Skip to content

负载均衡设计 ​

负载均衡是分布式系统的基础。

📋 负载均衡算法 ​

常见负载均衡算法:

负载均衡算法对比:

算法优点缺点适用场景
轮询简单、公平不考虑服务器性能服务器性能相同
加权轮询考虑服务器性能需要配置权重服务器性能不同
最少连接负载均衡效果好需要跟踪连接数长连接场景
随机实现简单负载可能不均无特殊要求
IP Hash会话保持服务器故障影响大需要会话保持
一致性Hash扩展性好、负载均衡实现复杂分布式缓存

🎯 负载均衡实现示例 ​

java
/**
 * 负载均衡器接口
 */
public interface LoadBalancer {
    /**
     * 选择一个服务器
     */
    Server selectServer(List<Server> servers, Request request);
}

/**
 * 轮询负载均衡器
 */
public class RoundRobinLoadBalancer implements LoadBalancer {
    private AtomicInteger counter = new AtomicInteger(0);
    
    @Override
    public Server selectServer(List<Server> servers, Request request) {
        if (servers == null || servers.isEmpty()) {
            throw new IllegalArgumentException("Server list is empty");
        }
        
        // 过滤健康服务器
        List<Server> healthyServers = servers.stream()
            .filter(Server::isHealthy)
            .collect(Collectors.toList());
        
        if (healthyServers.isEmpty()) {
            throw new IllegalStateException("No healthy servers available");
        }
        
        // 轮询选择
        int index = counter.getAndIncrement() % healthyServers.size();
        return healthyServers.get(index);
    }
}

🎯 健康检查 ​

健康检查机制:


上一章节:一致性设计
下一章节:过载保护设计
返回目录:系统架构能力