写这篇文章的主要目的是记录自己学习全栈开发和开发过程中的一些记录,至于为什么学习全栈,最直接的目的就是方便自己接点私活【手动滑稽】,万事不求人吗。顺便也学习些新技术,记录下各种踩坑的地方。
一、项目架构
1、使用eureka做为微服务认证注册服务器,使用集群保证认证注册服务器高可用
2、使用gateway做为网关路由,gateway内部集成负载均衡,无需过多考虑服务负载问题
3、使用Oauth2做为权限认证和验证中心,同时扩展自定义认证方式和类session形式自动延长token有效期,满足复杂的认证模式
4、log服务为日志系统,监控rabbitmq消息,将日志信息存入数据库。业务系统使用自定义注解,自动获取访问方法和参数等重要数据,通过rabbitmq发送。
5、sys提供系统管理相关数据接口,主要为用户、角色、权限等信息,为其他业务提供数据支撑
6、util为公共工具类,其他服务引入该服务,同时提供公共model,保证任务之间数据格式的统一性
二、搭建父工程
为保证各微服务之间版本统一和方便打包,使用父工程将共用jar包和版本号进行统一管理,maven配置如下
<?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.land</groupId>
<artifactId>longmao</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<name>longmao</name>
<description>主maven配置,主要为方便打包和版本控制</description>
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.1.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<modules>
<module>eureka</module>
<module>oauth</module>
<module>sys</module>
<module>log</module>
<module>util</module>
<module>gateway</module>
</modules>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
</properties>
<dependencies>
</dependencies>
<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>
三、搭建eureka服务
首先在pom文件中引入eureka服务端jar包
<dependency>