Spring Cloud Alibaba 2025.0.0 与 Nacos 3.1.0 集群整合指南
环境准备
- JDK 17+
- Maven 3.8+
- Nacos Server 3.1.0
- Spring Boot 3.2.0
- Spring Cloud 2023.0.0 (对应Alibaba 2025.0.0)
Nacos 3.1.0 集群部署
服务器规划
建议3台服务器构成集群:
- 192.168.1.101
- 192.168.1.102
- 192.168.1.103
配置修改
编辑每台服务器的conf/cluster.conf,添加所有节点IP:
plaintext
192.168.1.101:8848
192.168.1.102:8848
192.168.1.103:8848
MySQL持久化配置
修改conf/application.properties:
properties
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8
db.user=root
db.password=123456
启动集群
在每台服务器执行:
bash
sh bin/startup.sh -m cluster
Spring Cloud 项目配置
Maven依赖
xml
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2025.0.0</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2025.0.0</version>
</dependency>
bootstrap.yml配置
yaml
spring:
application:
name: demo-service
cloud:
nacos:
discovery:
server-addr: 192.168.1.101:8848,192.168.1.102:8848,192.168.1.103:8848
cluster-name: DEFAULT
config:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
file-extension: yaml
group: DEFAULT_GROUP
namespace: public
启用服务发现
在启动类添加注解:
java
@SpringBootApplication
@EnableDiscoveryClient
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
服务注册与发现示例
服务提供者
java
@RestController
@RequestMapping("/api")
public class ProviderController {
@Value("${server.port}")
private String port;
@GetMapping("/hello")
public String hello() {
return "Hello from port: " + port;
}
}
服务消费者
java
@RestController
@RequestMapping("/consumer")
public class ConsumerController {
@Autowired
private LoadBalancerClient loadBalancerClient;
@GetMapping("/call")
public String callProvider() {
ServiceInstance instance = loadBalancerClient.choose("demo-service");
String url = instance.getUri() + "/api/hello";
return RestTemplate().getForObject(url, String.class);
}
}
配置中心使用示例
在Nacos控制台创建配置
Data ID: demo-service.yaml
Group: DEFAULT_GROUP
配置内容:
yaml
logging:
level:
root: info
custom:
message: "Hello Nacos"
动态获取配置
java
@RestController
@RefreshScope
public class ConfigController {
@Value("${custom.message}")
private String message;
@GetMapping("/config")
public String getConfig() {
return message;
}
}
常见问题解决
连接失败检查
- 确认防火墙放行了8848端口
- 检查集群节点间网络连通性
- 查看Nacos日志
logs/nacos.log
版本兼容问题
确保版本对应关系:
- Spring Cloud 2023.0.0
- Spring Cloud Alibaba 2025.0.0
- Spring Boot 3.2.0
配置不生效
- 检查bootstrap.yml是否在resources目录
- 确认Data ID格式为
${spring.application.name}.${file-extension}