在讲这个之前我们需要了解微服务的优点:
传统的单体架构是以整个系统为单位进行部署的, 而微服务则是以每个独立组件(比如用户服务、商品服务)为单位进行部署的。
用一张经典的图来表现,就是下面这个样子:
上图想表达的意思就是现实中每个服务的吞吐量是不一样的,常用的服务需要部署更多的服务器,不常用的服务则不需要那么多服务器,而这种灵活的部署只有微服务架构才能实现。(Docker容器的诞生,为微服务架构提供了有效的容器)
步入正题:从上图来看,我们需要将每个服务给细分开,所有首先这里肯定需要一个父项目,然后删掉父项目的src,在父项目里面建多个子项目。
第一步:新建一个maven工程,将其作为父项目,命名为springcloud
注意事项:
1. 新建好的pom.xml中首先要更改项目打包方式为pom
<!--打包方式-->
<packaging>pom</packaging>
pom项目里面不执行任何代码,只是为了聚合工程或者传递依赖用的。
pom 父类型都为pom类型 | |
jar(默认) 内部调用或者是作服务使用 | |
war 需要部署的项目 |
2. pom.xml里面导入<dependencyManagement>
<dependencyManagement>标签的作用是提供管理依赖版本号的方式,在它里面声明所依赖的jar包的版本号等信息。这样,它的所有子项目再次引入该依赖的时候不需要显式的列出版本号,方便后续版本升级只需要更改父项目版本,而不需要每个子项目都去更改一遍。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<junit.version>4.12</junit.version>
<lombok.version>1.18.22</lombok.version>
<log4j.version>1.2.17</log4j.version>
</properties>
<dependencyManagement>
<!--注意:Springboot和Springcloud是有版本对应关系-->
<dependencies>
<!--springcloud依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR12</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--springboot依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.3.7.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--连接数据库-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
<!--数据源-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.8</version>
</dependency>
<!--mybatis启动器-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<!--日志测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
&l