全部产品
Search
文档中心

Enterprise Distributed Application Service:Membangun gateway layanan

更新时间:Jul 02, 2025

Topik ini menjelaskan cara menggunakan Nacos untuk membangun gateway layanan berdasarkan Spring Cloud Gateway atau Spring Cloud Netflix Zuul.

Persiapan

  • Unduh Maven dan atur variabel lingkungan. Langkah ini dapat dilewati jika Anda sudah menginstal Maven.

  • Unduh versi terbaru Nacos Server. Untuk informasi lebih lanjut, lihat Catatan Rilis Nacos Server. Langkah ini dapat dilewati jika Anda sudah menginstal Nacos Server.

    1. Ekstrak paket Nacos Server yang telah diunduh.

    2. Buka direktori nacos/bin untuk memulai Nacos Server.

      • Di Linux, UNIX, atau macOS, jalankan perintah sh startup.sh -m standalone.

      • Di Windows, klik dua kali file startup.cmd untuk menjalankannya.

  • Unduh aplikasi demo.

    Topik ini menjelaskan langkah-langkah penting dalam pengembangan aplikasi di lingkungan lokal. Untuk mendapatkan aplikasi Spring Cloud lengkap, unduh spring-cloud-gateway-nacos, spring-cloud-zuul-nacos, dan nacos-service-provider.

  • Opsional:

Membangun gateway layanan berdasarkan Spring Cloud Gateway

Bagian ini menjelaskan cara menggunakan Nacos untuk membangun gateway layanan berdasarkan Spring Cloud Gateway untuk aplikasi dari awal.

  1. Buat gateway layanan.

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

    2. Tambahkan dependensi Spring Boot dan Spring Cloud ke file pom.xml.

      Dalam contoh kode berikut, Spring Boot 2.1.4.RELEASE dan Spring Cloud Greenwich.SR1 ditambahkan sebagai dependensi.

       <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. Kembangkan kelas startup gateway layanan bernama GatewayApplication.

          @SpringBootApplication
          @EnableDiscoveryClient
          public class GatewayApplication {
              public static void main(String[] args) {
                  SpringApplication.run(GatewayApplication.class, args);
              }
          }                                
    4. Untuk menetapkan alamat registri ke alamat Nacos Server, tambahkan konfigurasi berikut ke application.yaml.

      Dalam konfigurasi berikut, 127.0.0.1:8848 menentukan alamat IP Nacos Server. Jika Nacos Server Anda berada di mesin lain, ubah nilainya ke alamat yang sesuai.

      Pengaturan routes menentukan aturan routing dan penerusan gateway. Dalam contoh ini, semua permintaan dengan awalan /provider1/ dirute ke layanan backend service-provider.

      server:
       port: 18012
      
      spring:
       application:
              name: spring-cloud-gateway-nacos
       cloud:
              gateway: # konfigurasikan routes untuk gateway
                routes:
                - id: service-provider          # Meneruskan permintaan yang diawali dengan /provider1/ ke provider1.
                  uri: lb://service-provider
                  predicates:
                  - Path=/provider1/**
                  filters:
                  - StripPrefix=1               # Menunjukkan bahwa awalan /provider1 perlu dipotong.
              nacos:
                discovery:
                  server-addr: 127.0.0.1:8848                               
    5. Jalankan fungsi utama kelas startup GatewayApplication untuk memulai gateway.

    6. Masuk ke konsol Nacos Server lokal di http://127.0.0.1:8848/nacos. Nama pengguna dan kata sandi default adalah nacos. Di panel navigasi sebelah kiri, pilih Service Management > Services. Anda dapat melihat bahwa spring-cloud-gateway-nacos muncul dalam daftar layanan. Anda juga dapat memeriksa detail layanan di Details. Ini menunjukkan bahwa gateway telah dimulai dan didaftarkan. Selanjutnya, buat layanan downstream untuk memverifikasi fitur penerusan permintaan gateway.

  2. Buat penyedia layanan.

    Untuk informasi lebih lanjut tentang cara membuat aplikasi penyedia layanan, lihat Implementasikan Pendaftaran Layanan dan Penemuan.

    Kode berikut memberikan contoh cara membuat penyedia layanan:

    @SpringBootApplication
    @EnableDiscoveryClient
    public class ProviderApplication {
    
        public static void main(String[] args) {
    
            SpringApplication.run(ProviderApplication, args);
        }
    
        @RestController
        public class EchoController {
            @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
            public String echo(@PathVariable String string) {
                return string;
            }
        }
    }                        
  3. Verifikasi hasilnya.

    • Verifikasi hasilnya di lingkungan lokal Anda

      Jalankan gateway layanan dan penyedia layanan yang telah dibuat di lingkungan lokal Anda, dan hubungkan ke Spring Cloud Gateway untuk meneruskan permintaan ke layanan backend. Hasil yang dikembalikan menunjukkan panggilan berhasil.

    • Verifikasi hasilnya di Enterprise Distributed Application Service (EDAS)

      Anda dapat menerapkan aplikasi ke EDAS dan memverifikasi hasilnya. Untuk informasi lebih lanjut, lihat Implementasikan Pendaftaran Layanan dan Penemuan.

      Registri EDAS menyediakan versi komersial Nacos. Saat Anda menerapkan aplikasi ke EDAS, EDAS memperbarui informasi berikut tentang Nacos Server lokal Anda: alamat IP dan port layanan, namespace, ID AccessKey, Rahasia AccessKey, dan jalur konteks. Anda tidak perlu mengonfigurasi pengaturan tambahan. Anda dapat mempertahankan atau menghapus konfigurasi asli.

Membangun gateway layanan berdasarkan Spring Cloud Netflix Zuul

Bagian ini menjelaskan cara menggunakan Nacos sebagai registri untuk membangun gateway layanan berdasarkan Spring Cloud Netflix Zuul untuk aplikasi dari awal.

  1. Buat gateway layanan.

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

    2. Tambahkan dependensi Spring Boot, Spring Cloud, dan Spring Cloud Alibaba ke file pom.xml.

      Tambahkan dependensi 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. Kembangkan kelas startup gateway layanan bernama ZuulApplication.

          @SpringBootApplication
          @EnableZuulProxy
          @EnableDiscoveryClient
          public class ZuulApplication {
              public static void main(String[] args) {
                  SpringApplication.run(ZuulApplication.class, args);
              }
          }                                
    4. Tambahkan konfigurasi berikut ke application.properties untuk menetapkan alamat registri ke alamat Nacos Server.

      Dalam konfigurasi berikut, 127.0.0.1:8848 menentukan alamat IP Nacos Server. Jika Nacos Server Anda berada di mesin lain, ubah nilainya ke alamat yang sesuai.

      Pengaturan routes menentukan aturan routing dan penerusan Zuul. Dalam contoh ini, semua permintaan yang diawali dengan /provider1/ dirute ke layanan backend service-provider.

       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                                
    5. Jalankan fungsi utama ZuulApplication di spring-cloud-zuul-nacos untuk memulai layanan.

    6. Masuk ke konsol Nacos Server lokal di http://127.0.0.1:8848/nacos. Nama pengguna dan kata sandi default adalah nacos. Di panel navigasi sebelah kiri, pilih Service Management > Services. Anda akan melihat bahwa spring-cloud-zuul-nacos muncul dalam daftar layanan. Detail layanan dapat diperiksa di tab Details, menunjukkan bahwa gateway telah dimulai dan didaftarkan. Selanjutnya, buat layanan downstream untuk memverifikasi fitur penerusan permintaan gateway.

  2. Buat penyedia layanan.

    Untuk informasi lebih lanjut tentang cara membuat penyedia layanan, lihat Implementasikan Pendaftaran Layanan dan Penemuan.

    Kode berikut memberikan contoh cara membuat kelas startup penyedia layanan:

    @SpringBootApplication
    @EnableDiscoveryClient
    public class ProviderApplication {
    
        public static void main(String[] args) {
    
            SpringApplication.run(ProviderApplication, args);
        }
    
        @RestController
        public class EchoController {
            @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
            public String echo(@PathVariable String string) {
                return string;
            }
        }
    }                        
  3. Verifikasi hasilnya.

    • Verifikasi hasilnya di lingkungan lokal Anda

      Jalankan gateway layanan Zuul dan penyedia layanan yang telah dibuat di lingkungan lokal Anda, dan hubungkan ke Spring Cloud Netflix Zuul untuk meneruskan permintaan ke layanan backend. Hasil yang dikembalikan menunjukkan panggilan berhasil.

      EDAS Spring Cloud application development: build a Zuul gateway

    • Verifikasi hasilnya di EDAS

      Terapkan aplikasi ke EDAS dan verifikasi hasilnya. Untuk informasi lebih lanjut, lihat Implementasikan Pendaftaran Layanan dan Penemuan.

      Registri EDAS menyediakan versi komersial Nacos. Saat Anda menerapkan aplikasi ke EDAS, EDAS memperbarui informasi berikut tentang Nacos Server lokal Anda: alamat IP dan port layanan, namespace, ID AccessKey, Rahasia AccessKey, dan jalur konteks. Anda tidak perlu mengonfigurasi pengaturan tambahan. Anda dapat mempertahankan atau menghapus konfigurasi asli.

Versi

  • Spring Cloud Greenwich digunakan dalam contoh ini. Versi Spring Cloud Alibaba yang sesuai adalah 2.1.1.RELEASE.

  • Spring Cloud Finchley sesuai dengan Spring Cloud Alibaba 2.0.1.RELEASE.

  • Spring Cloud Edgware sesuai dengan Spring Cloud Alibaba 1.5.1.RELEASE.

Catatan

Spring Cloud Edgware telah mencapai akhir masa hidup. Oleh karena itu, kami merekomendasikan agar Anda tidak menggunakan versi ini untuk mengembangkan aplikasi.