全部产品
Search
文档中心

Enterprise Distributed Application Service:Gunakan Spring Boot untuk mengembangkan aplikasi mikro-layanan Dubbo

更新时间:Jul 02, 2025

Spring Boot menyederhanakan konfigurasi dan penyebaran aplikasi mikro-layanan. Anda dapat memilih registri dan mengelola konfigurasi sesuai kebutuhan bisnis Anda. Topik ini menjelaskan cara mengembangkan demo aplikasi mikro-layanan Dubbo berbasis Nacos dengan menggunakan anotasi Spring Boot. Jika Anda sudah memiliki aplikasi Dubbo yang dikembangkan menggunakan Spring Boot, Anda dapat melewati topik ini dan langsung mendeploy aplikasi ke Enterprise Distributed Application Service (EDAS).

Prasyarat

Sebelum menggunakan Spring Boot untuk mengembangkan aplikasi mikro-layanan Dubbo, pastikan operasi berikut telah selesai:

  • Unduh Maven dan konfigurasikan variabel lingkungan.

  • Unduh versi terbaru dari Nacos Server.

  • Mulai Nacos Server.

    1. Ekstrak paket Nacos Server yang diunduh.

    2. Pergi ke jalur nacos/bin dan gunakan salah satu metode berikut untuk memulai Nacos Server. Metode bervariasi berdasarkan OS Anda:

      • Linux, UNIX, atau macOS: Jalankan perintah sh startup.sh -m standalone.

      • Windows: Dalam file startup.cmd, konfigurasikan parameter MODE dengan menggunakan perintah set MODE="standalone". Kemudian, jalankan file tersebut.

  • (Opsional): Implementasikan interkoneksi antara aplikasi lokal dan cloud.

    Anda dapat menggunakan Cloud Native App Initializer untuk membuat proyek Spring Boot. Untuk informasi lebih lanjut, lihat Cloud Native App Initializer.

Proyek Demo

Anda dapat mengikuti langkah-langkah yang dijelaskan dalam topik ini untuk membangun proyek. Anda juga dapat mengunduh proyek demo yang digunakan dalam topik ini atau mengkloning proyek dengan menjalankan perintah git clone https://github.com/aliyun/alibabacloud-microservice-demo.git di Git.

Proyek yang dikloning berisi beberapa proyek demo. Proyek demo yang digunakan dalam topik ini disimpan di jalur alibabacloud-microservice-demo/microservice-doc-demo/dubbo-samples-spring-boot.

Buat penyedia layanan

  1. Buat proyek Maven bernama spring-boot-dubbo-provider.

  2. Tambahkan dependensi yang diperlukan ke file pom.xml.

    Kode contoh berikut menunjukkan cara menambahkan dependensi. Dalam contoh ini, Spring Boot 2.0.6.RELEASE digunakan.

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.0.6.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.3</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>1.1.1</version>
        </dependency>
    </dependencies>                   
  3. Kembangkan penyedia layanan Dubbo.

    Semua layanan Dubbo disediakan melalui antarmuka.

    1. Di jalur src/main/java, buat paket bernama com.alibaba.edas.boot.

    2. Di paket com.alibaba.edas.boot, buat antarmuka bernama IHelloService yang berisi metode bernama SayHello.

      package com.alibaba.edas.boot;
      public interface IHelloService {
      String sayHello(String str);
      }                                
    3. Di paket com.alibaba.edas.boot, buat kelas bernama IHelloServiceImpl untuk mengimplementasikan antarmuka.

      package com.alibaba.edas.boot;
      import com.alibaba.dubbo.config.annotation.Service;
      @Service
      public class IHelloServiceImpl implements IHelloService {
      public String sayHello(String name) {
        return "Hello, " + name + " (from Dubbo with Spring Boot)";
       }
      }                                
      Catatan

      Dalam kode contoh, Anotasi Service adalah kelas anotasi yang disediakan oleh Dubbo. Nama lengkap kelas anotasi adalah com.alibaba.dubbo.config.annotation.Service.

  4. Konfigurasikan layanan Dubbo.

    1. Di jalur src/main/resources, buat file application.properties atau application.yaml dan buka file tersebut.

    2. Tambahkan item konfigurasi berikut ke file application.properties atau application.yaml:

      # Paket dasar untuk memindai Komponen Dubbo (misalnya @Service , @Reference)
      dubbo.scan.basePackages=com.alibaba.edas.boot
      dubbo.application.name=dubbo-provider-demo
      dubbo.registry.address=nacos://127.0.0.1:8848                                
      Catatan
      • Anda harus menentukan nilai untuk tiga item konfigurasi dalam kode sebelumnya karena item konfigurasi tersebut tidak memiliki nilai default.

      • Nilai dari dubbo.scan.basePackages adalah paket-paket yang kode-kodenya berisi com.alibaba.dubbo.config.annotation.Service dan com.alibaba.dubbo.config.annotation.Reference. Pisahkan beberapa paket dengan koma (,).

      • Nilai dari dubbo.registry.address harus dimulai dengan nacos://, diikuti oleh alamat IP dan nomor port Nacos Server. Alamat IP dalam kode contoh adalah alamat lokal. Jika Anda menggunakan registri yang dikelola oleh Enterprise Distributed Application Service (EDAS), EDAS secara otomatis akan mengubah alamat IP contoh menjadi alamat IP registri. Jika Anda menggunakan registri Nacos yang dikelola sendiri, ubah nilai dari dubbo.registry.address dalam kode contoh menjadi alamat IP registri.

  5. Kembangkan dan mulai kelas entri Spring Boot DubboProvider.

        package com.alibaba.edas.boot;
    
        import org.springframework.boot.SpringApplication;
        import org.springframework.boot.autoconfigure.SpringBootApplication;
    
        @SpringBootApplication
        public class DubboProvider {
    
            public static void main(String[] args) {
                SpringApplication.run(DubboProvider.class, args);
            }
    
        }                        
  6. Masuk ke konsol Nacos dari http://127.0.0.1:8848. Di panel navigasi sisi kiri, klik Services untuk melihat daftar penyedia layanan.

    Dalam daftar, com.alibaba.edas.boot.IHelloService ditampilkan. Anda dapat memeriksa grup layanan dan alamat IP penyedia layanan.

Buat konsumen layanan

  1. Buat proyek Maven bernama spring-boot-dubbo-consumer.

  2. Tambahkan dependensi yang diperlukan ke file pom.xml.

    Kode contoh berikut menunjukkan cara menambahkan dependensi. Dalam contoh ini, Spring Boot 2.0.6.RELEASE digunakan.

        <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.0.6.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.3</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>1.1.1</version>
        </dependency>
    
    </dependencies>                        

    Jika Anda ingin menggunakan Spring Boot 1.x, gunakan Spring Boot 1.5.x dan com.alibaba.boot:dubbo-spring-boot-starter 0.1.0.

    Catatan

    Siklus hidup Spring Boot 1.x berakhir pada Agustus 2019. Kami merekomendasikan Anda menggunakan versi baru untuk mengembangkan aplikasi Anda.

  3. Kembangkan konsumen layanan Dubbo.

    1. Di jalur src/main/java, buat paket bernama com.alibaba.edas.boot.

    2. Di paket com.alibaba.edas.boot, buat antarmuka bernama IHelloService yang berisi metode bernama SayHello.

      package com.alibaba.edas.boot;
      
      public interface IHelloService {
       String sayHello(String str);
      }                                
  4. Kembangkan kode untuk panggilan layanan Dubbo.

    Kode contoh berikut menunjukkan cara memanggil layanan Dubbo jarak jauh dalam pengontrol:

    package com.alibaba.edas.boot;
    
    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);
            }
        }                        
    Catatan

    Anotasi Reference adalah com.alibaba.dubbo.config.annotation.Reference.

  5. Tambahkan item konfigurasi berikut ke file application.properties or application.yaml:

    dubbo.application.name=dubbo-consumer-demo
    dubbo.registry.address=nacos://127.0.0.1:8848                        
    Catatan
    • Anda harus menentukan nilai untuk dua item konfigurasi dalam kode sebelumnya karena item konfigurasi tersebut tidak memiliki nilai default.

    • Nilai dari dubbo.registry.address harus dimulai dengan nacos://, diikuti oleh alamat IP dan nomor port Nacos Server. Alamat IP dalam kode contoh adalah alamat lokal. Jika Nacos Server Anda ditempatkan di mesin lain, ubah alamat IP contoh menjadi alamat IP mesin tersebut.

  6. Kembangkan dan mulai kelas entri Spring Boot DubboConsumer.

    package com.alibaba.edas.boot;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class DubboConsumer {
    
        public static void main(String[] args) {
            SpringApplication.run(DubboConsumer.class, args);
        }
    
    }                        
  7. Masuk ke konsol Nacos dari http://127.0.0.1:8848. Di panel navigasi sisi kiri, klik Services. Pada halaman Services, lihat daftar layanan pemanggil.

    Dalam daftar, com.alibaba.edas.boot.IHelloService ditampilkan. Anda dapat melihat grup layanan dan alamat IP pemanggil layanan.

Verifikasi hasil

`curl http://localhost:8080/sayHello/EDAS`

`Hello, EDAS (from Dubbo with Spring Boot)`            

Deploy aplikasi ke EDAS

Catatan

Application Configuration Management (ACM) yang terintegrasi di EDAS menyediakan versi komersial resmi dari Nacos. Saat Anda mendeploy aplikasi ke EDAS, EDAS secara otomatis akan mengubah alamat IP dan nomor port (127.0.0.1:8848) dari Nacos Server lokal Anda.

Untuk mendeploy aplikasi ke EDAS, Anda dapat memilih jenis kluster dan metode penyebaran berdasarkan kebutuhan bisnis Anda. Jenis kluster berikut didukung: kluster Elastic Compute Service (ECS) dan kluster Container Service for Kubernetes (ACK). Metode penyebaran berikut didukung: alat atau konsol EDAS. Untuk informasi lebih lanjut, lihat topik-topik berikut:

Jika Anda mendeploy aplikasi Anda di konsol EDAS, lakukan langkah-langkah berikut di program lokal Anda sebelum Anda mendeploy aplikasi:

  1. Tambahkan konfigurasi berikut dari plug-in pengepakan ke file pom.xml.

    • Penyedia

      <build>
       <plugins>
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
                 <executions>
                     <execution>
                         <goals>
                             <goal>repackage</goal>
                         </goals>
                         <configuration>
                             <classifier>spring-boot</classifier>
                             <mainClass>com.alibaba.edas.boot.DubboProvider</mainClass>
                         </configuration>
                     </execution>
                 </executions>
             </plugin>
       </plugins>
      </build>                                
    • Konsumen

      <build>
       <plugins>
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
                 <executions>
                     <execution>
                         <goals>
                             <goal>repackage</goal>
                         </goals>
                         <configuration>
                             <classifier>spring-boot</classifier>
                             <mainClass>com.alibaba.edas.boot.DubboConsumer</mainClass>
                         </configuration>
                     </execution>
                 </executions>
             </plugin>
       </plugins>
      </build>                                
  2. Jalankan perintah mvn clean package untuk membangun program lokal Anda menjadi paket JAR.

Informasi tambahan

Jika Anda menggunakan edas-dubbo-extension untuk mendeploy aplikasi Dubbo ke EDAS, Anda tidak dapat menggunakan fitur spesifik EDAS, seperti tata kelola layanan Dubbo. Oleh karena itu, kami merekomendasikan agar Anda tidak menggunakan edas-dubbo-extension. Kami merekomendasikan agar Anda memigrasikan aplikasi Anda ke Nacos.