🎉 Alibaba微服务组件 Nacos 注册中心超详细学习笔记 🎉
📌 写在前面 :本文基于官方PDF文档与实战经验,整理了Nacos注册中心的核心知识点、部署流程与实战技巧,力求图文并茂、通俗易懂,适合收藏反复阅读!✨
1️⃣ 什么是 Nacos?🤔
Nacos(Na ming and Co nfiguration S ervice)是阿里巴巴开源的一款更易于构建云原生应用的 动态服务发现 、配置管理 与 服务管理平台 。
🔑 核心功能 :
✅ 服务发现与注册(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 单机模式部署 🖥️
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数据 📊
4.2 Prometheus配置 🛠️
scrape_configs : - job_name : 'nacos' static_configs : - targets : [ 'localhost:8848' ]
4.3 Grafana仪表盘展示 📊
导入官方仪表盘 :Grafana Dashboard关键指标 :
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- usercloud : 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官方文档 Spring Cloud Alibaba官方文档
🙋♂️ 互动环节 :你在使用Nacos过程中遇到过哪些问题?欢迎在评论区留言交流!