一、安装Nacos
安装时也有坑,要注意,注意安装的nacos版本,1.X或者2.X,我最开始安装的1.X,结果运行项目失败,spring-cloud-starter-alibaba-nacos的依赖版本和安装的nacos客户端版本不一致导致,结果就安装了2.X版本。我使用的spring-cloud-starter-alibaba-nacos依赖版本是2.2.7。
安装地址:Release 2.0.3 (July 28, 2021) · alibaba/nacos · GitHub
官网地址:什么是 Nacos
二、运行Nacos
下载之后进入bin目录,如下:
进入cmd,
执行:startup.cmd -m standalone(针对Windows系统,单机模式启动,直接执行startup.cmd默认是集群模式,运行项目会报错)
注意:若命令运行错了,要先去任务管理器终止那个进程,再执行startup.cmd -m standalone命令,否则会报错,运行不起来。
访问 nacos管理平台地址:
账号密码都是nacos,进入首页
配置管理会在下一章讲到(让项目读取nacos上面的配置)
服务管理可以看到注册到注册中心的所有服务以及实例数等信息
权限控制可以设置负载均衡等
命名空间可以设置各种运行环境的配置,例如(dev,test,prod等,各个命名空间内存的配置和服务互不干预,这样就可以存在服务同名的情况)
三、构建测试项目
nacos客户端运行成功后就需要建立服务去测试他的注册中心作用了(将服务注册到nacos里),先展示一下目录结构:
1、先新增名为nacosdemo的一个springboot父项目,删除src等多余目录,只留一个pom文件即可,如上图。
pom文件内容如下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.4</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>nacosdemo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>nacosdemo</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--spring cloud alibaba 2.1.0.RELEASE--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.1.0.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
加入alibaba的依赖
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.1.0.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency>
2、新增服务端,名为demo-provider的springboot项目
pom文件如下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>demo-provider</artifactId> <version>0.0.1-SNAPSHOT</version> <name>demo-provider</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.2.7.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.2.7.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project>
***此处特别注意一个大坑:springboot和springcloudAlibaba的依赖的版本对应:
若导入版本不对应的依赖运行会报错。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> web依赖提供SpringMvc的方法 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.2.7.RELEASE</version> </dependency> discovery依赖是用来注册到nacos客户端的 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.2.7.RELEASE</version> </dependency>
config依赖是用来完成配置中心功能,(读取nacos上的配置的功能,下一章讲解)
编写配置文件:
指定端口号,指定nacos的地址,定义服务名
修改启动类
加上EnableDiscoveryClient注解。
3、新增消费端,名为demo-consumer1的springboot项目
pom文件同服务端一致。
也是在启动类加上相同的注解
配置文件:
就一个简单配置,指定地址,注册到nacos。
四、演示
运行服务端和消费端服务。
注意:若一个服务运行多个配置的实例,修改如下配置:
勾选上即可。
然后运行一个启动类之后,修改配置文件的端口号再次运行即可。如下:
进入nacos管理界面查看:
成功注册到nacos。