Microservices Engine (MSE) menyediakan registri layanan terkelola berbasis Nacos, ZooKeeper, atau Eureka. Panduan ini memandu Anda mendaftarkan penyedia (provider) dan konsumen (consumer) Dubbo ke instans MSE Nacos agar konsumen dapat menemukan dan memanggil penyedia tersebut.
Cara kerja
Penyedia Dubbo dimulai dan mendaftarkan antarmuka layanannya ke instans Nacos pada MSE.
Konsumen Dubbo berlangganan ke instans Nacos yang sama untuk menemukan penyedia yang tersedia.
Konsumen memanggil penyedia melalui protokol RPC Dubbo menggunakan antarmuka layanan tersebut.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Menginstal Maven dan mengonfigurasikannya dalam variabel lingkungan Anda.
Memiliki instans engine MSE Nacos. Untuk detailnya, lihat Buat engine Nacos.
Memiliki namespace di instans Nacos. Untuk detailnya, lihat Buat namespace.
Panduan ini menggunakan namespace Public bawaan.
Siapkan penyedia
Buat penyedia Dubbo yang mengekspos antarmuka layanan dan mendaftarkannya ke instans MSE Nacos.
Langkah 1: Buat proyek Maven dan tambahkan dependensi
Buat proyek Maven di IDE Anda (IntelliJ IDEA, Eclipse, atau yang serupa).
Tambahkan dependensi
dubbodannacos-clientke filepom.xml:<dependencies> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> <version>2.7.9</version> </dependency> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>1.4.2</version> </dependency> </dependencies>
Langkah 2: Definisikan dan implementasikan antarmuka layanan
Layanan Dubbo diekspos sebagai antarmuka Java. Definisikan antarmuka terlebih dahulu, lalu berikan implementasinya.
Buat package bernama
com.alibaba.msedi direktorisrc/main/java.Di package
com.alibaba.mse, buat antarmukaIHelloServicedengan metodesayHello:package com.alibaba.mse; public interface IHelloService { String sayHello(String str); }Buat kelas
IHelloServiceImpldi package yang sama untuk mengimplementasikan antarmuka tersebut:package com.alibaba.mse; public class IHelloServiceImpl implements IHelloService { public String sayHello(String str) { return "hello " + str; } }
Langkah 3: Konfigurasikan layanan Dubbo
Buat file
provider.xmldi direktorisrc/main/resources.Tambahkan deklarasi namespace Spring dan Dubbo XML:
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">Ekspos antarmuka sebagai layanan Dubbo dan arahkan registri ke instans MSE Nacos Anda. Ganti
mse.XX.nacos.mse.aliyuncs.comdengan titik akhir aktual instans MSE Nacos Anda. Temukan titik akhir ini di kolom Access Method pada halaman daftar instans di Konsol MSE.CatatanUntuk menggunakan titik akhir publik, konfigurasikan daftar putih kosong terlebih dahulu. Untuk detailnya, lihat Configure a public IP address whitelist.
CatatanJika registrasi layanan Anda adalah instans MSE ZooKeeper, ganti alamat registri tersebut sesuai kebutuhan. Untuk detailnya, lihat Usage notes.
<dubbo:application name="demo-provider"/> <dubbo:protocol name="dubbo" port="28082"/> <dubbo:service interface="com.alibaba.mse.IHelloService" ref="helloService"/> <bean id="helloService" class="com.alibaba.mse.IHelloServiceImpl"/> <!-- Ganti mse.XX.nacos.mse.aliyuncs.com dengan titik akhir instans Nacos Anda --> <dubbo:registry address="nacos://mse.XX.nacos.mse.aliyuncs.com:8848" />
Langkah 4: Mulai penyedia
Buat kelas
Providerdi packagecom.alibaba.mse. Kelas ini memuat konteks Spring dan menjalankan layanan Dubbo:package com.alibaba.mse; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Provider { public static void main(String[] args) throws Exception { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"provider.xml"}); context.start(); System.in.read(); } }Jalankan metode
maindari kelasProvideruntuk memulai layanan.
Verifikasi pendaftaran penyedia
Masuk ke Konsol MSE.
Di panel navigasi sebelah kiri, pilih Microservices Registry > Instances, lalu klik instans MSE yang dituju.
Konfigurasikan daftar putih untuk instans tersebut. Jika tidak ada alamat IP atau Blok CIDR yang ditambahkan ke daftar putih, semua alamat IP diizinkan mengakses instans tersebut.
Di panel navigasi sebelah kiri halaman detail instans, pilih Service Management > Services. Jika layanan penyedia muncul dalam daftar, pendaftaran berhasil.
Siapkan konsumen
Buat aplikasi konsumen Spring Boot yang berlangganan ke layanan Dubbo melalui instans MSE Nacos yang sama.
Langkah 1: Buat proyek Maven dan tambahkan dependensi
Buat proyek Maven bernama
spring-boot-dubbo-consumerdi IDE Anda.Tambahkan dependensi
dubbodannacos-clientke filepom.xml:<dependencies> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> <version>2.7.9</version> </dependency> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>1.4.2</version> </dependency> </dependencies>
Langkah 2: Definisikan antarmuka layanan
Buat package bernama
com.alibaba.msedi direktorisrc/main/java.Buat antarmuka
IHelloServiceyang sama seperti yang digunakan oleh penyedia:package com.alibaba.mse; public interface IHelloService { String sayHello(String str); }
Langkah 3: Buat controller untuk memanggil penyedia
Buat kelas
DemoConsumerControllerdi packagecom.alibaba.mse. Gunakan anotasi@Referenceuntuk menginjeksi layanan Dubbo remote:CatatanAnotasi
@Referenceadalahcom.alibaba.dubbo.config.annotation.Reference.package com.alibaba.mse; import com.alibaba.dubbo.config.annotation.Reference; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class DemoConsumerController { @Reference private IHelloService demoService; @RequestMapping("/sayHello/{name}") public String sayHello(@PathVariable String name) { return demoService.sayHello(name); } }
Langkah 4: Konfigurasikan alamat registri
Tambahkan properti berikut ke file application.properties:
server.port=8080
dubbo.application.name=dubbo-consumer-demo
dubbo.registry.address=nacos://mse.XX.nacos.mse.aliyuncs.com:8848Ganti mse.XX.nacos.mse.aliyuncs.com dengan titik akhir instans MSE Nacos Anda.
Nilai dubbo.registry.address harus diawali dengan nacos://, diikuti oleh titik akhir dan port instans MSE Nacos.
Langkah 5: Mulai konsumen
Buat kelas entri Spring Boot
SpringBootDubboConsumerApplicationdan jalankan aplikasi:package com.alibaba.mse; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringBootDubboConsumerApplication { public static void main(String[] args) { SpringApplication.run(SpringBootDubboConsumerApplication.class, args); } }
Verifikasi pendaftaran konsumen
Masuk ke Konsol MSE.
Di panel navigasi sebelah kiri, pilih Microservices Registry > Instances, lalu klik instans MSE yang dituju.
Konfigurasikan daftar putih untuk instans tersebut. Jika tidak ada alamat IP atau Blok CIDR yang ditambahkan ke daftar putih, semua alamat IP diizinkan mengakses instans tersebut.
Di panel navigasi sebelah kiri halaman detail instans, pilih Service Management > Services. Jika layanan konsumen muncul dalam daftar, pendaftaran berhasil.
Verifikasi pemanggilan layanan end-to-end
Dengan penyedia dan konsumen berjalan, uji apakah konsumen dapat memanggil penyedia.
Jalankan perintah berikut:
curl http://localhost:8080/sayHello/mseOutput yang diharapkan:
Hello, mseTanggapan ini mengonfirmasi bahwa konsumen berhasil menemukan dan memanggil penyedia melalui registri layanan MSE Nacos.