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.