Spring Cloud Alibaba 2025.0.0 与 Nacos 3.1.0 集群整合

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}
相关推荐
mCell5 小时前
从 VS Code 学系统架构:回到当时,理解它为什么这样演进
架构·源码阅读·visual studio code
BD_Marathon8 小时前
spark.sql报错
大数据·分布式·spark
国科安芯9 小时前
航天电子模拟前端三大支柱:精密运放、高速运放与电压监控的协同设计方法——ASL8522S/ASL622S/ASL706S技术解析
前端·单片机·嵌入式硬件·fpga开发·架构·安全性测试
listening77710 小时前
HarmonyOS 6.1 全场景开发终篇:从单设备到万物互联的实战复盘与架构思考
华为·架构·harmonyos
heimeiyingwang12 小时前
【架构实战】缓存一致性:Cache Aside与双写问题的破解
spring·缓存·架构
雪碧聊技术13 小时前
Spring Boot项目如何彻底禁用Nacos(服务发现+配置中心),本地启动不再依赖Nacos
spring boot·nacos·服务发现
feiyu_gao14 小时前
别再让 AI 从零开始了
人工智能·架构·aigc
通问AI14 小时前
GPT-5.6 三模型架构深度解析:Sol/Terra/Luna 技术对比与工程落地指南
gpt·架构
QN1幻化引擎14 小时前
我写了一个「有八层意识结构」的 Python 认知引擎,它没有用任何 LLM
人工智能·算法·架构
长不胖的路人甲17 小时前
RabbitMQ 死信队列 DLQ
分布式·rabbitmq