meine Kontaktdaten
Postmesophia@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Spring Cloud Gateway bietet ein API-Gateway, das auf dem Spring-Ökosystem aufbaut, einschließlich: Spring 5, Spring Boot 2 und Project Reactor. Spring Cloud Gateway zielt darauf ab, eine einfache, aber effiziente Art des Routings bereitzustellen und stellt ihnen einige grundlegende Gateway-Funktionen zur Verfügung, wie z. B. Sicherheit, Überwachung/Metriken und Ausfallsicherheit.
Nachfolgend veranschaulichen wir dies anhand zweier Beispiele:
Spring Boot-Version: 2.2.5.RELEASE
Spring Cloud-Version: Hoxton.SR3
Sofern nicht anders angegeben, verwenden alle Spring Cloud-Routinen die obige Version.
Empfehlung: Wenn Sie vor Beginn dieses Kurses die detaillierten Schritte zur Erstellung von Eureka nicht verstehen, wird empfohlen, [Erfahren Sie anhand eines Beispiels, wie Sie das Registrierungszentrum Eureka von Spring Cloud nutzen.Es spielt keine Rolle, ob Sie es noch nicht gesehen haben. Befolgen Sie einfach die folgenden Schritte, um loszulegen:
Wenn Sie kein übergeordnetes Projekt haben (wenn Sie die Registrierungscenter-Instanz abgeschlossen haben, müssen Sie über ein übergeordnetes Projekt verfügen), verwenden Sie bitte einfachen Maven, um ein übergeordnetes Projekt zu erstellen:
Öffnen Sie nach der Erstellung die Datei pom.xml und fügen Sie den folgenden Code hinzu:
- <?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>org.cherry</groupId>
- <artifactId>springcloudproject</artifactId>
- <version>1.0-SNAPSHOT</version>
-
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <java.version>14</java.version>
- <spring-cloud.version>Hoxton.SR3</spring-cloud.version>
- <springboot.version>2.2.5.RELEASE</springboot.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>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-dependencies</artifactId>
- <version>${springboot.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
- </project>
Src-Ordner löschen
Erstellen Sie unter dem übergeordneten Projekt mit Spring Initializr ein neues Gateway-Unterprojekt, Gateway, und wählen Sie die Abhängigkeit vom Gateway aus. Die einfache Zuordnung lautet wie folgt:
Ändern Sie nach dem Erstellen die Datei pom.xml. Die geänderte Datei lautet wie folgt:
- <?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>
- <artifactId>springcloudproject</artifactId>
- <groupId>com.cherry</groupId>
- <version>1.0-SNAPSHOT</version>
- <!-- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>2.2.6.RELEASE</version>
- <relativePath/> <!– lookup parent from repository –>-->
- </parent>
- <groupId>com.cherry</groupId>
- <artifactId>gateway</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <name>gateway</name>
- <description>Demo project for Spring Boot</description>
-
- <!--<properties>
- <java.version>1.8</java.version>
- <spring-cloud.version>Hoxton.SR3</spring-cloud.version>
- </properties>-->
-
- <dependencies>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-gateway</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- <exclusions>
- <exclusion>
- <groupId>org.junit.vintage</groupId>
- <artifactId>junit-vintage-engine</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- </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>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-
- </project>
Ändern Sie die Konfigurationsdatei application.properties mit dem Suffix yml (ändern Sie also den Dateinamen in application.yml), um das Gateway zu konfigurieren.
Hier nutzen wir csdn blog als Dienstleister
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
Ausführen, Springboot-integrierter Tomcat startet, Port 9001
Browser-Eingabeadressehttp://localhost:9001/huanzi833
Wenn Sie möchten, dass das Gateway nicht verfügbar ist, können Sie application.yml die folgenden Einstellungen hinzufügen:
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- enabled: false
-
Browserzugriff, die Ergebnisse sind wie folgt:
Hinweis: Nachdem Sie die Eigenschaftendatei geändert haben, starten Sie die Anwendung bitte selbst neu. Ich werde die Anweisungen nicht jedes Mal wiederholen.
Die Weiterleitung wird nach der durch After festgelegten Zeit wirksam. Beispielsweise werden Anfragen nach dem 1. Januar 2020 an meinen Blog weitergeleitet, Anfragen vor diesem Zeitpunkt können nicht weitergeleitet werden.
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- - After=2020-01-01T00:00:00+08:00[Asia/Shanghai]
- enabled: true
-
Routing vor dem in „Before“ festgelegten Zeitpunkt. Beispiel: Anfragen vor dem 1. Januar 2021 werden an meinen Blog weitergeleitet, Anfragen nach diesem Zeitpunkt können nicht weitergeleitet werden.
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- - After=2020-01-01T00:00:00+08:00[Asia/Shanghai]
- - Before=Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
- enabled: true
-
Die Weiterleitung zwischen den durch „Between“ festgelegten Zeiten tritt zum Beispiel in Kraft: Anfragen zwischen dem 1. Januar 2020 und dem 1. Oktober 2020 werden an meinen Blog weitergeleitet. Anfragen außerhalb dieser Zeit können normalerweise nicht weitergeleitet werden zusammen, um wiederholte Einstellungen zu vermeiden.
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- # - After=2019-01-01T00:00:00+08:00[Asia/Shanghai]
- # - Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
- - Between=2020-01-01T00:00:00+08:00[Asia/Shanghai], 2020-10-01T00:00:00+08:00[Asia/Shanghai]
- enabled: true
-
Für Cookies können Prädikate zwei Parameter erhalten, einer ist der Cookie-Name und der andere ist ein regulärer Ausdruck. Wenn sie übereinstimmen, wird das Routing ausgeführt. Routing wird ausgeführt. Es wird nicht ausgeführt.
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- # - After=2019-01-01T00:00:00+08:00[Asia/Shanghai]
- # - Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
- - Between=2020-01-01T00:00:00+08:00[Asia/Shanghai], 2020-10-01T00:00:00+08:00[Asia/Shanghai]
- - Cookie=uid, cherry #通过cookie进行路由规则的匹配
- enabled: true
-
Mithilfe des Cookie-Routing-Matchings können wir zum Testen cmd eingeben und die folgende Anweisung in cmd eingeben:
Ähnlich wie beim Cookie-Routenabgleich gibt es auch zwei Parameter, einen Parameternamen und einen regulären Ausdruck. Wenn eine Übereinstimmung vorliegt, wird die Route ausgeführt. Wenn keine Übereinstimmung vorliegt, wird die Route nicht ausgeführt.
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- # - After=2019-01-01T00:00:00+08:00[Asia/Shanghai]
- # - Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
- - Between=2020-01-01T00:00:00+08:00[Asia/Shanghai], 2020-10-01T00:00:00+08:00[Asia/Shanghai]
- - Cookie=uid, cherry #通过cookie进行路由规则的匹配
- - Header=X-Request-Id, d+ #Header路由规则
- enabled: true
-
Geben Sie zum Testen cmd ein und geben Sie die folgende Anweisung in cmd ein:
Die folgende Konfiguration entspricht der Hostadresse, z. B. www.csdn.net, www.baidu.com oder blog.csdn.net und anderen Adressen
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- # - After=2019-01-01T00:00:00+08:00[Asia/Shanghai]
- # - Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
- - Between=2020-01-01T00:00:00+08:00[Asia/Shanghai], 2020-10-01T00:00:00+08:00[Asia/Shanghai]
- - Cookie=uid, cherry #通过cookie进行路由规则的匹配
- - Header=X-Request-Id, d+ #Header路由规则
- - Host=**.csdn.net, **.baidu.com #Host路由规则
- enabled: true
-
Geben Sie zum Testen cmd ein und geben Sie die folgende Anweisung in cmd ein:
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- # - After=2019-01-01T00:00:00+08:00[Asia/Shanghai]
- # - Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
- - Between=2020-01-01T00:00:00+08:00[Asia/Shanghai], 2020-10-01T00:00:00+08:00[Asia/Shanghai]
- - Cookie=uid, cherry #通过cookie进行路由规则的匹配
- - Header=X-Request-Id, d+ #Header路由规则
- - Host=**.csdn.net, **.baidu.com #Host路由规则
- - Method=GET, POST #Method路由规则
- enabled: true
-
Geben Sie cmd ein, um den Get-Test durchzuführen. Geben Sie die folgende Anweisung in cmd ein:
Geben Sie cmd ein, um den POST-Test durchzuführen: (Hinweis: Wenn der Pfad im Service-Provider-Controller GetMapping verwendet und hier beim Aufruf -X POST verwendet wird, wird ein 404 angezeigt.)
Das Prädikat unterstützt auch das Routing, indem es eine Anfrage mit einer bestimmten IP-Intervallnummer festlegt, z. B. 192.168.1.1/24 (wobei 192.168.1.1 die IP-Adresse ist, 24 die Subnetzmaske ist und 24 hier bedeutet, dass die Subnetzmaske 255.255.255.0 ist). ). Sie können diese Adresse zu Testzwecken auf die lokale IP-Adresse einstellen.
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- # - After=2019-01-01T00:00:00+08:00[Asia/Shanghai]
- # - Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
- - Between=2020-01-01T00:00:00+08:00[Asia/Shanghai], 2020-10-01T00:00:00+08:00[Asia/Shanghai]
- - Cookie=uid, cherry #通过cookie进行路由规则的匹配
- - Header=X-Request-Id, d+ #Header路由规则
- - Host=**.csdn.net, **.baidu.com #Host路由规则
- - Method=GET, POST #Method路由规则
- - RemoteAddr=192.168.1.1/24
- enabled: true
-
Der Pfadroutenabgleich/Parameterabgleich/Gewichtsabgleich wird in der Integration mit dem Registrierungszentrum unten abgeschlossen.
1. Erstellen Sie zunächst das Servicecenter Eureka. Der Code lautet wie folgt: