Nacos 是阿里巴巴开源项目,用于构建微服务应用的服务发现、配置管理和服务管理。
在微服务项目中不同模块之间服务调用时,实现服务注册与发现。
Nacos 使用:
Nacos 是java开发的,依赖 Java 环境来运行
Nacos的下载
https://github.com/alibaba/nacos/releases/download/1.4.3/nacos-server-1.4.3.zip
mac系统安装Nacos推荐
https://blog.csdn.net/gongzi_9/article/details/123359171
将压缩包解压(注意不要有中文路径或空格)
打开解压得到的文件夹后打开bin目录会有如下内容
cmd结尾的文件是windows版本的
sh结尾的文件是linux和mac版本的
startup是启动文件,shutdown是停止文件
dos窗口运行
D:\tools\nacos\bin>startup.cmd -m standalone
startup.cmd:windows启动nacos的命令文件
-m 表示要设置启动参数
standalone:单机模式启动
运行成功默认占用8848端口,
打开浏览器输入地址
登录系统
用户名:nacos
密码:nacos
将项目注册到Nacos
首先我先创建business模块
business模块pom文件中添加依赖
<!-- 支持项目注册到Nacos注册中心的依赖 discovery发现(服务的发现) --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
我们在创建好的application-dev.yml中编写对nacos注册的配置信息
spring: application: # 为当前项目起名,这个名字会被Nacos记录并使用 name: nacos-business cloud: nacos: discovery: # 配置Nacos所在的位置,用于注册时提交信息 server-addr: localhost:8848
启动nacos
启动business模块,如果启动正常
在Nacos的服务管理->服务列表中,能看到nacos-business的名称
Nacos心跳机制
心跳:周期性表示自己健康的机制
Nacos内部注册的服务都会有一个心跳机制
心跳机制的目的,是每个服务和Nacos保持沟通和交换信息的机制
默认情况下,服务启动后每隔5秒会向Nacos发送一个"心跳包",这个心跳包中包含了当前服务的基本信息
Nacos接收到这个心跳包,首先检查当前服务在不在注册列表中,如果不在按新服务的业务进行注册,如果在,表示当前这个服务是健康状态
如果一个服务连续3次心跳(默认15秒)没有和Nacos进行信息的交互,就会将当前服务标记为不健康的状态
如果一个服务连续6次心跳(默认30秒)没有和Nacos进行信息的交互,Nacos会将这个服务从注册列表中剔除
这些时间都是可以通过配置修改的
实例类型分类
实际上Nacos的服务类型还有分类
- 临时实例(默认)
- 持久化实例(永久实例)
默认每个服务都是临时实例
如果想标记一个服务为永久实例
cloud: nacos: discovery: # ephemeral设置当前项目启动时注册到nacos的类型 true(默认):临时实例 false:永久实例 ephemeral: false
持久化实例启动时向nacos注册,nacos会对这个实例进行持久化处理
心跳包的规则和临时实例一致,只是不会将该服务从列表中剔除
一般情况下,我们创建的服务都是临时实例
只有项目的主干业务才会设置为永久实例