当前位置: 首页 > news >正文

Nacos的使用详解

目录

一 Nacos服务发现

1.安装

2.使用

二 Nacos负载均衡

1.服务下线:

2.权重配置(非严格):

3.同集群优先访问

三 Nacos健康检查

1.两种健康检查机制:

2.Nacos的服务实例类型:

3.配置非临时实例:

四 Nacos的环境隔离

1.环境:

2.隔离:

3.实现:

五 Nacos配置中心使用

1.应用场景:

2.使用:

六 Nacos配置中心详解

1.命名空间:

2.DataID:

3.常见问题:

七 服务部署

1.修改配置,进行本地测试

2.打包,上传服务器

3.重启nacos

4.测试

八 Eureka和Nacos的区别

1.功能

2.CAP原则

3.服务发现


一 Nacos服务发现

1.安装

地址:https://github.com/alibaba/nacos/releases/tag/2.2.3

(1)下载,解压缩

(2)单机情况需要修改startup.cmd/startup.sh--MODE="standalone"

(3)默认端口号8848

若端口号被占用

①杀死8848端口号(cmd)

netstat -ano | findstr 8848 taskkill /pid 进程号 /f

②config目录下修改application.properties

server.port=其他端口号

(4)启动startup.cmd/startup.sh,访问IP:端口号/nacos

Linux下启动nacos命令:

bash startup.sh -m standalone

2.使用

(1)引入SpringAlibaba的依赖

<properties> <spring-cloud-alibaba.version>2022.0.0.0-RC2</spring-cloud-alibaba.version> </properties> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring-cloud-alibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency>

(2)引入Nacos相关依赖

<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>

使用过程中需要使用负载均衡,因此把它对应的依赖也加上

<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-loadbalancer</artifactId> </dependency>

(3)配置Nacos配置

spring: application: name: product-service cloud: nacos: discovery: server-addr: 对应Nacos的ip和端口号

(4)修改远程调用代码

①将对应请求的uri改为应用名

②给restTemplate对象加上负载均衡

(5)测试

3.常见问题:

(1)UnkownHostException--通常是没有引入负载均衡依赖导致找不到当前服务

(2)服务注册失败--版本对应问题,SpringAlibaba,SpringCloud,SpringBoot的版本对应问题

二 Nacos负载均衡

1.服务下线

应用场景:当我们发现某个服务存在问题,应该先止损,再排查问题

Nacos支持我们不改动代码直接对服务进行上线下线

2.权重配置(非严格)

(1)应用场景:当机器或服务刚刚上线时,不能确定其是否存在问题,不能对其加大流量,需要控制其流量

(2)启用:如果当前使用的是其他框架的负载均衡策略,此时Nacos的负载均衡策略无法生效,此时要让Nacos的负载均衡策略生效需要引入配置

#开启nacos的负载均衡策略 spring: cloud: loadbalancer: nacos: enabled: true

(3)常见问题:

集群环境下修改权重可能会报错

Nacos会记录上次启动的ip,当ip不一致的,Nacos找不到leader时,此时就会报错

解决方案:

删除Nacos根目录下的data文件文件夹下的protocol文件夹即可(用于记录IP的)

3.同集群优先访问

(1)概念:Nacos把同一机房的实例称为一个集群,因此同集群优先访问也可以认为是同机房优先访问

(2)使用场景:一个应用通常会部署在多个地方的机房中,我们通常更希望当前应用请求的时候能优先访问在同一个机房/地方的应用

(3)实现:

配置集群名称

spring: application: name: product-service cloud: nacos: discovery: server-addr: 对应Nacos的ip和端口号 cluster-name: SH #集群名称: 上海集群 spring.cloud.nacos.discovery.cluster-name=BJ

注意:2,3的实现都需要开启Nacos的负载均衡策略

三 Nacos健康检查

1.两种健康检查机制

客户端主动上报机制:客户端每隔5秒以心跳上报的形式进行告知服务器,服务器15秒未收到心跳包实例会记录状态为不健康,30秒未收到心跳包就手动删除

服务器端反向探测机制:服务器主动探测客户端的健康状况,间隔20秒,如果健康探测失败,实例会被标记为不健康,不会立即被删除

注:Nacos的健康检查机制不能主动设置,而是与Nacos的实例类型强相关

2.Nacos的服务实例类型

临时实例:采用客户端主动上报机制,超过时间未上报就进行删除

非临时实例(永久实例):采用服务器反向探测机制

注:默认都是临时实例,非临时实例需要进行配置

3.配置非临时实例

spring: cloud: nacos: discovery: ephemeral: false # 设置为⾮临时实例

存在问题:可能会设置失败

原因:Nacos记录上次启动改实例的ip和端口号以及实例类型,不允许临时实例转换为非临时实例,也不允许非临时实例转为临时实例

解决方案:仍为删除Nacos根目录下data文件夹的protocol文件夹

具体:

①停止Nacos进程

②删除Nacos根目录下data文件夹的protocol文件夹

③重启Nacos

四 Nacos的环境隔离

1.环境

开发环境

测试环境

预发布环境

发布环境

注:预发布环境和发布环境都是正式环境,通常配置和连接的数据库是一样,区别是预发布环境不对外公开

2.隔离

开发环境只能访问开发环境,测试环境只能访问测试环境,不同环境之间不能互相访问

3.实现

(1)创建环境:命名空间中进行添加

(2)给实例配置对应的环境(使用环境ID)

spring: cloud: nacos: discovery: namespace: 环境ID

五 Nacos配置中心使用

1.应用场景

当一个应用需要更改配置的时候,此时就需要在多台机器上重新部署,此时会麻烦而且容易遗漏

可以利用Nacos对配置进行管理

2.使用

(1)添加配置

Data ID要配置的应用名保持一致

注:此处的环境与

(2)引入依赖

引入Nacos Config依赖

<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <!-- SpringCloud 2020.*之后版本需要引⼊bootstrap--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency>

②配置bootstrap.yml

微服务启动之后,会先读取nacos配置(bootstrap.yml),再加载application.yml,再将二者进行合并

spring: application: name: product-service cloud: nacos: config: server-addr: 注册中心的ip:端口号

注:配置中心和服务发现使用的可能不是同一个中心,因此需要单独进行配置

(3)修改配置文件

修改完配置后要立即生成需要在对应的Controller类上添加@RefreshScope(配置热更新-配置实时生效)

注:服务管理的命名空间不等于配置管理的命名空间

六 Nacos配置中心详解

前提:服务发现(服务管理)的配置都是在application.yml里进行的,配置中心(配置管理)的配置都是在bootstrap.yml里进行的

1.命名空间

(1)作用:指定当前配置从哪个空间读取,默认为public

(2)对应yml配置:

spring: application: name: product-service cloud: nacos: config: server-addr: 注册中心的ip:端口号 namespace: 环境ID

2.DataID

(1)完整格式:

${prefix}-${spring.profiles.active}.${file-extension}

对应关系:

①prefix:默认是spring.application.name的值,也可以通过spring.cloud.nacos.config.prefix进行配置

②spring.profiles.active:为spring.profiles.active的值,当其为空的时候dataId会变成

${prefix}.${file-extension}

具体配置:

spring: profiles: active: dev

③file-extension:通过spring.cloud.nacos.config.file-extension来进行配置,目前只支持yaml和properties两种类型

spring: cloud: nacos: config: server-addr: 127.0.0.1:8848 file-extension:properties

(2)匹配规则:

dataId与bootstrap.yml配置的匹配得越多,就优先匹配和使用哪个

例如:

三个⽂件的优先级为: product-service-dev.properties > product-service.properties > product
service

3.常见问题

(1)读取不到配置--检查配置文件

①检查dataId有没有拼写错误

②配置文件写得是否有错误,格式是否正确

③检查对应的命名空间

④未引入依赖(bootstrap依赖)

对应错误:No spring.config.import property has been defined

原因:2020年后bootstrap被禁用了,但是我们Nacos的配置我们需要先读取bootstrap.yml,再与application.yml合并,因此不引入依赖不能用bootstrap报错

(2)Nacos Service地址错误

七 服务部署

1.修改配置,进行本地测试

注:没法在.yml里直接写@profile.name@

解决:在build依赖里添加

<resources> <resource> <directory>src/main/resources</directory><filtering>true</filtering> <includes> <incLude>**/**</include> </includes> </resource> </resources>

2.打包,上传服务器

nohup java -jar product-service.jar --server.port=9091 >logs/product-service-9091.log &

3.重启nacos

4.测试

八 Eureka和Nacos的区别

1.功能

Nacos除了提供服务发现,还提供了配置管理和DNS服务

2.CAP原则

Eureka使用AP原则

Nacos可以AP与CP进行切换,默认是AP,根据配置查看当前是临时节点,则为AP,反之则为CP,二者可以混合存在

3.服务发现

Eureka基于拉模式,定期从Service拉去服务信息

Nacos基于推送模式,只要服务列表有变化,其就会把变化推送给订阅者(客户端为订阅者)

http://www.jsqmd.com/news/808113/

相关文章:

  • 从零构建分布式身份锚点:原理、架构与Talos/K8s集成实战
  • 【数智情报】2027财年DARPA科技投资趋势深度分析报告(下篇)
  • 畜牧兽医中专毕业能干什么?就业方向详解
  • 终极指南:5分钟免费搞定Windows和Office永久激活的完整方案
  • 从Wi-Fi路由器到5G基站:阵列方向图如何影响你的手机信号?
  • Airflow Helm Chart:Kubernetes 上部署 Apache Airflow 的生产级实践指南
  • Python基础 - 元组的创建 小括号与tuple函数的注意事项
  • 广元苕皮生产厂家测评? - 中媒介
  • 告别Matlab原生编辑器!用VSCode写Matlab代码的保姆级配置指南(Python 3.6 + R2017b)
  • 忘记压缩包密码?终极免费密码恢复工具完整指南
  • STC8G2K64S4单片机串口通信控制幻尔舵机板,从接线到代码的保姆级避坑指南
  • 基于MCP协议与SQLite FTS5的本地芯片文档搜索引擎构建指南
  • 给 Chrome 加启动参数(永久忽略证书错误)
  • 为Claude Code配置Taotoken密钥与Base地址避免封号与Token不足
  • 如何优雅地管理多平台网盘文件:LinkSwift 直链下载助手完全指南
  • 2011-2025年各省市数字经济相关百度指数面板数据
  • 宁波黄金回收指南,2026.5 收的顶多重认证更有保障 - 奢侈品回收测评
  • QDKT4-1简历审查审查助手需求拆解、提示词调优及应用搭建
  • 互联网大厂,为什么死活不肯把研发搬去二三线城市?
  • 【典型电路设计】直流400V转24V电源设计,超宽输入高压非隔离Buck降压芯片XD308H,包含芯片介绍以及参考电路详细解读
  • 酷安UWP桌面版:重新定义Windows平台的社区体验
  • 2026年成都水刀配件厂家深度横评:力好机械与KMT/大地/永达品牌对比及一站式采购指南 - 优质企业观察收录
  • 2026年成都水刀配件一站式采购指南:力好机械与KMT/大地/永达品牌深度横评 - 优质企业观察收录
  • 终极网盘直链下载助手:免费获取八大网盘高速下载地址的完整指南
  • 国内挂壁式超声波流量计优质厂家推荐 源头生产厂家盘点 - 陈工日常
  • Windows右键管理神器(一键精简+常用功能置顶显示)的实战教程
  • 重塑人机关系:人工智能时代的未来设计新路径
  • 2026年常州热缩管源头定制方案深度横评:从新能源线束防护到轨道交通阻燃全景对标 - 优质企业观察收录
  • 并查集实践
  • ubuntu20.04 镜像下载