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}
相关推荐
橘色的喵2 小时前
C语言面向对象范式:Nginx模块化架构的设计分析
c语言·nginx·架构·面向对象
拾忆,想起2 小时前
Dubbo异步调用实战指南:提升微服务并发性能
java·服务器·网络协议·微服务·云原生·架构·dubbo
是Judy咋!4 小时前
RabbitMQ---搭建(自定义数据以及日志目录)
分布式·centos·rabbitmq
keep__go5 小时前
spark 单机安装
大数据·运维·分布式·spark
没有bug.的程序员8 小时前
Spring Cloud Gateway 性能优化与限流设计
java·spring boot·spring·nacos·性能优化·gateway·springcloud
卜锦元11 小时前
音视频媒体服务领域中三种架构方式的定义与区别(Mesh、MCU、SFU)
架构·音视频·媒体
云边云科技53411 小时前
云边云科技SD-WAN解决方案 — 构建安全、高效、智能的云网基石
网络·科技·安全·架构·it·sdwan
q***333711 小时前
数据库高安全—openGauss安全整体架构&安全认证
数据库·安全·架构
roman_日积跬步-终至千里12 小时前
【架构方法论】领域模型:如何通过领域模型,提高系统的可扩展性?
架构