Saat Anda mengonfigurasi aplikasi Spring Cloud dengan titik akhir instans MSE Nacos, aplikasi tersebut secara otomatis terdaftar ke registri layanan MSE Nacos saat startup. Pendaftaran ini memungkinkan penemuan layanan, manajemen konfigurasi, dan panggilan antarlayanan. Topik ini menjelaskan cara menghubungkan aplikasi Anda ke registri tersebut.
Prasyarat
Unduh dan instal Maven serta konfigurasikan variabel lingkungannya.
Buat namespace. Tutorial ini menggunakan namespace default,
Public.
Untuk mengakses MSE Nacos melalui jaringan publik, penyedia layanan dan konsumen layanan harus memiliki akses jaringan publik. Anda juga harus menambahkan alamat IP aplikasi Anda ke daftar putih instans MSE Nacos. Untuk informasi selengkapnya, lihat Konfigurasi daftar putih alamat IP publik.
Buat penyedia layanan
Buat aplikasi penyedia layanan secara lokal, tambahkan dependensi yang diperlukan, aktifkan pendaftaran dan penemuan layanan, serta tentukan instans MSE Nacos sebagai registri layanan.
Buat proyek Maven bernama nacos-service-provider.
Dalam file pom.xml, tambahkan dependensi berikut.
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>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>Rilis Spring Cloud Greenwich sesuai dengan versi Spring Cloud Alibaba 2.1.1.RELEASE.
Jika Anda menggunakan rilis Spring Cloud Finchley, versi Spring Cloud Alibaba yang sesuai adalah 2.0.1.RELEASE.
Jika Anda menggunakan rilis Spring Cloud Edgware, versi Spring Cloud Alibaba yang sesuai adalah 1.5.1.RELEASE.
PentingSiklus hidup Spring Cloud Edgware telah dihentikan. Kami menyarankan agar Anda tidak menggunakan versi ini untuk aplikasi baru.
Dalam direktori
src\main\java, buat package bernamacom.aliware.edas.Dalam package
com.aliware.edas, buat kelas bootstrap penyedia layanan ProviderApplication dan tambahkan kode berikut.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
@EnableDiscoveryClientmengaktifkan fungsionalitas pendaftaran dan penemuan layanan untuk aplikasi.Dalam package
com.aliware.edas, buat EchoController. Metode ini mengambil parameter dari path URL dan mengembalikannya dalam tanggapan.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; } }Dalam direktori
src\main\resources, buat file bernamaapplication.properties. Dalam file tersebut, tambahkan konfigurasi berikut dan tentukan 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 # Untuk menggunakan namespace kustom, hapus komentar dan konfigurasikan baris berikut: #spring.cloud.nacos.discovery.namespace={namespaceId}Pada halaman Instances, Anda dapat melihat titik akhir publik instans MSE Nacos. Formatnya adalah mse.XX.nacos.mse.aliyuncs.com.
PentingJika Anda menggunakan instans MSE ZooKeeper atau Eureka sebagai registri layanan, gantilah konfigurasi khusus Nacos pada langkah ini dengan konfigurasi yang sesuai untuk ZooKeeper atau Eureka. Untuk informasi selengkapnya, lihat Catatan penggunaan kluster MSE.
Verifikasi bahwa aplikasi berhasil terdaftar.
Jalankan metode main dari ProviderApplication dalam proyek nacos-service-provider untuk menjalankan aplikasi.
-
Masuk ke Konsol MSE, lalu pilih wilayah di bilah navigasi atas.
-
Di panel navigasi kiri, pilih Microservices Registry > Instances. Klik nama instans tersebut.
-
Service ManagementServices
Pada halaman Services, verifikasi bahwa aplikasi service-provider muncul dalam daftar.
Buat konsumen layanan
Bagian ini menjelaskan cara mendaftarkan konsumen layanan dan menggunakan penemuan layanan Nacos dengan dua klien: RestTemplate dan FeignClient.
Buat proyek Maven bernama nacos-service-consumer.
Dalam file pom.xml, tambahkan dependensi berikut.
<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>Dalam direktori
src\main\java, buat package bernamacom.aliware.edas.Dalam package
com.aliware.edas, konfigurasikan RestTemplate dan FeignClient.Dalam
com.aliware.edas, buat kelas antarmuka bernama EchoService, tambahkan anotasi@FeignClient, lalu konfigurasikan URL HTTP dan metode HTTP yang sesuai.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); }Dalam
com.aliware.edas, buat kelas bootstrap ConsumerApplication dan tambahkan konfigurasi yang relevan.Gunakan anotasi
@EnableDiscoveryClientuntuk mengaktifkan pendaftaran dan penemuan layanan.Gunakan anotasi
@EnableFeignClientsuntuk mengaktifkan FeignClient.Gunakan anotasi
@LoadBalanceduntuk mengintegrasikan RestTemplate dengan 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); } }
Dalam package
com.aliware.edas, buat kelas bernama TestController untuk mendemonstrasikan dan memverifikasi 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); } }Dalam direktori
src\main\resources, buat file bernama application.properties. Dalam file tersebut, tambahkan konfigurasi berikut untuk menentukan alamat registri layanan Nacos.spring.application.name=service-consumer server.port=18082 spring.cloud.nacos.discovery.server-addr=mse.XX.nacos.mse.aliyuncs.com:8848 # Untuk menggunakan namespace kustom, hapus komentar dan konfigurasikan baris berikut: #spring.cloud.nacos.discovery.namespace={namespaceId}Pada halaman Instances, Anda dapat melihat titik akhir publik instans MSE Nacos. Formatnya adalah
mse.XX.nacos.mse.aliyuncs.com.PentingJika Anda menggunakan instans MSE ZooKeeper atau Eureka sebagai registri layanan, gantilah konfigurasi khusus Nacos pada langkah ini dengan konfigurasi yang sesuai untuk ZooKeeper atau Eureka. Untuk informasi selengkapnya, lihat Catatan penggunaan.
Verifikasi bahwa aplikasi berhasil terdaftar.
Jalankan metode main dari ConsumerApplication dalam proyek nacos-service-consumer untuk menjalankan aplikasi.
-
Masuk ke Konsol MSE, lalu pilih wilayah di bilah navigasi atas.
-
Di panel navigasi kiri, pilih Microservices Registry > Instances. Klik nama instans tersebut.
-
Service ManagementServices
Pada halaman Services, verifikasi bahwa aplikasi service-consumer muncul dalam daftar.
Pengujian lokal
Uji panggilan layanan dari konsumen layanan ke penyedia layanan secara lokal.
Pada Linux, Unix, atau macOS, gunakan perintah berikut untuk melakukan panggilan layanan.
curl http://127.0.0.1:18082/echo-rest/rest-rest curl http://127.0.0.1:18082/echo-feign/feign-restPada Windows, masukkan
http://127.0.0.1:18082/echo-rest/rest-restdanhttp://127.0.0.1:18082/echo-feign/feign-restdi bilah alamat browser Anda.Tanggapan yang berhasil akan mengembalikan string yang diberikan dalam URL. Perintah pertama mengembalikan
rest-restdan yang kedua mengembalikanfeign-rest, yang mengonfirmasi keberhasilan panggilan layanan.consumer consumes Provider
FAQ
Layanan tidak terlihat di Konsol MSE
Anda harus mengonfigurasi daftar putih untuk akses aplikasi Anda. Untuk informasi selengkapnya, lihat Konfigurasi daftar putih alamat IP publik.
Secara default, daftar putih MSE diatur ke 127.0.0.1/32, sehingga memblokir semua akses eksternal.
Versi Spring Cloud yang didukung
Untuk Spring Cloud Greenwich, versi Spring Cloud Alibaba yang sesuai adalah 2.1.1.RELEASE.
Untuk Spring Cloud Finchley, versi Spring Cloud Alibaba yang sesuai adalah 2.0.1.RELEASE.
Untuk Spring Cloud Edgware, versi Spring Cloud Alibaba yang sesuai adalah 1.5.1.RELEASE.
Siklus hidup Spring Cloud Edgware telah dihentikan. Kami menyarankan agar Anda tidak menggunakan versi ini untuk aplikasi baru.