Nacos 注册中心学习笔记

发布于:2025-08-18 ⋅ 阅读:(11) ⋅ 点赞:(0)

🎉 Alibaba微服务组件 Nacos 注册中心超详细学习笔记 🎉

📌 写在前面:本文基于官方PDF文档与实战经验,整理了Nacos注册中心的核心知识点、部署流程与实战技巧,力求图文并茂、通俗易懂,适合收藏反复阅读!✨


1️⃣ 什么是 Nacos?🤔

Nacos(Naming and Configuration Service)是阿里巴巴开源的一款更易于构建云原生应用的 动态服务发现配置管理服务管理平台

🔑 核心功能

  • ✅ 服务发现与注册(Service Discovery)
  • ✅ 服务健康监测(Health Check)
  • ✅ 动态配置管理(Dynamic Configuration)
  • ✅ 动态DNS服务(Dynamic DNS)
  • ✅ 服务及其元数据管理(Metadata Management)

2️⃣ Nacos注册中心详解 📊

2.1 注册中心演变与设计思想 🚀

阶段 描述 问题
阶段1:硬编码 服务地址硬编码在代码中 扩容、缩容困难
阶段2:Nginx负载均衡 使用Nginx维护upstream 服务数量多时配置复杂
阶段3:注册中心 引入注册中心(如Nacos) 实现服务自动注册与发现

2.2 Nacos注册中心架构 🏗️

注册服务
拉取服务列表
心跳检测
服务同步
服务提供者
Nacos Server
服务消费者
Nacos Server集群

2.3 核心功能详解 🔍

功能 描述
服务注册 服务启动时,Client向Server注册自身信息(IP、端口、元数据)
服务心跳 Client定时(默认5s)发送心跳,确保服务可用
服务同步 Server集群间通过Raft协议同步服务信息
服务发现 Client从Server拉取服务列表并本地缓存
健康检查 Server定时检测服务健康状态,超过15s无心跳标记为不健康,30s剔除

3️⃣ Nacos Server部署详解 🛠️

3.1 单机模式部署 🖥️

  • 下载地址GitHub Releases
  • 启动命令
    sh startup.sh -m standalone
    
  • 访问地址http://localhost:8848/nacos
  • 默认账号密码nacos/nacos

3.2 集群模式部署 🌐

📍前置条件
  • JDK 1.8+
  • Maven 3.3+
  • MySQL 5.7+
  • Nginx(负载均衡)
📍集群部署步骤
步骤 操作
1 下载并解压Nacos安装包
2 配置conf/application.properties
3 配置conf/cluster.conf
4 初始化MySQL数据库
5 启动多个Nacos节点
6 配置Nginx反向代理
📍示例配置(cluster.conf)
192.168.3.100:8848
192.168.3.101:8848
192.168.3.102:8848
📍Nginx配置示例
upstream nacos-cluster {
    server 192.168.3.100:8848;
    server 192.168.3.101:8848;
    server 192.168.3.102:8848;
}

server {
    listen 8847;
    location /nacos/ {
        proxy_pass http://nacos-cluster/nacos/;
    }
}

4️⃣ Prometheus + Grafana 监控Nacos 📈

4.1 暴露metrics数据 📊

  • 访问地址
    http://localhost:8848/nacos/actuator/prometheus
    

4.2 Prometheus配置 🛠️

scrape_configs:
  - job_name: 'nacos'
    static_configs:
      - targets: ['localhost:8848']

4.3 Grafana仪表盘展示 📊

  • 导入官方仪表盘Grafana Dashboard
  • 关键指标
    • CPU使用率
    • 内存使用率
    • 服务注册数量
    • 服务健康状态

5️⃣ Spring Cloud Alibaba Nacos快速开始 🚀

5.1 版本选型 📝

Spring Cloud Alibaba版本 Spring Cloud版本 Spring Boot版本
2.2.1.RELEASE Hoxton.SR3 2.2.x

5.2 搭建Nacos-client服务 🏗️

① 引入依赖(pom.xml)
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.2.1.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
② 配置文件(application.yml)
server:
  port: 8002
spring:
  application:
    name: service-user
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
③ 启动类添加注解
@SpringBootApplication
@EnableDiscoveryClient
public class UserServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserServiceApplication.class, args);
    }
}
④ RestTemplate调用服务
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
    return new RestTemplate();
}

// 调用示例
String result = restTemplate.getForObject("http://service-order/order/1", String.class);

6️⃣ 总结与建议 🎯

场景 建议
本地开发 使用单机模式,快速启动
生产环境 使用集群模式,确保高可用
监控运维 集成Prometheus + Grafana,实时监控
服务调用 使用Ribbon或LoadBalancer实现负载均衡

📚 参考资料


🙋‍♂️ 互动环节:你在使用Nacos过程中遇到过哪些问题?欢迎在评论区留言交流!


网站公告

今日签到

点亮在社区的每一天
去签到