Pendaftaran layanan dan penemuan aplikasi Spring Cloud sebelumnya diimplementasikan menggunakan komponen seperti Eureka, Consul, dan ZooKeeper. Topik ini menjelaskan cara mengimplementasikan pendaftaran layanan dan penemuan menggunakan Nacos, serta cara men-hosting Nacos ke Serverless App Engine (SAE).
Manfaat
Pendaftaran layanan dan penemuan aplikasi Spring Cloud diimplementasikan menggunakan komponen seperti Eureka, Consul, ZooKeeper, dan Redis. Jika Anda men-hosting aplikasi Spring Cloud ke SAE, Anda hanya perlu mengganti registri layanan dan pusat konfigurasi asli dengan Alibaba Nacos Discovery untuk melakukan pendaftaran layanan dan penemuan tanpa memodifikasi kode bisnis.
Registri layanan SAE menyediakan semua fitur Spring Cloud Alibaba Nacos Discovery dan membebaskan Anda dari ketergantungan pada beberapa komponen seperti Eureka, Consul, ZooKeeper, dan Redis.
Setelah Anda men-hosting aplikasi Spring Cloud ke SAE, Anda dapat fokus membangun logika aplikasi Spring Cloud tanpa khawatir tentang pembuatan dan pemeliharaan registri dan pusat konfigurasi. Fitur yang disediakan oleh SAE, termasuk penskalaan otomatis, mulai dan hentikan aplikasi secara cepat dalam jumlah besar, dan pemantauan aplikasi, dapat membantu mengurangi biaya pengembangan dan operasi Anda secara signifikan.
Jika Anda memiliki sejumlah besar aplikasi mikro layanan, Anda dapat menggunakan salah satu dari jenis registri layanan berikut yang terdaftar dalam urutan rekomendasi:
Langkah 1: Dapatkan demo
eureka-service-provider dan eureka-service-consumer adalah paket aplikasi demo mikro layanan SAE. Eureka diintegrasikan ke dalam konsumen dan penyedia. Konsumen mengonsumsi layanan yang disediakan oleh penyedia.
Penyedia: eureka-service-provider.zip
Konsumen: eureka-service-consumer.zip
Langkah 2: Ubah konfigurasi registri layanan penyedia
Untuk men-hosting penyedia cloud-native ke SAE, Anda harus mengubah dependensi POM di penyedia dan menentukan alamat IP untuk Nacos Server.
Anda harus menentukan alamat IP untuk Nacos Server dalam skenario berikut:
Anda men-hosting aplikasi Anda ke SAE setelah mereka lulus tes lokal.
Registri layanan SAE adalah registri Nacos mandiri.
Tambahkan dependensi berikut ke file pom.xml.
Buka file pom.xml penyedia. Ganti
spring-cloud-starter-netflix-eureka-clientdenganspring-cloud-starter-alibaba-nacos-discoverydan konfigurasikan versi Nacos Server.Sebelum Penggantian:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>Setelah Penggantian:
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.1.1.RELEASE</version> </dependency>CatatanSpring Cloud Greenwich digunakan dalam contoh ini. Versi
spring-cloud-starter-alibaba-nacos-discoveryadalah2.1.1.RELEASE.Jika Anda menggunakan Spring Cloud Finchley, versi
spring-cloud-starter-alibaba-nacos-discoveryadalah2.0.1.RELEASE.Jika Anda menggunakan Spring Cloud Edgware, versi
spring-cloud-starter-alibaba-nacos-discoveryadalah1.5.1.RELEASE. Layanan versi ini telah berakhir. Kami tidak merekomendasikan versi ini. Untuk informasi lebih lanjut, lihat Spring Cloud Edgware Release Notes.
Tentukan alamat IP untuk Nacos Server.
Buka file application.properties di src\main\resources dan tentukan alamat IP untuk Nacos Server.
Sebelum Modifikasi:
spring.application.name=service-provider server.port=18081 eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8761/eureka/Setelah Modifikasi:
spring.application.name=service-provider server.port=18081 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848127.0.0.1adalah alamat IP Nacos Server. Jika Nacos Server diterapkan di server fisik lain, ubah alamat IP sesuai dengan itu. Jika Anda memiliki persyaratan lain, tambahkan konfigurasi yang diperlukan di fileapplication.propertiesdengan merujuk ke Item Konfigurasi.Kueri Layanan Aplikasi.
Jalankan fungsi
maindariProviderApplicationdi proyeknacos-service-provideruntuk memulai penyedia.Masuk ke konsol Nacos Server yang diinstal di komputer Anda dengan mengunjungi
127.0.0.1:8848/nacos. Di panel navigasi sisi kiri, pilih .CatatanNama pengguna dan kata sandi default untuk masuk ke konsol Nacos Server adalah nacos.
Jika service-provider ditampilkan di Service list, dan Anda dapat menanyakan detail service-provider, maka service-provider berhasil didaftarkan.
Langkah 3: Ubah konfigurasi registri layanan konsumen
Untuk men-hosting konsumen cloud-native ke SAE, Anda harus mengubah dependensi POM di konsumen dan menentukan alamat IP untuk Nacos Server.
Anda harus menentukan alamat IP untuk Nacos Server dalam skenario berikut:
Anda men-hosting aplikasi Anda ke SAE setelah mereka lulus tes lokal.
Registri layanan SAE adalah registri Nacos mandiri.
Tambahkan dependensi berikut ke file pom.xml.
Buka file pom.xml penyedia. Ganti
spring-cloud-starter-netflix-eureka-clientdenganspring-cloud-starter-alibaba-nacos-discoverydan konfigurasikan versi Nacos Server.Sebelum Penggantian:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>Setelah Penggantian:
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.1.1.RELEASE</version> </dependency>CatatanSpring Cloud Greenwich digunakan dalam contoh ini. Versi
spring-cloud-starter-alibaba-nacos-discoveryadalah2.1.1.RELEASE.Jika Anda menggunakan Spring Cloud Finchley, versi
spring-cloud-starter-alibaba-nacos-discoveryadalah2.0.1.RELEASE.Jika Anda menggunakan Spring Cloud Edgware, versi
spring-cloud-starter-alibaba-nacos-discoveryadalah1.5.1.RELEASE. Layanan versi ini telah berakhir. Kami tidak merekomendasikan versi ini. Untuk informasi lebih lanjut, lihat Spring Cloud Edgware Release Notes.
Tentukan alamat IP untuk Nacos Server.
Buka file application.properties di src\main\resources dan tentukan alamat IP untuk Nacos Server.
Sebelum Modifikasi:
spring.application.name=service-consumer server.port=18082 eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8761/eureka/Setelah Modifikasi:
spring.application.name=service-consumer server.port=18082 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848127.0.0.1adalah alamat IP Nacos Server. Jika Nacos Server diterapkan di server fisik lain, ubah alamat IP sesuai dengan itu. Jika Anda memiliki persyaratan lain, tambahkan konfigurasi yang diperlukan di fileapplication.propertiesdengan merujuk ke Item Konfigurasi.Kueri Layanan Aplikasi.
Jalankan fungsi
maindariConsumerApplicationdi proyeknacos-service-consumeruntuk memulai konsumen.Masuk ke konsol Nacos Server yang diinstal di komputer Anda dengan mengunjungi
127.0.0.1:8848/nacos. Di panel navigasi sisi kiri, pilih .CatatanNama pengguna dan kata sandi default untuk masuk ke konsol Nacos Server adalah nacos.
Jika service-consumer ditampilkan di Service list, dan Anda dapat menanyakan detail service-consumer, maka service-consumer berhasil didaftarkan.
Langkah 4: Lihat hasil konsumen mengonsumsi layanan penyedia
Lihat hasil konsumen mengonsumsi layanan yang disediakan oleh penyedia di komputer Anda. Mulai layanan, dan jalankan IP+port/echo-rest/<Variabel Kustom> atau IP+port/echo-feign/<Variabel Kustom> untuk melihat hasilnya.
Untuk Linux, UNIX, atau macOS, jalankan
curl http://127.0.0.1:18082/echo-rest/<Variabel Kustom>ataucurl http://127.0.0.1:18082/echo-feign/<Variabel Kustom>.Untuk Windows, masukkan
http://127.0.0.1:18082/echo-rest/<Variabel Kustom>atauhttp://127.0.0.1:18082/echo-feign/<Variabel Kustom>di browser.
Berikut adalah contoh keberhasilan konsumsi layanan di sistem operasi Windows.

Langkah 5: Terapkan aplikasi ke SAE
Bagian ini memberikan contoh untuk menjelaskan cara mengompilasi program lokal menjadi paket JAR yang dapat dieksekusi. Anda juga dapat membuat gambar untuk aplikasi sebelum penyebaran.
Di file pom.xml aplikasi, tambahkan konfigurasi berikut, lalu jalankan perintah mvn clean package untuk mengompilasi program lokal menjadi paket JAR yang dapat dieksekusi.
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>Terapkan paket aplikasi penyedia dan konsumen yang telah dikompilasi ke SAE. Untuk informasi lebih lanjut, lihat Terapkan Aplikasi Java Menggunakan Paket JAR.
PentingSAE tidak mengizinkan Anda membuat aplikasi kosong. Anda harus membuat aplikasi di konsol, lalu Anda dapat mendorong data ke dalam aplikasi.
Jika Anda menggunakan paket JAR untuk menerapkan aplikasi, atur Application Runtime Environment ke Standard Java Application Runtime Environment.
Jika Anda menggunakan paket WAR untuk menerapkan aplikasi, atur Application Runtime Environment ke apache-tomcat-XXX.
Saat Anda menerapkan aplikasi ke SAE, registri layanan SAE secara otomatis menyetel alamat IP Nacos Server, port layanan, namespace, ID AccessKey, dan Rahasia AccessKey dengan prioritas tinggi. Anda dapat mempertahankan atau menghapus konfigurasi default berdasarkan kebutuhan Anda.
Langkah 6: Verifikasi hasil
Tautkan instance CLB Internet-facing ke konsumen dan masukkan endpoint publik yang Anda tentukan untuk instance CLB di browser untuk pergi ke halaman utama konsumen. Untuk informasi lebih lanjut, lihat Tautkan Instance CLB ke Aplikasi dan Hasilkan Alamat IP Publik atau Pribadi untuk Aplikasi.
Di halaman utama konsumen, buat permintaan untuk memanggil layanan dari penyedia. Masuk ke SAE console. Di panel navigasi sisi kiri, pilih Applications > Applications. Di bilah navigasi atas, pilih wilayah.
Di halaman Applications, pilih konsumen, lalu navigasikan ke halaman Basic Information.
Di panel navigasi sisi kiri, pilih untuk melihat data panggilan layanan keseluruhan.
Jika data tentang permintaan untuk memanggil layanan dari penyedia ditampilkan di halaman Ikhtisar, layanan berhasil dipanggil.
Item konfigurasi
Item konfigurasi | Kunci | Nilai default | Deskripsi |
Alamat IP server | spring.cloud.nacos.discovery.server-addr | Tidak ada | Alamat IP dan port tempat Nacos Server mendengarkan. |
Nama layanan | spring.cloud.nacos.discovery.service | ${spring.application.name} | Nama layanan. |
Nama Network Interface Controller (NIC) | spring.cloud.nacos.discovery.network-interface | Tidak ada | Jika tidak ada alamat IP yang ditentukan, alamat IP NIC didaftarkan. Jika item ini tidak dikonfigurasi, alamat IP NIC pertama digunakan secara default. |
Alamat IP terdaftar | spring.cloud.nacos.discovery.ip | Tidak ada | Alamat IP terdaftar memiliki prioritas lebih tinggi daripada nama ENI selama konfigurasi. |
Port terdaftar | spring.cloud.nacos.discovery.port | -1 | Anda tidak perlu mengonfigurasi port terdaftar. Sistem secara otomatis mendeteksi port. |
Namespace | spring.cloud.nacos.discovery.namespace | Tidak ada | Isolasi pendaftaran di lingkungan yang berbeda. Misalnya, isolasi sumber daya, termasuk konfigurasi dan layanan, di lingkungan pengembangan, pengujian, dan produksi. |
Metadata | spring.cloud.nacos.discovery.metadata | Tidak ada | Metadata ini harus dikonfigurasikan dalam format JSON Map. Anda dapat menentukan metadata terkait layanan berdasarkan kebutuhan bisnis Anda. |
Cluster | spring.cloud.nacos.discovery.cluster-name | DEFAULT | Nama kluster Nacos. |
Endpoint | spring.cloud.nacos.discovery.endpoint | Tidak ada | Domain name layanan di wilayah tersebut. Anda dapat secara dinamis mengambil alamat IP server berdasarkan domain name ini. Anda tidak perlu menentukan item ini saat menerapkan aplikasi ke SAE. |
Apakah akan mengaktifkan integrasi Ribbon | ribbon.nacos.enabled | true | Nonaktifkan integrasi Ribbon hanya jika diperlukan. |
Untuk informasi lebih lanjut tentang Spring Cloud Alibaba Nacos Discovery, lihat Spring Cloud Alibaba Nacos Discovery.
Apa yang harus dilakukan selanjutnya
Anda dapat melakukan operasi berikut pada aplikasi yang telah dibuat.
Aplikasi tidak dapat mengakses Internet atau diakses melalui Internet. Jika Anda ingin mengonfigurasi jaringan untuk aplikasi, lihat Akses Aplikasi.
Untuk informasi lebih lanjut, lihat Manajemen O&M.



