1.1 架构预览
最后更新于:2022-04-02 06:56:32
## 架构预览
在这一章节中,我们需要搭建如下所示的系统架构:

上面的架构中,主要包含了以下节点:
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:

点击Next,如下图所示填写GroupId和ArtifactId:

点击Next,按照下图所示填写相关内容,路径选择D盘根目录下的febs:

点击Finish完成创建。创建好后,项目如下所示:

因为febs-cloud模块是项目的父模块,仅用于聚合子模块,所以我们可以把src目录下的内容全部删了,保留pom.xml和febs-cloud.iml,然后修改pom.xml,引入Spring Boot和Spring Cloud:
```xml
4.0.0
cc.mrbird
febs-cloud
1.0-SNAPSHOT
pom
FEBS-Cloud
FEBS-Cloud:Spring Cloud,Spring Security OAuth2 微服务权限管理系统
org.springframework.boot
spring-boot-starter-parent
2.1.6.RELEASE
Greenwich.SR1
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
```
上面的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:

点击Next:

父模块选择我们上面创建好的febs-cloud,ArtifactId填febs-common,然后点击Next:

填写内容如上图所示(注意febs-common和febs-cloud都位于febs目录下,它们在目录结构上是平级的关系),点击Finish完成创建。创建好后,项目结构如下所示:
[](https://imgchr.com/i/e2DatS)
这时候我们查看febs-cloud的pom文件,会发现它新增了如下内容:
```xml
../febs-common
```
因为我们刚刚在创建febs-common模块的时候选择febs-cloud作为父模块。
我们往febs-common模块的pom里添加一些后续要用到的依赖:
```xml
febs-cloud
cc.mrbird
1.0-SNAPSHOT
../febs-cloud/pom.xml
4.0.0
febs-common
FEBS-Common
FEBS-Common通用模块
org.projectlombok
lombok
com.alibaba
fastjson
1.2.51
org.apache.commons
commons-lang3
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter-oauth2
org.springframework.cloud
spring-cloud-starter-security
```
lombok的使用需要安装相关插件(lombok可以通过注解自动生成get,set等方法,不懂的同学可以自行百度lombok),双击Shift,然后输入plugins:

选择第一个,然后按Enter键,输入lombok,安装列表中的第一个,然后重启IDEA即可:

至此,通用模块也搭建完毕了,接下来开始搭建微服务注册中心。
> 本节源码:QQ群519057656,群文件 → 教程源码 → 1.1-源码
';