springcloud

一、Nacos 介绍

Nacos ​ = Na ming + Co nfiguration + Service

阿里巴巴开源的注册中心 和配置中心组件

🎯 核心功能

  • 服务发现与注册​ (Naming Service)

  • 动态配置管理​ (Configuration Service)

  • 服务健康监测

  • 动态DNS服务

📦 依赖坐标

复制代码
<!-- 服务注册与发现 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

<!-- 配置中心 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

二、安装与启动

1. 安装步骤

复制代码
# 1. 上传并解压
cd /usr/upload
tar -zxvf nacos-server-1.4.1.tar.gz -C /usr/local

# 2. 启动(单机模式)
cd /usr/local/nacos/bin
./startup.sh -m standalone

# 3. 关闭
./shutdown.sh

2. 访问测试

  • 地址:http://192.168.61.132:8848/nacos

  • 账号:nacos/nacos


三、Nacos 作为注册中心

🔧 服务提供者 (Provider)

application.yml

复制代码
spring:
  application:
    name: nacos-provider
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.61.132:8848

启动类

复制代码
@SpringBootApplication
@EnableDiscoveryClient  // 开启服务发现
public class ProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class, args);
    }
}

🔧 服务消费者 (Consumer)

Controller示例

复制代码
@RestController
public class ConsumerController {
    
    @Autowired
    private DiscoveryClient discoveryClient;
    @Autowired
    private RestTemplate restTemplate;
    
    @RequestMapping("/getUserById/{id}")
    public User getUserById(@PathVariable Integer id) {
        // 1. 获取服务实例
        List<ServiceInstance> instances = 
            discoveryClient.getInstances("nacos-provider");
        ServiceInstance instance = instances.get(0);
        
        // 2. 拼接URL
        String url = String.format("http://%s:%s/provider/getUserById/%s",
            instance.getHost(),
            instance.getPort(),
            id);
        
        // 3. 调用服务
        return restTemplate.getForObject(url, User.class);
    }
}

四、Nacos 作为配置中心

1. 基础配置

bootstrap.yml​ (优先级高于application.yml)

复制代码
spring:
  cloud:
    nacos:
      config:
        server-addr: 192.168.61.132:8848
        prefix: nacos-config      # 配置前缀
        file-extension: yaml      # 配置文件后缀
  application:
    name: nacos-config-service   # 服务名称

2. 配置管理规则

复制代码
Data Id 命名规则:
${prefix}-${spring.profiles.active}.${file-extension}
或
${prefix}.${file-extension}(无profile时)

示例:nacos-config-dev.yaml

3. 动态刷新

复制代码
@RestController
@RefreshScope  // 支持配置动态刷新
public class ConfigController {
    
    @Value("${config.info}")
    private String configInfo;
    
    @GetMapping("/config")
    public String getConfig() {
        return configInfo;
    }
}

🎯 核心概念补充

1. 命名空间 (Namespace)

  • 用于多环境/多租户隔离

  • 默认:public

2. 配置分组 (Group)

  • 默认:DEFAULT_GROUP

  • 可对不同服务/不同模块进行分组

3. 配置优先级

复制代码
bootstrap.yml > 远程配置 > application.yml

4. 配置示例(Nacos控制台)

复制代码
# Data Id: nacos-config.yaml
server:
  port: 8081

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: 123456

custom:
  config: hello-nacos

💡 最佳实践建议

  1. 多环境配置

    复制代码
    # 开发环境
    spring:
      profiles: dev
    
    # 生产环境  
    spring:
      profiles: prod
  2. 共享配置

    • 使用shared-configs或extension-configs共享通用配置
  3. 服务治理

    • 结合Ribbon/OpenFeign实现负载均衡

    • 设置服务权重、元数据等

  4. 健康检查

    • 支持TCP/HTTP/MySQL健康检查

    • 自动剔除不健康实例

相关推荐
~光~~1 小时前
【嵌入式linux学习】Cache 策略:Write-Through / Write-Back + Allocation
linux·学习·spring
m0_587383002 小时前
24 小时自助健身房系统软件开发实战指南与案例解析
java·spring boot·spring·系统架构·需求分析
Thneonl2 小时前
全集群钟差 300 毫秒会发生什么:证书悄悄过期,日志倒流
运维·后端
金銀銅鐵2 小时前
[Java] 借助GUI展示class文件的版本号
后端·python·ai编程
马剑威(威哥爱编程)2 小时前
【AI全栈后端12-12】Spring Boot 3.x 到 4.x 迁移实操:Jakarta 11、Jackson 3 与 AI 2.0
java·开发语言·spring boot·后端
136096757233 小时前
一台 4 核 8G 已经跑了 6 个站点,我是怎么把第 7 个塞进去的
后端
对象存储与RustFS3 小时前
JuiceFS + 对象存储:把 S3 变成 POSIX 文件系统实测
后端·rust·开源
知守观3 小时前
feign-core 就在依赖树里,运行时却找不到类:一次 provided scope 引发的启动失败排查
java·spring cloud·maven
她的男孩3 小时前
企业接口照样拦得住:独立 Flyway、@RequiresFeature 与离线许可证
java·spring boot·后端