Saat membuat aplikasi Spring Cloud, Anda dapat mengonfigurasi titik akhir Pusat Registrasi Nacos Microservices Engine (MSE) untuk aplikasi tersebut. Setelah dijalankan, aplikasi akan otomatis mendaftar ke Pusat Registrasi Nacos MSE. Setelah pendaftaran, Pusat Registrasi Nacos MSE dapat mengimplementasikan fitur seperti penemuan layanan dan manajemen konfigurasi untuk aplikasi Spring Cloud. Topik ini menjelaskan cara mendaftarkan aplikasi Spring Cloud dengan Pusat Registrasi Nacos MSE untuk mengimplementasikan panggilan layanan.
Prasyarat
Maven telah diunduh dan variabel lingkungan telah dikonfigurasi.
Sebuah instance telah dibuat. Untuk informasi lebih lanjut, lihat Buat sebuah instance.
Sebuah namespace telah dibuat. Untuk informasi lebih lanjut, lihat Buat sebuah namespace. Dalam topik ini, namespace default Public digunakan.
Jika Anda mengakses Pusat Registrasi Nacos MSE melalui Internet, pastikan baik penyedia maupun konsumen dapat mengakses Internet. Anda juga harus mengonfigurasi daftar putih alamat IP publik untuk Pusat Registrasi Nacos MSE yang didaftarkan oleh aplikasi. Untuk informasi lebih lanjut, lihat Konfigurasikan daftar putih alamat IP publik.
Buat penyedia
Buat proyek aplikasi penyedia di mesin lokal Anda, tambahkan dependensi, aktifkan fitur registrasi dan penemuan layanan, serta konfigurasikan Pusat Registrasi Nacos MSE sebagai registri layanan.
Buat proyek Maven bernama nacos-service-provider.
Tambahkan dependensi berikut ke file pom.xml.
Kode berikut menyediakan dependensi yang diperlukan saat 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>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.1.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </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>Dalam contoh ini, Spring Cloud Greenwich digunakan. Versi Spring Cloud Alibaba untuk Spring Cloud Greenwich adalah 2.1.1.RELEASE.
Versi Spring Cloud Alibaba untuk Spring Cloud Finchley adalah 2.0.1.RELEASE.
Versi Spring Cloud Alibaba untuk Spring Cloud Edgware adalah 1.5.1.RELEASE.
PentingSpring Cloud Edgware sudah tidak digunakan lagi. Kami menyarankan agar Anda tidak menggunakan Spring Cloud Edgware untuk mengembangkan aplikasi.
Buat package bernama com.aliware.edas di direktori proyek src\main\java.
Di dalam paket com.aliware.edas, tambahkan kode berikut untuk membuat kelas boot bernama ProviderApplication untuk penyedia.
package com.aliware.edas; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @SpringBootApplication @EnableDiscoveryClient public class ProviderApplication { public static void main(String[] args) { SpringApplication.run(ProviderApplication.class, args); } }CatatanAnotasi
@EnableDiscoveryClientmenentukan bahwa fitur registrasi dan penemuan layanan perlu diaktifkan untuk penyedia.Di dalam paket com.aliware.edas, buat kelas bernama EchoController. Untuk pemetaan URL, tentukan /echo/{string} sebagai jalur dan GET sebagai metode HTTP. Dengan cara ini, parameter metode diperoleh dari jalur URL dan ditampilkan di output.
package com.aliware.edas; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @RestController public class EchoController { @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET) public String echo(@PathVariable String string) { return string; } }Buat file bernama application.properties di direktori proyek src\main\resources. Tambahkan konfigurasi berikut ke file application.properties untuk menentukan titik akhir server Nacos.
spring.application.name=service-provider server.port=18081 spring.cloud.nacos.discovery.server-addr=mse.XX.nacos.mse.aliyuncs.com:8848 #Konfigurasikan namespace kustom #spring.cloud.nacos.discovery.namespace={namespaceId}Di halaman Instances, Anda dapat melihat titik akhir publik dari Pusat Registrasi Nacos MSE. Titik akhir publik berada dalam format mse.XX.nacos.mse.aliyuncs.com.
PentingJika mesin MSE Zookeeper atau Eureka digunakan sebagai registri layanan, Anda harus mengganti kode registri layanan dengan kode registri ZooKeeper atau Eureka. Untuk informasi lebih lanjut, lihat Catatan penggunaan.
Periksa apakah aplikasi berhasil didaftarkan.
Jalankan fungsi main dari ProviderApplication di proyek nacos-service-provider untuk memulai penyedia.
Masuk ke Konsol MSE, dan pilih wilayah di bilah navigasi atas.
Di panel navigasi sisi kiri, pilih Microservices Registry > Instances. Klik nama instance.
Service ManagementServices
Di halaman Services, periksa apakah aplikasi berhasil didaftarkan.
Buat konsumen
Bagian ini menjelaskan fitur registrasi layanan dan cara mengonfigurasi RestTemplate dan FeignClient untuk bekerja dengan server Nacos.
Buat proyek Maven bernama nacos-service-consumer.
Tambahkan dependensi berikut ke file pom.xml.
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> <relativePath/> </parent> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.1.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </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>Buat package bernama com.aliware.edas di direktori proyek src\main\java.
Di dalam paket com.aliware.edas, konfigurasikan RestTemplate dan FeignClient.
Di dalam paket com.aliware.mse, buat kelas antarmuka bernama EchoService, tambahkan anotasi
@FeignClient, lalu tentukan URL HTTP dan metode HTTP.package com.aliware.edas; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @FeignClient(name = "service-provider") public interface EchoService { @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET) String echo(@PathVariable("str") String str); }Di dalam paket com.aliware.edas, buat kelas boot bernama ConsumerApplication dan tambahkan konfigurasi terkait.
Tambahkan anotasi
@EnableDiscoveryClientuntuk mengaktifkan fitur registrasi dan penemuan layanan.Tambahkan anotasi
@EnableFeignClientsuntuk mengaktifkan FeignClient.Tambahkan anotasi
@LoadBalanceduntuk mengintegrasikan RestTemplate dengan fitur penemuan layanan.
package com.aliware.edas; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.Bean; import org.springframework.web.client.RestTemplate; @SpringBootApplication @EnableDiscoveryClient @EnableFeignClients public class ConsumerApplication { @LoadBalanced @Bean public RestTemplate restTemplate() { return new RestTemplate(); } public static void main(String[] args) { SpringApplication.run(ConsumerApplication.class, args); } }
Di dalam paket com.aliware.edas, buat kelas bernama TestController untuk mendemonstrasikan dan menguji fitur penemuan layanan.
package com.aliware.edas; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; @RestController public class TestController { @Autowired private RestTemplate restTemplate; @Autowired private EchoService echoService; @RequestMapping(value = "/echo-rest/{str}", method = RequestMethod.GET) public String rest(@PathVariable String str) { return restTemplate.getForObject("http://service-provider/echo/" + str, String.class); } @RequestMapping(value = "/echo-feign/{str}", method = RequestMethod.GET) public String feign(@PathVariable String str) { return echoService.echo(str); } }Buat file bernama application.properties di direktori proyek src\main\resources. Tambahkan konfigurasi berikut ke file application.properties untuk menentukan titik akhir server Nacos.
spring.application.name=service-consumer server.port=18082 spring.cloud.nacos.discovery.server-addr=mse.XX.nacos.mse.aliyuncs.com:8848 #Konfigurasikan namespace kustom #spring.cloud.nacos.discovery.namespace={namespaceId}Di halaman Instances, Anda dapat melihat titik akhir publik dari Pusat Registrasi Nacos MSE. Titik akhir publik berada dalam format
mse.XX.nacos.mse.aliyuncs.com.PentingJika mesin MSE Zookeeper atau Eureka digunakan sebagai registri layanan, Anda harus mengganti kode registri layanan dengan kode registri ZooKeeper atau Eureka. Untuk informasi lebih lanjut, lihat Catatan penggunaan.
Periksa apakah aplikasi berhasil didaftarkan.
Jalankan fungsi main dari ConsumerApplication di proyek nacos-service-consumer untuk memulai konsumen.
Masuk ke Konsol MSE, dan pilih wilayah di bilah navigasi atas.
Di panel navigasi sisi kiri, pilih Microservices Registry > Instances. Klik nama instance.
Service ManagementServices
Di halaman Services, periksa apakah aplikasi berhasil didaftarkan.
Uji layanan di lingkungan lokal
Gunakan konsumen untuk memanggil penyedia di lingkungan lokal.
Di Linux, UNIX, atau macOS, jalankan perintah berikut:
curl http://127.0.0.1:18082/echo-rest/rest-rest curl http://127.0.0.1:18082/echo-feign/feign-restDi Windows, masukkan http://127.0.0.1:18082/echo-rest/rest-rest dan http://127.0.0.1:18082/echo-feign/feign-rest di bilah alamat browser dan tekan Enter.
Gambar berikut menunjukkan bahwa panggilan layanan berhasil.

FAQ
Apa yang harus saya lakukan jika saya tidak dapat melihat informasi layanan di konsol MSE setelah menjalankan aplikasi mikrolayanan Spring Cloud saya?
Aplikasi mikrolayanan Spring Cloud Anda dikembangkan di lingkungan lokal dan didaftarkan dengan Pusat Registrasi Nacos MSE. Untuk menyelesaikan masalah ini, konfigurasikan daftar putih alamat IP publik untuk mengizinkan aplikasi Anda mengakses Pusat Registrasi Nacos MSE. Untuk informasi lebih lanjut, lihat Konfigurasikan daftar putih alamat IP publik.
Secara default, daftar putih alamat IP diatur ke 127.0.0.1/32, yang menunjukkan bahwa tidak ada alamat IP yang diizinkan untuk mengakses registri layanan.
Versi Spring Cloud mana yang didukung oleh MSE?
Versi Spring Cloud Alibaba untuk Spring Cloud Greenwich adalah 2.1.1.RELEASE.
Versi Spring Cloud Alibaba untuk Spring Cloud Finchley adalah 2.0.1.RELEASE.
Versi Spring Cloud Alibaba untuk Spring Cloud Edgware adalah 1.5.1.RELEASE.
Spring Cloud Edgware sudah tidak digunakan lagi. Kami menyarankan agar Anda tidak menggunakan Spring Cloud Edgware untuk mengembangkan aplikasi.