## 架构预览
在这一章节中,我们需要搭建如下所示的系统架构:

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

点击Next:

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

填写内容如上图所示(注意febs-common和febs-cloud都位于febs目录下,它们在目录结构上是平级的关系),点击Finish完成创建。创建好后,项目结构如下所示:
[](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:

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

至此,通用模块也搭建完毕了,接下来开始搭建微服务注册中心。
> 本节源码:QQ群519057656,群文件 → 教程源码 → 1.1-源码
- 使用教程
- 导入教程
- 1. 导入准备
- 2. 导入后端
- 3. 导入前端
- 使用教程
- 系统管理
- 1. 角色管理
- 2. 用户管理
- 3. 菜单管理
- 4. 部门管理
- 5. 客户端管理
- 系统监控
- 1. 系统日志
- 2. 登录日志
- 3. 监控面板
- 代码生成
- 1. 生成配置
- 2. 生成代码
- 其他模块
- 1. 导入导出
- 2. 个人博客
- 3. 数据权限
- 网关管理
- 使用说明
- 1. 网关用户
- 2. 网关日志
- 3. 限流规则
- 4. 限流日志
- 5. 黑名单管理
- 6. 黑名单日志
- 任务调度
- 1. 任务列表
- 2. 调度日志
- 个人中心
- 开发教程
- 1. 项目目录结构
- 2. 如何添加自己的子系统
- 3. 如何控制权限
- 4. 项目打包
- 5. PostMan测试
- 6. 第三方登录使用指南
- 7. 数据权限
- 8. Feign的使用
- 9. 获取当前用户信息
- 10. 全局异常控制
- 11. 开启系统API文档
- 12. starter使用介绍
- 13. 分布式事务演示
- 14. 演示5种获取令牌方式
- 15. 免认证配置
- 更新日志
- 常见问题
- 搭建教程
- 第一章 基础框架搭建
- 1.1 架构预览
- 1.2 搭建微服务注册中心
- 1.3 搭建认证服务器
- 1.4 搭建微服务网关
- 1.5 搭建资源服务器
- 1.6 本章小结
- 第二章 架构完善
- 2.1 参数配置化
- 2.2 异常处理
- 2.3 Feign的使用
- 2.4 微服务防护
- 2.5 跨域处理
- 2.6 本章小结
- 第三章 完善登录流程
- 3.1 表结构设计
- 3.2 完善登录
- 3.3 整合图形验证码
- 3.4 Sentinel验证码限流
- 3.5 本章小结
- 第四章 整合Swagger
- 4.1 完善febs-server-system
- 4.2 接入Swagger
- 4.3 Swagger OAuth2认证
- 4.4 本章小结
- 第五章 整合第三方服务
- 5.1 整合Spring Boot Admin
- 5.2 Sleuth Zipkin链路追踪
- 5.3 logback日志打印
- 5.4 ELK日志收集
- 5.5 本章小结
- 第六章 前端系统介绍
- 6.1 封装Axios
- 6.2 Vue导航守卫
- 6.3 动态路由构建
- 6.4 处理用户登录
- 6.5 处理令牌刷新
- 6.6 自定义Vue权限指令
- 6.7 本章小结
- 第七章 微服务部署
- 7.1 微服务Docker化
- 7.2 使用Docker Compose部署
- 7.3 本章小结
- 第八章 微服务进阶
- 8.1 令牌存储策略
- 8.2 使用Cloud Gateway搭建网关
- 8.3 使用Alibaba Nacos注册中心
- 8.4 使用Alibaba Nacos存储配置
- 8.5 接入Prometheus + Grafana
- 8.6 整合skywalking分布式追踪
- 8.7 升级到Hoxton.RELEASE
- 第九章 K8S集群部署
- 9.1 集群环境准备
- 9.2 安装第三方服务
- 9.3 Kubeadm搭建K8S 1.16.2集群
- 9.4 NFS服务器搭建
- 9.5 搭建Docker镜像仓库Harbor
- 9.6 K8S构建高可用Nacos
- 9.7 K8S构建FEBS Cloud服务集群
- 9.8 部署前端测试
- 9.9 K8S实践总结
- 第十章 分布式事务研究
- 10.1 分布式架构事务挑战
- 10.2 分布式事务解决方案
- 10.3 基于消息中间件RocketMQ方案(一)
- 10.4 基于消息中间件RocketMQ方案(二)
- 10.5 基于TX-LCN方案
- 10.6 基于阿里Seata方案
- 10.7 本章总结