🎉 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仪表盘展示 📊
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过程中遇到过哪些问题?欢迎在评论区留言交流!