Ubuntu上Java程序的负载均衡实践指南
一、方案总览与适用场景
二、快速落地 Nginx 反向代理负载均衡
upstream backend {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
server {
listen 80;
server_name _;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
三、微服务场景的客户端负载均衡
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<!-- 如需使用 WebClient 负载均衡 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
@Bean
@LoadBalanced
public WebClient.Builder loadBalancedWebClientBuilder() {
return WebClient.builder();
}
spring:
application:
name: order-service
cloud:
discovery:
enabled: true
service-url:
defaultZone: http://eureka1:8761/eureka,http://eureka2:8761/eureka
四、高可用与故障转移
五、自研或嵌入式负载均衡的Java实现要点