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}
相关推荐
Dawson Zhu10 小时前
《Agentic Design Patterns》第 1 章导读:提示词链(Prompt Chaining)
人工智能·语言模型·架构·aigc·agi
feiyu_gao11 小时前
Mindcraft:从个人实践到可复用模式集
架构·aigc·ai编程
abigalexy11 小时前
Claude Code从零搭建新项目全流程AI实现-宠物生命周期管理App
架构·aigc·ai编程
写后端的胖头鱼12 小时前
【高频面试题】微服务项目排查错误流程(万字详解)
微服务·架构·问题定位·链路·线上排错
小小龙学IT12 小时前
Kubernetes 深度实践:架构、API 与避坑指南
容器·架构·kubernetes
MayBaymax13 小时前
MQ 基础概念与架构
java·中间件·架构·java-rocketmq
嘎嘎风13 小时前
MiniMind 学习笔记之 04 注意力之外:位置、记忆、省显存、省时间、深加工
架构·源码阅读
国科安芯14 小时前
商业立方星平台中高集成度抗辐射MCU的功耗优化与批量化应用可行性探讨
单片机·嵌入式硬件·架构·risc-v·抗辐射·as32x601
ESDWAN16 小时前
企业跨境网络合规建设指南:从线路选择到数据出境的全流程方案
网络·架构
用户53723128824617 小时前
从一句话到水密 STL:给科研工具装 LLM Agent 的安全架构实录
架构