Topik ini menjelaskan cara membuat registrasi layanan di Microservices Engine (MSE) untuk aplikasi mikro Dubbo. Aplikasi mikro Dubbo berfungsi sebagai penyedia dan konsumen. Registrasi layanan menggunakan mesin ZooKeeper, Eureka, atau Nacos, mendukung pendaftaran dan penemuan layanan aplikasi, serta memungkinkan konsumen memanggil penyedia.
Prasyarat
Sebelum membuat registrasi layanan, pastikan langkah-langkah berikut telah dilakukan:
Maven telah diunduh dan variabel lingkungan telah dikonfigurasi.
Mesin Nacos telah dibuat. Untuk informasi lebih lanjut, lihat Buat Mesin Nacos.
Namespace telah dibuat. Untuk informasi lebih lanjut, lihat Buat Namespace. Dalam topik ini, namespace default Public digunakan.
Buat penyedia
Buat proyek aplikasi penyedia di lingkungan lokal, tambahkan dependensi, konfigurasikan pendaftaran dan penemuan layanan, serta tentukan Nacos sebagai registrasi layanan.
Buat proyek Maven dan tambahkan dependensi.
Buat proyek Maven di IDE seperti IntelliJ IDEA atau Eclipse.
Tambahkan dependensi Dubbo dan nacos-client ke file pom.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>
Kembangkan penyedia layanan Dubbo.
Semua layanan Dubbo diekspos sebagai antarmuka.
Buat package bernama
com.alibaba.msedi direktorisrc/main/java.Buat antarmuka bernama IHelloService yang berisi metode SayHello di paket
com.alibaba.mse.package com.alibaba.mse; public interface IHelloService { String sayHello(String str); }Buat kelas bernama IHelloServiceImpl di paket com.alibaba.mse untuk mengimplementasikan antarmuka.
package com.alibaba.mse; public class IHelloServiceImpl implements IHelloService { public String sayHello(String str) { return "hello " + str; } }
Konfigurasikan layanan Dubbo.
Buat file bernama provider.xml di direktori
src/main/resourcesdan buka file tersebut.Di file
provider.xml, tambahkan ruang nama XML (xmlns) dan instance skema XML (xmlns:xsi) untuk kerangka kerja Spring, serta tambahkan ruang nama XML (xmlns:dubbo) dan instance skema XML (xsi:schemaLocation) untuk kerangka kerja Dubbo.<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">Di file provider.xml, ekspos antarmuka dan kelas sebagai layanan Dubbo.
<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"/>Di file provider.xml, tentukan server Nacos lokal sebagai registrasi layanan.
<dubbo:registry address="nacos://mse.XX.nacos.mse.aliyuncs.com:8848" />CatatanJika Anda ingin menggunakan titik akhir publik dari instance Nacos, konfigurasikan daftar putih kosong. Untuk informasi lebih lanjut, lihat Konfigurasikan Daftar Putih Alamat IP Publik.
Temukan instance Nacos dalam daftar instance, dan lihat titik akhir publik dari instance Nacos di kolom Access Method. Titik akhir publik berada dalam format
mse.XX.nacos.mse.aliyuncs.com.CatatanJika registri layanan Anda adalah instance MSE Zookeeper, Anda harus mengganti kode registri layanan pada langkah ini dengan kode instance ZooKeeper. Untuk informasi lebih lanjut, lihat Catatan Penggunaan.
Mulai layanan.
Buat kelas bernama Provider di paket com.alibaba.mse dan muat konteks Spring ke fungsi utama kelas Provider berdasarkan kode berikut untuk mengekspos 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(); } }Panggil fungsi utama kelas Provider untuk memulai layanan Dubbo.
Verifikasi hasilnya.
Masuk ke Konsol MSE.
Di panel navigasi sisi kiri, pilih . Di halaman Instances, klik instance MSE yang Anda buat.
Konfigurasikan daftar putih untuk instance MSE.
Jika Anda tidak menambahkan alamat IP atau blok CIDR ke daftar putih, semua alamat IP diizinkan untuk mengakses instance MSE.
Di panel navigasi sisi kiri halaman detail instance, pilih . Jika layanan penyedia ada dalam daftar layanan, layanan tersebut telah didaftarkan dengan instance MSE.
Buat konsumen
Buat proyek aplikasi konsumen Spring Boot di lingkungan lokal, tambahkan dependensi, dan tambahkan konfigurasi yang digunakan untuk berlangganan layanan Dubbo.
Buat proyek Maven bernama spring-boot-dubbo-consumer dan tambahkan dependensi.
Buat proyek Maven di IDE seperti IntelliJ IDEA atau Eclipse.
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>Buat konsumen Dubbo.
Buat paket bernama
com.alibaba.msedi direktorisrc/main/java.Buat antarmuka bernama
IHelloServiceyang berisi metodeSayHellodi paketcom.alibaba.mse.package com.alibaba.mse; public interface IHelloService { String sayHello(String str); }
Panggil layanan Dubbo jarak jauh di kontroler menggunakan kode berikut.
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); } }CatatanAnotasi Reference adalah com.alibaba.dubbo.config.annotation.Reference.
Tambahkan konfigurasi berikut ke file konfigurasi
application.properties.server.port=8080 dubbo.application.name=dubbo-consumer-demo dubbo.registry.address=nacos://mse.XX.nacos.mse.aliyuncs.com:8848CatatanNilai dari
dubbo.registry.addressharus dimulai dengannacos://. Alamat IP dan nomor port yang mengikuti nacos:// mewakili titik akhir server MSE Nacos.Buat dan mulai kelas entri Spring Boot
SpringBootDubboConsumerApplication.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 hasilnya.
Masuk ke Konsol MSE.
Di panel navigasi sisi kiri, pilih . Di halaman Instances, klik instance MSE yang Anda buat.
Konfigurasikan daftar putih untuk instance MSE.
Jika Anda tidak menambahkan alamat IP atau blok CIDR ke daftar putih, semua alamat IP diizinkan untuk mengakses instance MSE.
Di panel navigasi sisi kiri halaman detail instance, pilih . Jika layanan konsumen ada dalam daftar layanan, pendaftaran layanan berhasil.
Verifikasi hasil
Jalankan perintah curl http://localhost:8080/sayHello/mse. Jika Hello, mse dikembalikan, konsumen berhasil memanggil penyedia.
`curl http://localhost:8080/sayHello/mse`
`Hello, mse`