Bütün müştərilərin mikroservislərə daxil olması üçün vahid bir giriş nöqtəsi (Single Entry Point) təmin edir.
Müştəri tərəf (frontend) hər servisi ayrı-ayrılıqda bilmək məcburiyyətindən azad olur. Tək bir endpoint kifayətdir.
Routing, Rate Limiting, Authentication, Load Balancing, Response Caching, Request/Response Transformation.
Spring Cloud Gateway, Kong, NGINX, AWS API Gateway, Zuul, Envoy Proxy.
Daxil olan istəyi URL path-ə əsasən müvafiq mikroservisə yönləndirir. /api/users → User Service
Müəyyən müddətdə gələn istəklərin sayını məhdudlaşdırır. DDoS hücumlarından qoruyur.
JWT Token yoxlaması mərkəzi şəkildə Gateway-də aparılır. Servislər bu yükdən azad olur.
Bir neçə servisdən gələn cavabları birləşdirib müştəriyə tək cavab kimi qaytarır.
@Configuration
public class GatewayConfig {
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
// User Service-ə yönləndirmə
.route("user-service", r -> r
.path("/api/users/**")
.filters(f -> f
.stripPrefix(1)
.addRequestHeader("X-Request-Source", "gateway"))
.uri("lb://USER-SERVICE"))
// Order Service-ə yönləndirmə
.route("order-service", r -> r
.path("/api/orders/**")
.filters(f -> f
.stripPrefix(1)
.circuitBreaker(c -> c.setName("orderCB")))
.uri("lb://ORDER-SERVICE"))
.build();
}
}
spring:
cloud:
gateway:
globalcors:
corsConfigurations:
'[/**]':
allowedOrigins: "*"
default-filters:
- TokenRelay # JWT token ötürmə
- SaveSession
routes:
- id: payment-service
uri: lb://PAYMENT-SERVICE
predicates:
- Path=/api/payments/**