寫這篇文章的主要目的是記錄自己學習全堆疊開發和開發程序中的一些記錄,至于為什么學習全堆疊,最直接的目的就是方便自己接點私活【手動滑稽】,萬事不求人嗎,順便也學習些新技術,記錄下各種踩坑的地方,
一、專案架構

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>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
在啟動類添加@EnableEurekaServer注解
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
配置
server:
port: 8761
spring:
application:
name: eureka
eureka:
instance:
prefer-ip-address: true
hostname: 127.0.0.1
client:
# 配置高可用時,需要將下面兩個配置改為true,單機時最好設定為false
register-with-eureka: false
fetch-registry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
可為eureka服務配置賬號密碼,需要引入security的jar包,并配置賬號和密碼,本平臺因采用網路隔離的方式進行部署,只有gateway服務面向互聯網開放,所以暫時不需要
四、搭建路由服務
1、引入gateway和eureka客戶端jar包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2、組態檔如下
server:
port: 8080
spring:
application:
name: gateway
cloud:
gateway:
discovery:
locator:
enabled: true
lower-case-service-id: true
eureka:
client:
service-url:
dafaultZone: http://localhost:8761/eureka
registry-fetch-interval-seconds: 5
instance:
health-check-url-path: /actuator/health
lease-renewal-interval-in-seconds: 10
這里修改了服務重繪時間和心跳時間,主要是為了處理業務服務器重啟導致路由長時間不能決議到地址的問題
3、跨域處理
新建CorsConfig組態檔,代碼如下
@Configuration
public class CorsConfig {
@Bean
public CorsWebFilter corsFilter() {
CorsConfiguration config = new CorsConfiguration();
config.addAllowedMethod("*");
config.addAllowedOrigin("*");
config.addAllowedHeader("*");
config.setAllowCredentials(true);
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
source.registerCorsConfiguration("/**", config);
return new CorsWebFilter(source);
}
}
這里的配置比較簡單粗暴,可以根據實際情況進行調整
4、在啟動類上添加eureka客戶端注解
@SpringBootApplication
@EnableEurekaClient
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
}
五、總結
eureka和gateway的搭建和配置比較簡單,相關的文章網上一抓一大把,坑已經被踩的和填的差不多了,這里就不在詳細說明了
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/78745.html
標籤:其他
