好了万事具备,接下来我们就开始搭建我们SpringCloud项目。本章节我们先来搭建我们SpringCloud项目框架,然后开发两个服务,把他们注册到Nacos注册中心中。上一章节我们已经介绍了Nacos是可以作为注册中心和配置中心的,这一章节我们重点研究Nacos作为注册中心的用法。
一、项目搭建
我们首先搭建一套SpringCloud的项目,其实所谓SpringCloud的项目就是一堆SpringBoot的项目,然后依赖了SpringCloud的相关组件而已。
为了这个项目与时俱进,并且是以学习为主,我们大部分的依赖都使用最新的版本。
环境信息:
- IDEA: 2021.3.3
- JDK: 17
- SpringBoot: 2.6.5
- SpringCloud: 2021.0.1.0
可能会有风险,因为不确定版本太高,依赖能不能兼容高版本我们先来搞一波再说。
首先我们先来搭建一套Multi-Maven项目结构。创建这么几个module:
spring-cloud-learning-parent: 用于管理依赖
spring-cloud-learning-common: 通用依赖管理
spring-cloud-learning-userservice: 用户模块微服务
spring-cloud-learning-orderservice: 订单模块微服务
接下来我们来进行项目的创建,具体的过程就不贴图了。给大家git地址:
一缕82年的清风 / spring-cloud-learning · GitCode
搭建好的项目结构如图所示:
依赖的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><groupId>com.lsqingfeng.springcloud</groupId><artifactId>spring-cloud-learning-parent</artifactId><version>1.0.0</version><packaging>pom</packaging><name>spring-cloud-learning-parent</name><description>项目父pom,用于被继承</description><properties><java.version>17</java.version><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><spring.boot.version>2.6.5</spring.boot.version><spring.cloud.alibaba.version> 2021.0.1.0</spring.cloud.alibaba.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><lombok.version>1.18.20</lombok.version><nacos.version>0.2.1</nacos.version><modelmapper.version>2.3.0</modelmapper.version><springfox-swagger2.version>2.9.2</springfox-swagger2.version><xiaoymin.swagger.version>1.9.6</xiaoymin.swagger.version></properties><repositories><!-- maven仓库采用阿里云--><repository><id>maven-ali</id><url>http://maven.aliyun.com/nexus/content/groups/public//</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy><checksumPolicy>fail</checksumPolicy></snapshots></repository></repositories><dependencyManagement><dependencies><!-- springBoot 版本依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring.boot.version}</version><scope>import</scope><type>pom</type></dependency><!-- springCloud版本依赖--><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><dependency><groupId>com.lsqingfeng.springcloud</groupId><artifactId>spring-cloud-learning-common</artifactId><version>${project.parent.version}</version></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency><!-- 实体拷贝工具 --><dependency><groupId>org.modelmapper</groupId><artifactId>modelmapper</artifactId><version>${modelmapper.version}</version></dependency><!-- swagger --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>${springfox-swagger2.version}</version></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>swagger-bootstrap-ui</artifactId><version>${xiaoymin.swagger.version}</version></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
具体内容大家可以从git上下载查看。 就在master分支上。
二、集成nacos注册中心
我们先来改造orderservice
启动类上添加注解:@EnableDiscoveryClient
@SpringBootApplication
@EnableDiscoveryClient
public class OrderServiceApplication {public static void main(String[] args) {SpringApplication.run(OrderServiceApplication.class, args);}
}
配置文件内容:
server:port: 8081spring:application:name: orderserviceprofiles:active: devcloud:nacos:server-addr: 127.0.0.1:8848
注意要把nacos的配置中心启动。
接下来改造userservice,步骤基本一样,注意端口号和应用名称要不一样。
同时启动两个服务。
同时启动了两个服务。一个端口号是8081,一个端口号是8082. 我们在nacos上观察效果。
在Nacos的服务列表中出现了两个服务。只不过实例都是1个。代表我们注册成功了。
接下来我们在不关闭服务的情况下,把orderservice的端口号改一下,再启动一个实例。相当于会有两个orderservice同时启动,我们来模拟多节点部署的情况。
一运行出现如下提示:
意思是不允许并行跑多个,这个是idea自带的设置我们可以更改一下。
老版本的idea: 勾选如下选项
新版本的idea:
选择允许多实例。
再次运行:(注意先把配置文件里的端口号改一下,否则起不来)
有两个orderService同时运行。
我们查看nacos效果:
实例数变为了2。点击详情可查看到如下:
这样在微服务以后我们调用orderservice的时候,都是使用服务名称来调,因为所有服务都注册到了同一个nacos上,就可以得到该服务的所有实例地址,调用的时候,可以自动进行负载均衡策略。这个等到后边给大家详细演示效果。
好了,今天的内容我们就到这里了。我们主要搭建了springCloud项目,并且体验了Nacos作为注册中心的实战效果,成功将我们的两个微服务注册到了Nacos上。大家好好练一练吧。