0Pricing
API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) · レッスン

リアクティブ基盤を理解する

Spring Cloud Gatewayがノンブロッキングのリアクティブスタック上に構築されている理由と、それがゲートウェイを通るリクエストの流れにどう影響するかを学びます。

「リアクティブ基盤を理解する」はCoddyKit上の無料API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)レッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これは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時間対応のAIチューター)、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時間対応のAIチューターがレッスンを進める中での質問に答えます。

API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)を始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAPI Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)は初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「リアクティブ基盤を理解する」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAPI Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)レッスンでコードを書いて実行できますか?

はい。すべてのAPI Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)レッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Gatewayと従来のマイクロサービスの比較
  2. 基本的なGatewayプロジェクトの構築
  3. ルートとPredicateの定義
  4. リアクティブ基盤を理解する
← API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)に戻る