All Products
Search
Document Center

Enterprise Distributed Application Service:Membangun gerbang layanan

Last Updated:Mar 11, 2026

Gerbang layanan mengarahkan permintaan klien yang masuk ke layanan mikro backend berdasarkan aturan yang dapat dikonfigurasi, seperti path URL, header, atau parameter kueri. Topik ini menjelaskan cara membangun gerbang layanan dengan Nacos sebagai registrasi layanan, menggunakan Spring Cloud Gateway atau Spring Cloud Netflix Zuul.

Untuk melewati langkah-langkah penyiapan, unduh proyek demo lengkap berikut:

Cara Spring Cloud Gateway mengarahkan permintaan

Spring Cloud Gateway memproses permintaan melalui tiga konstruk inti:

KonstrukDeskripsi
RouteBlok dasar pembangun. Setiap route memetakan permintaan yang masuk ke layanan backend, ditentukan oleh ID, URI tujuan, satu atau beberapa predicate, dan filter opsional.
PredicateKondisi pencocokan yang dievaluasi terhadap permintaan yang masuk (path, header, parameter kueri, dll.). Route dicocokkan ketika semua predicate-nya mengembalikan nilai true.
FilterLangkah pemrosesan yang memodifikasi permintaan atau respons sebelum atau setelah diteruskan. Misalnya, StripPrefix=1 menghapus segmen path pertama sebelum mengirim permintaan ke downstream.

Alur permintaan: Client → Gateway Handler Mapping (mencocokkan route dengan mengevaluasi predicate) → Gateway Web Handler (menjalankan rantai filter) → Backend Service. Filter dijalankan baik sebelum maupun setelah permintaan yang diproksi, sehingga Anda dapat memodifikasi header, menulis ulang path, atau menambahkan autentikasi di tingkat gerbang.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Maven yang terinstal dengan variabel lingkungan dikonfigurasi

  • Nacos Server versi terbaru yang telah diunduh

  • Opsional:

Jalankan Nacos Server

  1. Ekstrak paket Nacos Server yang telah diunduh.

  2. Buka direktori nacos/bin dan jalankan Nacos Server dalam mode standalone:

    • Linux, UNIX, atau macOS:

      sh startup.sh -m standalone
    • Windows: klik ganda startup.cmd.

Membangun gerbang layanan dengan Spring Cloud Gateway

Spring Cloud Gateway dibangun di atas Project Reactor dan Spring WebFlux, menyediakan gerbang reaktif non-blocking.

Langkah 1: Buat proyek gerbang

  1. Buat proyek Maven bernama spring-cloud-gateway-nacos.

  2. Tambahkan dependensi berikut ke pom.xml. Contoh ini menggunakan Spring Boot 2.1.4.RELEASE dan Spring Cloud Greenwich.SR1:

        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.4.RELEASE</version>
            <relativePath/>
        </parent>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-gateway</artifactId>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <version>2.1.1.RELEASE</version>
            </dependency>
        </dependencies>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Greenwich.SR1</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
  3. Buat kelas startup GatewayApplication:

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

Langkah 2: Konfigurasikan aturan routing

Tambahkan konfigurasi berikut ke application.yaml. Ganti 127.0.0.1:8848 dengan alamat aktual Nacos Server Anda jika dijalankan pada mesin yang berbeda.

server:
  port: 18012

spring:
  application:
    name: spring-cloud-gateway-nacos
  cloud:
    gateway:
      routes:
      - id: service-provider
        uri: lb://service-provider
        predicates:
        - Path=/provider1/**
        filters:
        - StripPrefix=1
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

Konfigurasi route ini bekerja sebagai berikut:

KomponenNilaiDeskripsi
PredicatePath=/provider1/**Mencocokkan semua permintaan dengan path yang dimulai dengan /provider1/.
URIlb://service-providerMeneruskan permintaan yang cocok ke layanan service-provider menggunakan load balancing sisi klien.
FilterStripPrefix=1Menghapus segmen path pertama sebelum meneruskan. Misalnya, /provider1/echo/hello menjadi /echo/hello.

Langkah 3: Jalankan gerbang dan verifikasi pendaftaran

  1. Jalankan fungsi utama GatewayApplication untuk memulai gerbang.

  2. Buka konsol Nacos Server di http://127.0.0.1:8848/nacos (username dan password default: nacos).

  3. Pada panel navigasi, pilih Service Management > Services. Pastikan spring-cloud-gateway-nacos muncul dalam daftar layanan.

Membangun gerbang layanan dengan Spring Cloud Netflix Zuul

Zuul merupakan opsi gerbang alternatif berbasis model I/O blocking, cocok untuk aplikasi yang sudah menggunakan stack Netflix OSS.

Langkah 1: Buat proyek gerbang

  1. Buat proyek Maven bernama spring-cloud-zuul-nacos.

  2. Tambahkan dependensi berikut ke pom.xml. Contoh ini menggunakan Spring Boot 2.1.4.RELEASE, Spring Cloud Greenwich.SR1, dan Spring Cloud Alibaba 0.9.0:

        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.4.RELEASE</version>
            <relativePath/>
        </parent>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-webflux</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <version>2.1.1.RELEASE</version>
            </dependency>
        </dependencies>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Greenwich.SR1</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
  3. Buat kelas startup ZuulApplication:

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

Langkah 2: Konfigurasikan aturan routing

Tambahkan konfigurasi berikut ke application.properties. Ganti 127.0.0.1:8848 dengan alamat aktual Nacos Server Anda jika dijalankan pada mesin yang berbeda.

spring.application.name=spring-cloud-zuul-nacos
server.port=18022

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

zuul.routes.opensource-provider1.path=/provider1/**
zuul.routes.opensource-provider1.serviceId=service-provider

Konfigurasi ini mengarahkan semua permintaan dengan path yang dimulai dengan /provider1/ ke layanan backend service-provider.

Langkah 3: Jalankan gerbang dan verifikasi pendaftaran

  1. Jalankan fungsi utama ZuulApplication untuk memulai gerbang.

  2. Buka konsol Nacos Server di http://127.0.0.1:8848/nacos (username dan password default: nacos).

  3. Pada panel navigasi, pilih Service Management > Services. Pastikan spring-cloud-zuul-nacos muncul dalam daftar layanan.

Buat penyedia layanan

Baik Spring Cloud Gateway maupun Zuul memerlukan layanan downstream untuk meneruskan permintaan. Untuk detail lengkap, lihat Implementasikan registrasi dan penemuan layanan.

Contoh berikut membuat penyedia layanan minimal dengan satu titik akhir /echo/{string}:

@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {

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

    @RestController
    public class EchoController {
        @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
        public String echo(@PathVariable String string) {
            return string;
        }
    }
}

Verifikasi penerusan permintaan

Verifikasi secara lokal

Jalankan gerbang dan penyedia layanan, lalu kirim permintaan melalui gerbang.

Untuk Spring Cloud Gateway (port 18012):

curl http://127.0.0.1:18012/provider1/echo/hello

Untuk Zuul (port 18022):

curl http://127.0.0.1:18022/provider1/echo/hello

Respons yang berhasil akan mengembalikan hello, yang mengonfirmasi bahwa gerbang telah meneruskan permintaan ke service-provider dan menghapus awalan /provider1.

EDAS Spring Cloud application development: build a Zuul gateway

Terapkan ke EDAS

Terapkan aplikasi ke Enterprise Distributed Application Service (EDAS). Untuk instruksi penerapan, lihat Implementasikan registrasi dan penemuan layanan.

Registrasi layanan EDAS adalah versi komersial dari Nacos. Saat menerapkan ke EDAS, platform secara otomatis mengonfigurasi detail koneksi Nacos—alamat IP, port layanan, namespace, ID AccessKey, Rahasia AccessKey, dan context path—tanpa memerlukan konfigurasi tambahan. Pertahankan atau hapus pengaturan Nacos on-premises asli sesuai kebutuhan.

Kompatibilitas versi

Versi Spring CloudVersi Spring Cloud Alibaba
Greenwich2.1.1.RELEASE
Finchley2.0.1.RELEASE
Edgware1.5.1.RELEASE
Catatan

Spring Cloud Edgware telah mencapai masa akhir dukungan. Jangan gunakan untuk aplikasi baru.

Langkah berikutnya