0Pricing
API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) · درس

فهم الأساس التفاعلي

اكتشفوا سبب بناء Spring Cloud Gateway على مكدس تفاعلي غير حاجب، وما يعنيه ذلك لتدفّق الطلبات عبر البوابة.

فهم الأساس التفاعلي درس مجاني في API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) 4 دروس في المجموع.

بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.

A Different Kind of Server

Unlike a traditional Spring MVC app, Spring Cloud Gateway runs on Spring WebFlux and Project Reactor. It uses a non-blocking, event-loop server (Netty) instead of one thread per request.

This design lets the gateway handle thousands of concurrent connections with very few threads.

Blocking vs Non-Blocking

In a blocking model, a thread waits idle while a backend responds. In a non-blocking model, the thread is freed and notified later when data is ready.

  • Blocking: 1 thread tied up per in-flight request
  • Non-blocking: a handful of threads serve many requests

Mono and Flux

Reactor's core types describe asynchronous results:

  • Mono<T> emits 0 or 1 value
  • Flux<T> emits 0 to many values

The gateway returns a Mono<Void> when a request finishes processing.

Mono<String> name = Mono.just("gateway");
Flux<Integer> nums = Flux.just(1, 2, 3);

Nothing Happens Until Subscribe

Reactive streams are lazy. A Mono or Flux does nothing until something subscribes. In the gateway, the framework subscribes for you when a request arrives.

Mono<String> greeting = Mono.fromSupplier(() -> "hello");
// runs only when subscribed:
greeting.subscribe(System.out::println);

The Reactive Web Stack

The starter spring-cloud-starter-gateway pulls in WebFlux automatically. You must not add spring-boot-starter-web (the servlet/MVC stack) or startup will fail with a conflict.

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

The ServerWebExchange

Every request is wrapped in a ServerWebExchange, which holds the request and response. Filters read and mutate this exchange as the request flows through.

// inside a filter
ServerHttpRequest request = exchange.getRequest();
String path = request.getURI().getPath();

The Filter Chain

A request passes through an ordered chain. Each filter can act, then call chain.filter(exchange) to continue, and run more logic after the downstream response returns.

return chain.filter(exchange)
    .then(Mono.fromRunnable(() ->
        System.out.println("response sent")));

Why Reactive Fits a Gateway

A gateway spends most of its time waiting on the network for upstream services. Non-blocking I/O is ideal here: threads are not wasted waiting, so the gateway stays responsive under heavy load.

Avoid Blocking Calls

Calling a blocking JDBC driver or Thread.sleep inside a filter stalls the event loop and hurts every request. If you must block, offload to a bounded scheduler.

Mono.fromCallable(() -> blockingLookup())
    .subscribeOn(Schedulers.boundedElastic());

Operators Transform Streams

Operators like map, flatMap, and filter reshape the data flowing through a stream without blocking.

Flux.just(1, 2, 3, 4)
    .filter(n -> n % 2 == 0)
    .map(n -> n * 10)
    .subscribe(System.out::println); // 20, 40

Mental Model

Think of the gateway as a pipeline of asynchronous steps. A request enters, flows through predicates and filters, is forwarded reactively, and the response streams back through the same chain in reverse.

Quick Check

What underlying web stack does Spring Cloud Gateway run on?

Recap

You now understand the reactive foundation of the gateway:

  • Non-blocking I/O on Netty handles high concurrency
  • Mono and Flux model async results and are lazy
  • Each request is a ServerWebExchange flowing through a filter chain
  • Never block the event loop

This mindset underpins routes, predicates, and filters you build next.

الأسئلة الشائعة

هل درس «فهم الأساس التفاعلي» مجاني؟

نعم — نص درس «فهم الأساس التفاعلي» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)، انتقل إلى CoddyKit PRO. تتضمن دورة API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) 4 دروس في المجموع.

ماذا ستتعلم في «فهم الأساس التفاعلي»؟

اكتشفوا سبب بناء Spring Cloud Gateway على مكدس تفاعلي غير حاجب، وما يعنيه ذلك لتدفّق الطلبات عبر البوابة. تتمرن على API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)؟

لا تُشترط خبرة سابقة. API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «فهم الأساس التفاعلي»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) هذا؟

نعم. كل درس في API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. البوابة مقابل الخدمات المصغّرة التقليدية
  2. إعداد مشروع بوابة أساسي
  3. تعريف المسارات والاختبارات الشرطية
  4. فهم الأساس التفاعلي
← العودة إلى API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)