1.环境搭建与版本选择
注:各组件版本很重要,要确认自己Springboot版本
1.Springboot Spring Cloud Spring Cloud Alibaba组件版本关系
https://sca.aliyun.com/docs/2023/overview/version-explain/?spm=5176.29160081.0.0.748065cbd69hSu
2.本人版本选择如下
Springboot版本:3.2.0
Spring Cloud版本 2023.0.0
Spring Cloud Alibaba版本 2023.0.0.0-RC1
3.pom.xml部分内容
<properties>
<spring-boot.version>3.2.0</spring-boot.version>
<spring-cloud.version>2023.0.0</spring-cloud.version>
<spring-cloud-alibaba.version>2023.0.0.0-RC1</spring-cloud-alibaba.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- SpringCloud 微服务 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- SpringCloud Alibaba 微服务 版本管理-->
<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>
</dependencies>
</dependencyManagement>
2.Nacos介绍
Nacos:https://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html
1.集 注册中心+配置中心+服务管理的平台
2.主要特性如下:
1.服务发现与服务健康检测
2.动态配置服务
3.动态DNS服务
4.服务及其元数据管理
3.核心功能:
1.服务注册:Nacos Client(客户端)会通过Rest请求方式向Nacos Server(服务端)注册自己的服务,并提供自身的元数据,比如ip,port。Nacos Server接收到注册请求后会把这些元数据存储在一张注册表中
2.服务心跳:在服务注册后,Nacos Client会维护一个定时心跳来持续通知Nacos Server,说明服务处于可用状态,防止被剔除,默认5S中发送一次心跳,超过5S没有接收到,Nacos Server会将服务状态改为不可用。
3.服务同步:搭建Nacos集群后,Nacos Server集群之间会相互同步服务实例信息,保证服务一致性。
4.服务发现:Nacos Client向Nacos Server定时发送Rest请求获取注册的服务列表,并缓存在Nacos Client本地。
5.服务健康检查:Nacos Server会开启一个定时任务用来检查已注册服务实例的健康状况,对于超过15S没有收到Nacos Client心跳的实例会将其状态改为false(不可用。服务发现时也不会被发现),如果一个实例超过30S没有收到心跳,则Nacos Server会直接删除该实例。
3.Nacos Server部署
本人下载的是2.3.0.根据Spring Cloud Alibaba版本选择
1.下载地址:https://github.com/alibaba/nacos/releases
2.下载windows压缩包并解压
3.进入conf目录修改application.properties。配置nacos数据源做持久化(在此之前需创建一个mysql数据库,并执行mysql-schema.sql初始化数据)(不修改默认运行在内存中)。
4.运行Nacos Server,进入bin目录打开shell窗口,输入.\startup.cmd -m standalone(单机模式运行)
5.登录Nacos平台,账密 nacos/nacos
4.搭建Nacos Client(Springboot项目整合Nacos)
1.子项目pom文件引入Nacos依赖,这里不需要标明版本号,因为父pom文件已经加入了SpringCloud Alibaba 微服务 版本管理依赖
<!-- SpringCloud Alibaba Nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- SpringCloud Alibaba Nacos Config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.在Nacos平台新建项目配置
3.项目application.yml添加Nacos配置信息如下:
# 开发环境配置
server:
# 服务器的HTTP端口,默认为8080
port: 9002
##注册到nacos的服务名
spring:
application:
name: @artifactId@
profiles:
active: ${profiles.active}
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
config:
import:
- optional:nacos:initial-stage-common.yml
- optional:nacos:initial-stage-${profiles.active}.yml
4.启动项目
控制台打印以下日志,说明Nacos Client成功注册到Nacos Server
2024-04-26 11:13:45 [main] INFO c.initial.system.SystemApplication
- The following 1 profile is active: "local"
2024-04-26 11:13:45 [main] INFO c.a.c.n.c.NacosConfigDataLoader
- [Nacos Config] Load config[dataId=initial-stage-local.yml, group=DEFAULT_GROUP] success
2024-04-26 11:13:45 [main] INFO c.a.c.n.c.NacosConfigDataLoader
- [Nacos Config] Load config[dataId=initial-stage-common.yml, group=DEFAULT_GROUP] success
- nacos.cache.data.init.snapshot = true
2024-04-26 11:13:54 [main] INFO c.a.n.c.config.impl.ClientWorker
- [fixed-127.0.0.1_8848] [subscribe] initial-stage-common.yml+DEFAULT_GROUP
2024-04-26 11:13:54 [main] INFO c.a.n.client.config.impl.CacheData
- [fixed-127.0.0.1_8848] [add-listener] ok, tenant=, dataId=initial-stage-common.yml, group=DEFAULT_GROUP, cnt=1
2024-04-26 11:13:54 [main] INFO c.a.c.n.r.NacosContextRefresher
- [Nacos Config] Listening config: dataId=initial-stage-common.yml, group=DEFAULT_GROUP
2024-04-26 11:13:54 [main] INFO c.a.n.c.config.impl.ClientWorker
- [fixed-127.0.0.1_8848] [subscribe] initial-stage-local.yml+DEFAULT_GROUP
2024-04-26 11:13:54 [main] INFO c.a.n.client.config.impl.CacheData
- [fixed-127.0.0.1_8848] [add-listener] ok, tenant=, dataId=initial-stage-local.yml, group=DEFAULT_GROUP, cnt=1
2024-04-26 11:13:54 [main] INFO c.a.c.n.r.NacosContextRefresher
- [Nacos Config] Listening config: dataId=initial-stage-local.yml, group=DEFAULT_GROUP
5.在Nacos平台查看注册的服务信息