All Products
Search
Document Center

Microservices Engine:Buat registrasi layanan untuk aplikasi Dubbo di MSE

Last Updated:Aug 26, 2026

Dalam tutorial ini, Anda membuat registrasi layanan di Microservices Engine (MSE) untuk aplikasi Apache Dubbo dan menggunakannya untuk pendaftaran serta penemuan layanan. Di akhir tutorial, konsumen Dubbo yang berjalan di mesin lokal Anda memanggil penyedia yang ditemukannya melalui registri Nacos MSE.

Arsitektur

Aplikasi contoh merupakan aplikasi layanan mikro Dubbo yang terdiri dari penyedia dan konsumen. Kedua peran tersebut dikembangkan sebagai dua proyek Maven terpisah di mesin lokal Anda dan keduanya terhubung ke instans registri yang sama di MSE melalui titik akhir publiknya.

  • Proyek penyedia — Mengekspos antarmuka com.alibaba.mse.IHelloService sebagai layanan Dubbo pada Port 28082 dan mendaftarkan layanan tersebut ke instans registri di MSE.

  • Proyek konsumen — Berlangganan ke com.alibaba.mse.IHelloService melalui instans registri yang sama dan memanggil penyedia.

  • Instans registri di MSE — Berperan sebagai registrasi layanan tempat penyedia mendaftar dan konsumen berlangganan.

Jenis registri

MSE dapat menghost registri layanan Nacos, ZooKeeper, atau Eureka untuk aplikasi Dubbo. Tutorial ini menggunakan MSE Nacos, dan setiap contoh konfigurasi dalam topik ini ditujukan untuk instans MSE Nacos.

  • Nacos (digunakan dalam tutorial ini) — Atur alamat registri Dubbo ke titik akhir publik instans MSE Nacos Anda. Tidak diperlukan konfigurasi khusus registri lainnya.

  • ZooKeeper — Jika Anda menggunakan MSE ZooKeeper sebagai registrasi layanan Anda, ganti kode registri pada Langkah 2 dengan kode yang sesuai untuk ZooKeeper. Untuk informasi lebih lanjut, lihat Catatan penggunaan.

Prasyarat

  • Unduh Maven dan atur variabel lingkungan.

  • IDE, seperti IntelliJ IDEA atau Eclipse, telah terinstal di mesin lokal Anda.

  • Instans MSE Nacos. Untuk petunjuknya, lihat Buat instans engine Nacos.

  • Buat namespace. Tutorial ini menggunakan namespace default, Public.

Langkah 1: Buat proyek penyedia dan definisikan layanan

Pada langkah ini, Anda membuat proyek Maven untuk penyedia dan mendefinisikan layanan yang diekspos oleh penyedia. Di Dubbo, semua layanan disediakan sebagai antarmuka.

  1. Di IDE Anda, buat proyek Maven untuk penyedia.

  2. 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>
  3. Di direktori src/main/java, buat paket bernama com.alibaba.mse.

  4. Di com.alibaba.mse, buat antarmuka bernama IHelloService yang berisi metode sayHello.

    package com.alibaba.mse;
    
    public interface IHelloService {
        String sayHello(String str);
    }
  5. Di com.alibaba.mse, buat kelas bernama IHelloServiceImpl yang mengimplementasikan antarmuka tersebut.

    package com.alibaba.mse;
    
    public class IHelloServiceImpl implements IHelloService {
        public String sayHello(String str) {
            return "hello " + str;
        }
    }

Langkah 2: Konfigurasikan penyedia untuk menggunakan MSE Nacos sebagai registri

Pada langkah ini, Anda membuat file provider.xml, yang mengekspos IHelloService sebagai layanan Dubbo dan mengarahkan penyedia ke instans MSE Nacos. Pertama-tama, dapatkan titik akhir instans tersebut karena konfigurasi registri memerlukannya.

  1. Masuk ke Konsol MSE dan lihat titik akhir publik instans Nacos yang telah Anda buat di MSE. Titik akhir publik ditampilkan di kolom Access Method pada daftar instans dan berformat mse.XX.nacos.mse.aliyuncs.com.

  2. Di direktori src/main/resources proyek penyedia, buat file bernama provider.xml.

  3. Tambahkan konfigurasi berikut ke provider.xml. Ganti mse.XX.nacos.mse.aliyuncs.com dengan titik akhir publik instans Nacos Anda.

    <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">
    
        <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"/>
    
        <dubbo:registry address="nacos://mse.XX.nacos.mse.aliyuncs.com:8848" />
    </beans>

Tabel berikut menjelaskan konfigurasi dalam provider.xml.

ElemenDeskripsi
xmlns, xmlns:xsi, xmlns:dubbo, dan xsi:schemaLocationMendeklarasikan Spring XML Namespace (xmlns) dan XML Schema Instance (xmlns:xsi), serta Dubbo Namespace (xmlns:dubbo) dan Schema Instance (xsi:schemaLocation).
dubbo:applicationNama aplikasi penyedia. Contoh ini menggunakan demo-provider.
dubbo:protocolMenerbitkan layanan melalui protokol dubbo pada Port 28082.
dubbo:service dan beanMengekspos antarmuka IHelloService dan kelas implementasi IHelloServiceImpl sebagai layanan Dubbo.
dubbo:registryMenentukan instans Nacos yang Anda buat di MSE sebagai registrasi layanan. Alamatnya adalah titik akhir publik instans tersebut.

Langkah 3: Izinkan penyedia mengakses instans MSE

Penyedia mengakses registri melalui titik akhir publik instans MSE, sehingga daftar putih instans tersebut harus mengizinkan lalu lintas tersebut. Selesaikan langkah ini sebelum menjalankan penyedia. Jika tidak, pendaftaran akan gagal.

  1. Di Konsol MSE, pada panel navigasi kiri, pilih Microservices Registry > Instances. Pada halaman Instances, klik instans MSE yang telah Anda buat.

  2. Kosongkan daftar putih instans tersebut. Jika Anda tidak menentukan alamat IP atau mask apa pun, semua alamat dapat mengakses instans tersebut. Tutorial ini menggunakan daftar putih kosong sebagai contoh. Untuk informasi lebih lanjut, lihat Atur daftar putih.

Peringatan

Daftar putih kosong memungkinkan semua alamat mengakses instans MSE.

Langkah 4: Jalankan penyedia dan verifikasi pendaftaran

Pada langkah ini, Anda menjalankan penyedia dan mengonfirmasi di Konsol MSE bahwa layanan telah terdaftar di instans Nacos.

  1. Di com.alibaba.mse, buat kelas bernama Provider. Gunakan kode berikut untuk memuat konteks Spring di metode main Provider dan mengekspos layanan Dubbo yang telah Anda konfigurasikan.

    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();
        }
    }
  2. Jalankan metode main Provider untuk memulai layanan. Biarkan proses tetap berjalan hingga Anda menyelesaikan tutorial ini, karena konsumen akan memanggil proses ini.

  3. Di Konsol MSE, pada halaman detail instans MSE Anda, pilih Service Management > Services pada panel navigasi kiri.

  4. Verifikasi bahwa daftar layanan berisi com.alibaba.mse.IHelloService, yaitu antarmuka yang diekspos oleh aplikasi demo-provider.

Jangan lanjutkan ke langkah berikutnya hingga antarmuka tersebut muncul di daftar layanan. Jika antarmuka tidak muncul, periksa konfigurasi berikut:

  • Daftar putih — Daftar putih instans MSE mengizinkan alamat mesin lokal Anda. Daftar putih kosong mengizinkan semua alamat.

  • Alamat registri — Alamat dubbo:registry di provider.xml menggunakan titik akhir publik instans Anda, bukan placeholder mse.XX.nacos.mse.aliyuncs.com.

  • Jenis registri — Alamat dubbo:registry menggunakan skema jenis instans yang Anda buat, seperti nacos:// untuk instans MSE Nacos.

Langkah 5: Buat konsumen dan berlangganan ke layanan

Pada langkah ini, Anda membuat proyek Maven kedua untuk konsumen, berlangganan ke com.alibaba.mse.IHelloService melalui instans MSE Nacos yang sama, dan mengimplementasikan kelas yang memanggil penyedia.

  1. Di IDE Anda, buat proyek Maven kedua untuk konsumen.

  2. Tambahkan dependensi dubbo dan nacos-client ke file pom.xml proyek konsumen. Dependensinya identik dengan proyek penyedia pada Langkah 1.

  3. Di direktori src/main/java, buat paket com.alibaba.mse dan tambahkan antarmuka IHelloService yang telah Anda definisikan di Langkah 1. Konsumen mereferensikan layanan melalui antarmukanya, sehingga antarmuka tersebut harus ada di classpath proyek konsumen.

  4. Di direktori src/main/resources proyek konsumen, buat file bernama consumer.xml. Ganti mse.XX.nacos.mse.aliyuncs.com dengan titik akhir publik instans Nacos Anda, yaitu titik akhir yang sama yang telah Anda konfigurasikan di provider.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">
    
        <dubbo:application name="demo-consumer"/>
    
        <dubbo:registry address="nacos://mse.XX.nacos.mse.aliyuncs.com:8848" />
    
        <dubbo:reference id="helloService" interface="com.alibaba.mse.IHelloService"/>
    </beans>

    Elemen dubbo:registry mengarahkan konsumen ke registri yang sama dengan penyedia, dan elemen dubbo:reference berlangganan ke antarmuka com.alibaba.mse.IHelloService yang diekspos oleh penyedia.

  5. Di com.alibaba.mse, buat kelas bernama Consumer. Gunakan kode berikut untuk memuat konteks Spring di metode main Consumer dan memanggil metode sayHello dari layanan yang telah berlangganan.

    package com.alibaba.mse;
    
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class Consumer {
        public static void main(String[] args) throws Exception {
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"consumer.xml"});
            context.start();
            IHelloService helloService = (IHelloService) context.getBean("helloService");
            System.out.println(helloService.sayHello("mse"));
        }
    }

Langkah 6: Verifikasi pemanggilan dari konsumen ke penyedia

Pada langkah ini, Anda mengonfirmasi bahwa konsumen menemukan penyedia melalui registri MSE Nacos dan menerima tanggapan dari metode sayHello. Konsumen meneruskan mse sebagai argumen, dan IHelloServiceImpl mengembalikan hello diikuti argumen tersebut.

  1. Konfirmasi bahwa proses penyedia yang telah Anda jalankan di Langkah 4 masih berjalan.

  2. Jalankan metode main Consumer.

  3. Periksa output konsol proyek konsumen. Output berikut menunjukkan bahwa konsumen berhasil memanggil penyedia:

    hello mse

Jika pemanggilan gagal atau tidak ada output yang dikembalikan, periksa konfigurasi berikut:

  • Ketersediaan penyedia — Proses penyedia sedang berjalan, dan com.alibaba.mse.IHelloService muncul di daftar layanan instans MSE.

  • Alamat registri — Alamat dubbo:registry di consumer.xml adalah titik akhir publik yang telah Anda konfigurasikan di provider.xml.

  • Nama antarmuka — Antarmuka dalam elemen dubbo:reference pada consumer.xml cocok dengan com.alibaba.mse.IHelloService, yaitu antarmuka dalam elemen dubbo:service pada provider.xml.

  • Daftar putih — Daftar putih instans MSE mengizinkan alamat mesin lokal Anda.