## 架构预览 在这一章节中,我们需要搭建如下所示的系统架构: ![A01.png](https://s2.ax1x.com/2019/08/31/mxKKHI.png) 上面的架构中,主要包含了以下节点: 1. FEBS-Register:微服务注册中心,用于统一控制各个微服务实例的注册与发现; 2. FEBS-Gateway:微服务网关,统一处理外部请求,是客户端和众多微服务连接的桥梁; 3. FEBS-Auth:微服务认证服务器,用于令牌(Token)生成和令牌校验,是整个权限系统的核心所在; 4. FEBS-Server-System:微服务提供者(资源服务器)A,对外提供系统模块的CRUD服务; 5. FEBS-Server-Test:微服务提供者(资源服务器)B。 本质上FEBS-Server-Test和FEBS-Server-System没有区别,构建FEBS-Server-Test的目的主要有如下三点: 1. 演示一台认证服务器和多台资源服务器之间如何交互; 2. 微服务间如何通过Feign Client来互相访问受保护的资源; 3. 演示如何往FEBS Cloud微服务权限系统中接入自己的微服务模块; 由于模块较多,所以开始之前我们先对各个微服务的端口做出如下约定: 微服务 | 端口号 ---|--- FEBS-Register | 8001 FEBS-Auth | 8101 FEBS-Server-System | 8201 FEBS-Server-Test | 8202 FEBS-Gateway | 8301 下面我们正式开始框架的搭建。 ## Maven父模块搭建 首先我们使用IDEA创建一个名称为FEBS-Cloud的 Maven模块,该模块为整个工程的服务模块,用于聚合各个微服务子系统。 在D盘根目录创建一个名称为febs的文件夹,然后打开IDEA,点击Create New Project新建一个Maven项目,Project SDK选择JDK 1.8: ![1.png](https://s2.ax1x.com/2019/08/05/e2DY0P.png) 点击Next,如下图所示填写GroupId和ArtifactId: ![2.png](https://s2.ax1x.com/2019/08/05/e2DJmt.png) 点击Next,按照下图所示填写相关内容,路径选择D盘根目录下的febs: ![3.png](https://s2.ax1x.com/2019/08/05/e2D36A.png) 点击Finish完成创建。创建好后,项目如下所示: ![4.png](https://s2.ax1x.com/2019/08/05/e2D8OI.png) 因为febs-cloud模块是项目的父模块,仅用于聚合子模块,所以我们可以把src目录下的内容全部删了,只保留pom.xml(febs-cloud.iml为IDEA文件,不能删哦),然后修改pom.xml,引入Spring Boot和Spring Cloud: ```xml <?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cc.mrbird</groupId> <artifactId>febs-cloud</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <name>FEBS-Cloud</name> <description>FEBS-Cloud:Spring Cloud,Spring Security OAuth2 微服务权限管理系统</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <spring-cloud.version>Greenwich.SR1</spring-cloud.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> </project> ``` 上面的pom配置中,我们指定了packaging为pom,表示这是一个纯聚合模块,无需打包为jar或者war;name指定为FEBS-Cloud;引入了Spring Boot 2.1.6.RELEASE和Spring Cloud Greenwich.SR1。 至此,父模块搭建完毕,接下来开始搭建通用模块。 ## 通用模块搭建 通用模块主要用于定义一些各个微服务通用的实体类,工具类或者第三方依赖等。 点击File -> New -> Module...,新建一个Maven模块,Module SDK选择JDK 1.8: ![5.png](https://s2.ax1x.com/2019/08/05/e2DlSH.png) 点击Next: ![6.png](https://s2.ax1x.com/2019/08/05/e2DtTf.png) 父模块选择我们上面创建好的febs-cloud,ArtifactId填febs-common,然后点击Next: ![7.png](https://s2.ax1x.com/2019/08/05/e2DUk8.png) 填写内容如上图所示(注意febs-common和febs-cloud都位于febs目录下,它们在目录结构上是平级的关系),点击Finish完成创建。创建好后,项目结构如下所示: [![8.png](https://s2.ax1x.com/2019/08/05/e2DatS.png)](https://imgchr.com/i/e2DatS) 这时候我们查看febs-cloud的pom文件,会发现它新增了如下内容: ```xml <modules> <module>../febs-common</module> </modules> ``` 因为我们刚刚在创建febs-common模块的时候选择febs-cloud作为父模块。 我们往febs-common模块的pom里添加一些后续要用到的依赖: ```xml <?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>febs-cloud</artifactId> <groupId>cc.mrbird</groupId> <version>1.0-SNAPSHOT</version> <relativePath>../febs-cloud/pom.xml</relativePath> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>febs-common</artifactId> <name>FEBS-Common</name> <description>FEBS-Common通用模块</description> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.51</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-oauth2</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-security</artifactId> </dependency> </dependencies> </project> ``` lombok的使用需要安装相关插件(lombok可以通过注解自动生成get,set等方法,不懂的同学可以自行百度lombok),双击Shift,然后输入plugins: ![9.png](https://s2.ax1x.com/2019/08/05/e2Ddfg.png) 选择第一个,然后按Enter键,输入lombok,安装列表中的第一个,然后重启IDEA即可: ![10.png](https://s2.ax1x.com/2019/08/05/e2D0pQ.png) 至此,通用模块也搭建完毕了,接下来开始搭建微服务注册中心。 > 本节源码:QQ群519057656,群文件 → 教程源码 → 1.1-源码