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.
Ekstrak paket Nacos Server yang telah diunduh.
Buka direktori
nacos/binuntuk memulai Nacos Server.Di Linux, UNIX, atau macOS, jalankan perintah
sh startup.sh -m standalone.Di Windows, klik dua kali file
startup.cmduntuk 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.
Buat gateway layanan.
Buat proyek Maven bernama
spring-cloud-gateway-nacos.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>Kembangkan kelas startup gateway layanan bernama
GatewayApplication.@SpringBootApplication @EnableDiscoveryClient public class GatewayApplication { public static void main(String[] args) { SpringApplication.run(GatewayApplication.class, args); } }Untuk menetapkan alamat registri ke alamat Nacos Server, tambahkan konfigurasi berikut ke
application.yaml.Dalam konfigurasi berikut,
127.0.0.1:8848menentukan 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 backendservice-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:8848Jalankan fungsi utama kelas startup
GatewayApplicationuntuk memulai gateway.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 . 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.
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; } } }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.
Buat gateway layanan.
Buat proyek Maven bernama
spring-cloud-zuul-nacos.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>Kembangkan kelas startup gateway layanan bernama
ZuulApplication.@SpringBootApplication @EnableZuulProxy @EnableDiscoveryClient public class ZuulApplication { public static void main(String[] args) { SpringApplication.run(ZuulApplication.class, args); } }Tambahkan konfigurasi berikut ke
application.propertiesuntuk menetapkan alamat registri ke alamat Nacos Server.Dalam konfigurasi berikut,
127.0.0.1:8848menentukan 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 backendservice-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-providerJalankan fungsi utama
ZuulApplicationdi spring-cloud-zuul-nacos untuk memulai layanan.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.
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; } } }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.

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.
Spring Cloud Edgware telah mencapai akhir masa hidup. Oleh karena itu, kami merekomendasikan agar Anda tidak menggunakan versi ini untuk mengembangkan aplikasi.