在Debian上使用Java实现负载均衡,可通过以下方式:
sudo apt update && sudo apt install haproxy
/etc/haproxy/haproxy.cfg
,添加后端服务器组(如Java服务端口8080):backend java_servers
balance roundrobin # 轮询算法
server server1 127.0.0.1:8080 check
server server2 127.0.0.1:8081 check
sudo systemctl start haproxy && sudo systemctl enable haproxy
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
public class RoundRobinLoadBalancer {
private final List<String> servers;
private final AtomicInteger index = new AtomicInteger(0);
public RoundRobinLoadBalancer(List<String> servers) {
this.servers = servers;
}
public String getNextServer() {
int currentIndex = index.getAndIncrement() % servers.size();
return servers.get(currentIndex);
}
}
// 使用示例
public class Client {
public static void main(String[] args) {
List<String> serverList = List.of("http://server1:8080", "http://server2:8080");
RoundRobinLoadBalancer balancer = new RoundRobinLoadBalancer(serverList);
for (int i = 0; i < 5; i++) {
System.out.println("Request sent to: " + balancer.getNextServer());
}
}
}
可扩展为随机、加权轮询等算法。pom.xml
中引入Ribbon或LoadBalancer依赖:<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
@RestController
public class ConsumerController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/consume")
public String consume() {
return restTemplate.getForObject("http://service-provider/hello", String.class);
}
}
以上方案可根据实际需求选择,软件负载均衡器(如HAProxy)适合生产环境,代码级实现适合轻量级或定制化场景。