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.
Ekstrak paket Nacos Server yang diunduh.
Pergi ke jalur
nacos/bindan 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 perintahset 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
Buat proyek Maven bernama
spring-boot-dubbo-provider.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>Kembangkan penyedia layanan Dubbo.
Semua layanan Dubbo disediakan melalui antarmuka.
Di jalur
src/main/java, buat paket bernamacom.alibaba.edas.boot.Di paket
com.alibaba.edas.boot, buat antarmuka bernamaIHelloServiceyang berisi metode bernamaSayHello.package com.alibaba.edas.boot; public interface IHelloService { String sayHello(String str); }Di paket
com.alibaba.edas.boot, buat kelas bernamaIHelloServiceImpluntuk 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)"; } }CatatanDalam kode contoh, Anotasi Service adalah kelas anotasi yang disediakan oleh Dubbo. Nama lengkap kelas anotasi adalah com.alibaba.dubbo.config.annotation.Service.
Konfigurasikan layanan Dubbo.
Di jalur
src/main/resources, buat fileapplication.propertiesatauapplication.yamldan buka file tersebut.Tambahkan item konfigurasi berikut ke file
application.propertiesatauapplication.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:8848CatatanAnda harus menentukan nilai untuk tiga item konfigurasi dalam kode sebelumnya karena item konfigurasi tersebut tidak memiliki nilai default.
Nilai dari
dubbo.scan.basePackagesadalah paket-paket yang kode-kodenya berisicom.alibaba.dubbo.config.annotation.Servicedancom.alibaba.dubbo.config.annotation.Reference. Pisahkan beberapa paket dengan koma (,).Nilai dari
dubbo.registry.addressharus 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.
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); } }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.IHelloServiceditampilkan. Anda dapat memeriksa grup layanan dan alamat IP penyedia layanan.
Buat konsumen layanan
Buat proyek Maven bernama
spring-boot-dubbo-consumer.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.
CatatanSiklus hidup Spring Boot 1.x berakhir pada Agustus 2019. Kami merekomendasikan Anda menggunakan versi baru untuk mengembangkan aplikasi Anda.
Kembangkan konsumen layanan Dubbo.
Di jalur
src/main/java, buat paket bernamacom.alibaba.edas.boot.Di paket
com.alibaba.edas.boot, buat antarmuka bernamaIHelloServiceyang berisi metode bernamaSayHello.package com.alibaba.edas.boot; public interface IHelloService { String sayHello(String str); }
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); } }CatatanAnotasi Reference adalah com.alibaba.dubbo.config.annotation.Reference.
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:8848CatatanAnda harus menentukan nilai untuk dua item konfigurasi dalam kode sebelumnya karena item konfigurasi tersebut tidak memiliki nilai default.
Nilai dari
dubbo.registry.addressharus dimulai dengannacos://, 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.
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); } }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.IHelloServiceditampilkan. 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
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:
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>
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.