Az új tavaszi felhő átjáró felfedezése

1. Áttekintés

Ebben a cikkben megvizsgáljuk a Spring Cloud Gateway projekt fő jellemzőit, egy új API-t, amely az 5. tavaszon, a Spring Boot 2 és a Project Reactoron alapul.

Az eszköz a dobozon kívüli útválasztási mechanizmusokat kínál, amelyeket gyakran használnak a mikroszolgáltatások alkalmazásaiban, hogy több szolgáltatást egyetlen homlokzat mögé rejtsenek.

A Gateway minta magyarázatát a Spring Cloud Gateway projekt nélkül, tekintse meg előző cikkünket.

2. Routing Handler

Az útválasztási kérelmekre összpontosítva a Spring Cloud Gateway továbbítja a kéréseket egy Gateway Handler Mapping számára - amely meghatározza, hogy mit kell tenni egy adott útvonalnak megfelelő kérelmekkel.

Kezdjük egy gyors példával arra, hogyan oldhatja meg az átjárókezelő az útvonalkonfigurációkat a használatával RouteLocator:

@Bean public RouteLocator customRouteLocator (RouteLocatorBuilder builder) {return builder.routes () .route ("r1", r -> r.host ("**. Baeldung.com") .and () .path ("/ baeldung" ) .uri ("// baeldung.com")) .route (r -> r.host ("**. baeldung.com") .and () .path ("/ myOtherRouting") .szűrők (f -> f.prefixPath ("/ myPrefix")) .uri ("// othersite.com") .id ("myOtherID")) .build (); }

Figyelje meg, hogyan használtuk ki ennek az API-nak a fő építőelemeit:

  • Útvonal - az átjáró elsődleges API-ja. Meghatározza egy adott azonosító (ID), egy cél (URI), valamint az állítmányok és szűrők halmaza
  • Predikátum - egy Java 8-as Predikátum - amelyet a fejlécek, módszerek vagy paraméterek segítségével történő HTTP-kérések egyeztetésére használnak
  • Szűrő - egy szokásos tavaszi WebFilter

3. Dinamikus útválasztás

Csakúgy, mint Zuul, a Spring Cloud Gateway lehetőséget nyújt a kérelmek különböző szolgáltatásokhoz történő továbbítására.

Az útválasztási konfiguráció tiszta Java (RouteLocator, ahogy a 2.1. szakasz példája mutatja), vagy a tulajdonságok konfigurálásával:

tavasz: alkalmazás: név: átjáró-szolgáltatás felhő: átjáró: útvonalak: - id: baeldung uri: baeldung.com - id: myOtherRouting uri: localhost: 9999

4. Útvonalgyárak

A Spring Cloud Gateway az útvonalakat a Spring WebFlux segítségével egyezteti HandlerMapping infrastruktúra.

Számos beépített Route Predicate Factory-t is tartalmaz. Mindezek az predikátumok megegyeznek a HTTP kérés különböző attribútumaival. Több "Route Predicate Factory" kombinálható a "és" logikai kapcsolaton keresztül.

Az útvonal-egyeztetés mind programozottan, mind konfigurációs tulajdonságfájlon keresztül alkalmazható, egy másik típusú Útvonal-predikátum gyárak használatával.

A Spring Cloud Gateway Routing Predicate Factory gyárak cikkünk az útválasztó gyárakat tárgyalja részletesebben.

5. WebFilter gyárak

Az útvonalszűrők lehetővé teszik a bejövő HTTP kérés vagy a kimenő HTTP válasz módosítását.

A Spring Cloud Gateway számos beépített WebFilter gyárat, valamint egyedi szűrők létrehozásának lehetőségét tartalmazza.

A Spring Cloud Gateway WebFilter gyárak című cikkünk részletesebben feltárja a WebFilter gyárakat.

6. Tavaszi Cloud DiscoveryClient támogatás

A Spring Cloud Gateway könnyen integrálható a Service Discovery és a Registry könyvtárakba, mint például az Eureka Server és a Consul:

@Configuration @EnableDiscoveryClient public class GatewayDiscoveryConfiguration {@Bean public DiscoveryClientRouteDefinitionLocator discoveryClientRouteLocator (DiscoveryClient discoveryClient) {return new DiscoveryClientRouteDefinitionLocator (discoveryClient); }}

6.1. LoadBalancerClient Szűrő

A LoadBalancerClientFilter URI-t keres az Exchange attribútum tulajdonságban a ServerWebExchangeUtils.GATEWAY_REQUEST_URL_ATTR.

Ha az URL-nek van egy lb séma (pl. lb: // baeldung-service) a Tavaszi Felhőt fogja használni LoadBalancerClient hogy oldja meg a nevet (azaz baeldung-szolgáltatás) tényleges gazdagépre és portra.

A módosítatlan eredeti URL a ServerWebExchangeUtils.GATEWAY_ORIGINAL_REQUEST_URL_ATTR tulajdonság.

7. Monitoring

A Spring Cloud Gateway az Actuator API-t használja, egy jól ismert Spring-Boot könyvtárat, amely számos out-of-the-box szolgáltatást nyújt az alkalmazás figyeléséhez.

Miután az Actuator API telepítve és konfigurálva van, az átjáró megfigyelési funkciói a hozzáféréssel vizualizálhatók / gateway / végpont.

8. Végrehajtás

Most létrehozunk egy egyszerű példát a Spring Cloud Gateway használatára proxy szerverként a pálya állítmány.

8.1. Függőségek

A Spring Cloud Gateway jelenleg a mérföldkövek tárházában található, a 2.0.0.RC2 verzión. Ezt a verziót is használjuk itt.

A projekt hozzáadásához a függőségkezelő rendszert fogjuk használni:

   org.springframework.cloud spring-cloud-gateway 2.0.0.RC2 pom import 

Ezután hozzáadjuk a szükséges függőségeket:

 org.springframework.boot spring-boot-actuator org.springframework.boot spring-boot-starter-webflux org.springframework.cloud spring-cloud-starter-gateway 

8.2. Kód végrehajtása

És most létrehozunk egy egyszerű útválasztási konfigurációt a alkalmazás.yml fájl:

tavasz: felhő: átjáró: útvonalak: - id: baeldung_route uri: //baeldung.com predikátum: - Path = / baeldung / management: végpontok: web: expozíció: tartalmazza: "* ' 

És a Gateway alkalmazás kódja:

@SpringBootApplication public class GatewayApplication {public static void main (String [] args) {SpringApplication.run (GatewayApplication.class, args); }}

Az alkalmazás elindulása után elérhetjük az URL-t: „// localhost / működtető / átjáró / útvonalak / baeldung_route” az összes létrehozott útválasztási konfiguráció ellenőrzése:

{"id": "baeldung_route", "predicates": [{"name": "Path", "args": {"_ genkey_0": "/ baeldung"}}], "filters": [], "uri" : "// baeldung.com", "rendelés": 0}

Látjuk, hogy a relatív URL: „/ Baeldung” útvonalként van konfigurálva,így megütve az URL-t „// localhost / baeldung” átirányítunk a következőre://baeldung.com“, Ahogy a példánkban konfiguráltuk.

9. Következtetés

Ebben a cikkben néhány olyan tulajdonságot és összetevőt tártunk fel, amelyek a Spring Cloud Gateway részét képezik. Ez az új API már nem elérhető eszközöket kínál az átjáró és a proxy támogatásához.

Az itt bemutatott példák megtalálhatók a GitHub-tárunkban.


$config[zx-auto] not found$config[zx-overlay] not found