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}
相关推荐
鹿衔`17 分钟前
CDH 6.3.2 集群外挂部署 Spark 3.5.7 连接 Paimon 1.1.1 (二)
大数据·分布式·spark
胡耀超42 分钟前
AI的记忆革命:从Titans架构到长时运行智能体,谷歌Google,Anthropic,NeurIPS 2025
人工智能·python·ai·架构·智能体·上下文·titans
重铸码农荣光1 小时前
AI First + Mobile First:用大模型重构下一代应用开发范式
前端·架构·llm
绝顶少年1 小时前
Redis 高可用架构三部曲:主从复制、哨兵模式与集群模式深度解析
数据库·redis·架构
CrazyClaz1 小时前
分布式事务专题3
分布式·分布式事务
weixin_307779132 小时前
Jenkins 多分支流水线自动化引擎:GitHub Branch Source 插件完全指南
运维·架构·自动化·jenkins
小陈phd2 小时前
企业级OLAP业务落地:Agent架构范式与技术选型全解析
架构
没逻辑2 小时前
Gopher 带你学 DDD:一套不烧脑的业务建模指南
架构·领域驱动设计
SadSunset2 小时前
(13)复杂查询
java·笔记·架构·mybatis
curd_boy3 小时前
IM 顶层设计
websocket·架构·信息与通信