SpringCloudAlibaba - 整合 Gateway 實現對微服務的反向代理
阿新 • • 發佈:2021-09-29
目錄
- End -
﹀
﹀
﹀
白嫖有風險
點贊加收藏
以上為本篇文章的主要內容,希望大家多提意見,如果喜歡記得點個推薦哦
作者:Maggieq8324
出處:https://www.cnblogs.com/maggieq8324/
本文版權歸作者和部落格園共有,歡迎轉載,轉載時保留原作者和文章地址即可。
前言
Spring Cloud Gateway
是SpringCloud
生態的第二代閘道器(第一代是Zuul
),基於Netty
、Reactor
以及WebFlux
構建
環境
Spring Cloud Hoxton.SR9 + Spring Cloud Alibaba 2.2.6.RELEASE
為什麼要使用閘道器
- 簡化登入認證,閘道器統一認證再轉發到其它微服務
- 閘道器方式對外暴露的永遠是一個域名,客戶端配置簡單
Gateway的優點
- 效能強勁,是第一代閘道器Zuul 1.x的1.6倍
- 內建了很多實用功能,如轉發、監控、限流等
- 易擴充套件
Gateway 核心概念
名稱 | 解釋 | 作用 |
---|---|---|
Route | 路由 | 一個轉發規則,包含ID、目標URL、Predicate集合一級Filter集合 |
Predicate | 謂詞,也稱斷言 | 控制請求是否走轉發規則的條件 |
Filter | 過濾器 | 修改請求以及響應,可以為路由新增業務邏輯 |
Gateway 整合例項
閘道器 core-gateway
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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.2.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.coisini</groupId> <artifactId>core-gateway</artifactId> <version>0.0.1-SNAPSHOT</version> <name>core-gateway</name> <description>Gateway project for Spring Boot</description> <properties> <java.version>1.8</java.version> <spring-cloud.version>Hoxton.SR9</spring-cloud.version> <spring-cloud-alibaba.version>2.2.6.RELEASE</spring-cloud-alibaba.version> </properties> <dependencies> <!-- gateway --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <!-- nacos client --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- actuator --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <!-- 整合spring cloud --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- 整合spring cloud alibaba --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring-cloud-alibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
application.yml
spring: application: name: core-gateway cloud: nacos: discovery: server-addr: localhost:8848 gateway: discovery: locator: # 讓gateway通過服務發現元件找到其它的服務 enabled: true server: port: 8040 # Actuator management: endpoints: web: exposure: include: "*" endpoint: health: show-details: always
使用者中心 user-center
TestController.java
@RestController
@Slf4j
public class TestController {
@GetMapping("/test/{name}")
public String test(@PathVariable String name) {
log.info("請求...");
return "hello " + name;
}
}
測試
- 啟動閘道器,訪問
Nacos
控制檯
- 測試介面訪問
Gateway的轉發規律:訪問${GATEWAY_URL}/{微服務X}/xx 會轉發到微服務X 的 /xx 路徑