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}
相关推荐
2501_933329553 分钟前
企业舆情处置实战:Infoseek数字公关AI中台技术架构与功能解析
大数据·人工智能·架构·数据库开发
Kel28 分钟前
LangChain.js 架构设计深度剖析
人工智能·设计模式·架构
俺爱吃萝卜31 分钟前
Spring Boot 3 + JDK 17:新一代微服务架构最佳实践
java·spring boot·架构
光影少年1 小时前
Monorepo架构是什么,如何学习Monorepo架构?
前端·学习·架构·前端框架
张忠琳1 小时前
【openclaw】OpenClaw Flows 模块超深度架构分析
ai·架构·vllm
gyx_这个杀手不太冷静1 小时前
大人工智能时代下前端界面全新开发模式的思考(六)
前端·架构·ai编程
2603_954708312 小时前
交直流混合微电网架构:拓扑优化与功率交互设计
人工智能·分布式·物联网·架构·系统架构·能源
风曦Kisaki2 小时前
#企业级网络架构Day01:网络概述,网络参考模型,交换机命令行
网络·架构·智能路由器
147API2 小时前
多模型 fallback 怎么设计?一个可落地的简化架构
人工智能·架构·大模型api
ToddyBear2 小时前
深入Anthropic Claude AI的记忆模块的设计思想和架构
人工智能·架构