cari
RumahJavajavaTutorialTutorial praktikal pembangunan SpringBoot+Dubbo+Nacos

Artikel ini akan menulis contoh terperinci untuk menerangkan perkembangan sebenar dubbo+nacos+Spring Boot. Artikel ini tidak akan merangkumi terlalu banyak pengetahuan teori, tetapi akan menulis contoh paling mudah untuk menggambarkan bagaimana dubbo boleh disepadukan dengan nacos untuk membina persekitaran pembangunan dengan cepat..
Na Integrasi cos dan dubbo

spesifikasi pengurusan projek

Dubbo integration nacos case
  • Cipta modul antara muka awam
    • Cipta modul penyedia perkhidmatan
    • Ringkasan artikel ini
    • Persediaan alam sekitar
    • pengenalan dubbo
  • Hubungan panggilan antara nod teras dubbo

Tutorial praktikal pembangunan SpringBoot+Dubbo+Nacos

Memanggil perihalan perhubungan

  • Bekas perkhidmatan bertanggungjawab untuk memulakan, memuatkan dan menjalankan penyedia perkhidmatan.
  • Apabila penyedia perkhidmatan bermula, ia mendaftarkan perkhidmatan yang disediakannya dengan pusat pendaftaran.
  • Pengguna perkhidmatan melanggan pusat pendaftaran untuk perkhidmatan yang mereka perlukan semasa bermula.
  • Pusat pendaftaran mengembalikan senarai alamat penyedia perkhidmatan kepada pengguna Jika terdapat perubahan, pusat pendaftaran akan menolak data perubahan kepada pengguna berdasarkan sambungan yang panjang.
  • Pengguna perkhidmatan memilih penyedia untuk membuat panggilan daripada senarai alamat pembekal berdasarkan algoritma pengimbangan beban lembut Jika panggilan gagal, ia memilih penyedia lain untuk dihubungi.
  • Pengguna dan penyedia perkhidmatan mengumpul bilangan panggilan dan masa panggilan dalam ingatan, dan menghantar data statistik ke pusat pemantauan dengan kerap setiap minit. .
    Tutorial praktikal pembangunan SpringBoot+Dubbo+Nacos

    Nacos disepadukan dengan dubbo

    Untuk memudahkan pemahaman semua orang, berikut ialah kod Demo pengeluar dan pengguna yang sepadan, serta pusat pendaftaran yang digunakan. . cloud alibaba Hubungan yang sepadan antara mereka, versi yang dipilih dalam artikel ini adalah seperti berikut

    Tutorial praktikal pembangunan SpringBoot+Dubbo+Nacos

    Untuk kemudahan penggunaan seterusnyaSpringCloud Alibabauntuk pembangunan, mula-mula buat projek induk jenis pom, terutamanya digunakan untuk pengurusan versi tindanan teknologi projek, buat projek maven bernama spring-cloud -alibaba-example, alih keluar fail src, ubah suai fail pom <span style="display: none;line-height: 1.6 !important;"><pre class='brush:php;toolbar:false;'>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&gt; &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt; &lt;groupId&gt;ah.wideth&lt;/groupId&gt; &lt;artifactId&gt;spring-cloud-alibaba-example&lt;/artifactId&gt; &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt; &lt;parent&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt; &lt;version&gt;2.3.12.RELEASE&lt;/version&gt; &lt;relativePath/&gt; &lt;!-- lookup parent from repository --&gt; &lt;/parent&gt; &lt;packaging&gt;pom&lt;/packaging&gt; &lt;properties&gt; &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt; &lt;java.version&gt;1.8&lt;/java.version&gt; &lt;spring-cloud.version&gt;Hoxton.SR12&lt;/spring-cloud.version&gt; &lt;com-alibaba-cloud.version&gt;2.2.7.RELEASE&lt;/com-alibaba-cloud.version&gt; &lt;/properties&gt; &lt;!--对项目版本进行管理--&gt; &lt;dependencyManagement&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.cloud&lt;/groupId&gt; &lt;artifactId&gt;spring-cloud-dependencies&lt;/artifactId&gt; &lt;version&gt;${spring-cloud.version}&lt;/version&gt; &lt;type&gt;pom&lt;/type&gt; &lt;scope&gt;import&lt;/scope&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;com.alibaba.cloud&lt;/groupId&gt; &lt;artifactId&gt;spring-cloud-alibaba-dependencies&lt;/artifactId&gt; &lt;version&gt;${com-alibaba-cloud.version}&lt;/version&gt; &lt;type&gt;pom&lt;/type&gt; &lt;scope&gt;import&lt;/scope&gt; &lt;/dependency&gt; &lt;/dependencies&gt; &lt;/dependencyManagement&gt; &lt;/project&gt;</pre></span>Projek yang dibuat seterusnya akan diletakkan dalam direktori ini Anda hanya perlu mengisytiharkan groupId dan artifactId, dan projek induk akan dirujuk secara automatik code style="padding: 2px 4px; border-radius : 4px;margin-right: 2px;margin-left: 2px;font-family: 'Operator Mono', Consolas, Monaco, Menlo, monospace;word-break: break- all;color: rgb(228, 105, 24) ;background-color: rgb(239, 239, 239);font-size: 0.875em;line-height: 1.6 !important;">spring-cloud-alibaba-example versi. Ia bukanlah projek induk sebagai projek akar: setiap kali anda mempelajari teknologi baharu, projek induk sebenar akan dibuat dan banyak sub-projek akan dibuat di bawah projek induk yang sepadan
    Tutorial praktikal pembangunan SpringBoot+Dubbo+Nacos

    dubbo integrated nacos case

    Kes dalam artikel ini ditulis berdasarkan contoh pembangunan nacos di atas. Mari mulakan membuat projek kami dan tampal struktur direktori saya.

    Tutorial praktikal pembangunan SpringBoot+Dubbo+Nacos

    Penerangan Modul

    • public-api公共接口模块(接口),供服务消费者和服务提供者调用。
    • dubbo-provider服务提供者模块(接口实现类),引入了public-api模块
    • dubbo-consumer服务消费者模块(controller),引入了public-api模块
    • 消费者和提供者通过公共接口模块进行rpc远程调用

    父工程pom文件

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <parent>
            <artifactId>spring-cloud-alibaba-example</artifactId>
            <groupId>ah.wideth</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
    
        <modules>
            <module>public-api</module>
            <module>dubbo-provider</module>
            <module>dubbo-consumer</module>
        </modules>
    
        <artifactId>dubbo-nacos-example</artifactId>
        <name>dubbo-nacos-example</name>
        <description>duboo与nacos整合的父工程</description>
        <packaging>pom</packaging>
    
        <properties>
            <java.version>1.8</java.version>
            <project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <dubbo.version>2.7.13</dubbo.version>
            <nacos.version>1.4.1</nacos.version>
        </properties>
    
    
        <dependencies>
    
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <!--解决nacos-client2.0报错的问题-->
                <exclusions>
                    <exclusion>
                        <artifactId>nacos-client</artifactId>
                        <groupId>com.alibaba.nacos</groupId>
                    </exclusion>
                </exclusions>
            </dependency>
    
    
            <!--dubbo相关-->
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-spring-boot-starter</artifactId>
                <version>${dubbo.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-registry-nacos</artifactId>
                <version>${dubbo.version}</version>
            </dependency>
    
            <dependency>
                <groupId>com.alibaba.nacos</groupId>
                <artifactId>nacos-client</artifactId>
                <version>${nacos.version}</version>
            </dependency>
    
            <!-- 解决dubbo2.7.13jar包冲突问题-->
            <dependency>
                <groupId>com.alibaba.spring</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>1.0.11</version>
            </dependency>
    
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo</artifactId>
                <version>${dubbo.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>javax.servlet</groupId>
                        <artifactId>servlet-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            
        </dependencies>
    
    </project>
    Tutorial praktikal pembangunan SpringBoot+Dubbo+Nacos

    创建公共接口模块

    pom文件

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <parent>
            <artifactId>dubbo-nacos-example</artifactId>
            <groupId>ah.wideth</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
    
        <artifactId>public-api</artifactId>
        <name>public-api</name>
        <description>api公用接口</description>
        <packaging>jar</packaging>
    
        <properties>
            <java.version>1.8</java.version>
            <project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    Tutorial praktikal pembangunan SpringBoot+Dubbo+Nacos

    公共接口模块里面只有一个接口,没有配置文件,打jar包

    package ah.wideth.api;
    
    /**
     * 让生产者和服务消
     * 费者来使用这个接口
     */
    public interface InfoService {
    
        String getInfo();
    }
    Tutorial praktikal pembangunan SpringBoot+Dubbo+Nacos

    创建服务提供者模块

    pom文件

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <parent>
            <artifactId>dubbo-nacos-example</artifactId>
            <groupId>ah.wideth</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
    
        <artifactId>dubbo-provider</artifactId>
        <name>dubbo-provider</name>
        <description>dubbo的服务提供者模块</description>
    
        <properties>
            <java.version>1.8</java.version>
            <project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        </properties>
    
        <dependencies>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <!--引入公共接口模块-->
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>public-api</artifactId>
                <version>${project.version}</version>
            </dependency>
    
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>

    application.yml配置文件

    server:
      port: 8180
    
    spring:
      application:
        name: dubbo-provider
    
    dubbo:
      registry:
        address: nacos://127.0.0.1:8848 #注册地址
      application:
        name: dubbo-provider #应用名
      protocol:
        name: dubbo #dubbo协议
        port: 20880 #协议端口
      scan:
        base-packages: ah.wideth.impl #扫包范围
      provider:
        timeout: 30000 #超时时间

    接口实现类,该类实现了上面我们在公共接口模块创建的接口

    package ah.wideth.impl;
    
    import ah.wideth.api.InfoService;
    import org.apache.dubbo.config.annotation.DubboService;
    import org.springframework.stereotype.Component;
    
    
    // dubbo提供的Service注解,用于声明对外暴露服务
    // Service引入的是org.apache.dubbo.config.annotation.Service包
    @Component
    @DubboService
    public class InfoServiceImpl implements InfoService {
    
        @Override
        public String getInfo() {
    
            return "hello,这里是dubbo-provider模块!";
        }
    }

    服务提供者启动类

    package ah.wideth;
    
    import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    
    
    @EnableDubbo
    @EnableDiscoveryClient
    @SpringBootApplication
    public class DubboProviderApplication {
    
        public static void main(String[] args) {
    
            SpringApplication.run(DubboProviderApplication.class, args);
            System.out.println("dubbo服务提供者8180启动了");
        }
    
    }

    创建服务消费者模块

    pom文件

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <parent>
            <artifactId>dubbo-nacos-example</artifactId>
            <groupId>ah.wideth</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
    
        <artifactId>dubbo-consumer</artifactId>
        <name>dubbo-consumer</name>
        <description>dubbo的服务消费者模块</description>
    
        <properties>
            <java.version>1.8</java.version>
            <project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        </properties>
    
        <dependencies>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <!--引入公共接口模块-->
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>public-api</artifactId>
                <version>${project.version}</version>
            </dependency>
    
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
    
        </build>
    </project>

    application.yml配置文件

    server:
      port: 8181
    
    spring:
      application:
        name: dubbo-consumer
    
    dubbo:
      registry:
        address: nacos://127.0.0.1:8848 #注册地址
      application:
        name: dubbo-consumer #应用名
      consumer:
        timeout: 30000 #超时时间

    controller,调用公共接口模块创建的接口

    package ah.wideth.controller;
    
    import ah.wideth.api.InfoService;
    import org.apache.dubbo.config.annotation.DubboReference;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class InfoController {
    
        //dumbo提供的Reference注解,用于调用远程服务
        @DubboReference(check = false)
        private InfoService infoService;
    
        @GetMapping("/getInfo")
        public String getInfo(){
    
            return infoService.getInfo();
        }
    }

    服务消费者启动类

    package ah.wideth;
    
    import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    
    
    @EnableDubbo
    @EnableDiscoveryClient
    @SpringBootApplication
    public class DubboConsumerApplication {
    
        public static void main(String[] args) {
    
            SpringApplication.run(DubboConsumerApplication.class, args);
            System.out.println("dubbo服务消费者8181启动了");
        }
    
    }

    服务调用测试

    打开Nacos控制面板查看注册中心中的服务

    Tutorial praktikal pembangunan SpringBoot+Dubbo+Nacos

    启动nacos,启动服务提供者和服务消费者,调用服务消费者的getInfo方法,服务提供者会返回结果

    Tutorial praktikal pembangunan SpringBoot+Dubbo+Nacos

    本文小结

    本文编写了一个例子来对dubbo整合nacos进行服务调用的例子,不过要注意jar包的冲突问题。

Atas ialah kandungan terperinci Tutorial praktikal pembangunan SpringBoot+Dubbo+Nacos. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Artikel ini dikembalikan pada:Java后端技术全栈. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan?Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan?Mar 17, 2025 pm 05:46 PM

Artikel ini membincangkan menggunakan Maven dan Gradle untuk Pengurusan Projek Java, membina automasi, dan resolusi pergantungan, membandingkan pendekatan dan strategi pengoptimuman mereka.

Bagaimanakah saya membuat dan menggunakan perpustakaan Java Custom (fail JAR) dengan pengurusan versi dan pergantungan yang betul?Bagaimanakah saya membuat dan menggunakan perpustakaan Java Custom (fail JAR) dengan pengurusan versi dan pergantungan yang betul?Mar 17, 2025 pm 05:45 PM

Artikel ini membincangkan membuat dan menggunakan perpustakaan Java tersuai (fail balang) dengan pengurusan versi dan pergantungan yang betul, menggunakan alat seperti Maven dan Gradle.

Bagaimanakah saya melaksanakan caching pelbagai peringkat dalam aplikasi java menggunakan perpustakaan seperti kafein atau cache jambu?Bagaimanakah saya melaksanakan caching pelbagai peringkat dalam aplikasi java menggunakan perpustakaan seperti kafein atau cache jambu?Mar 17, 2025 pm 05:44 PM

Artikel ini membincangkan pelaksanaan caching pelbagai peringkat di Java menggunakan kafein dan cache jambu untuk meningkatkan prestasi aplikasi. Ia meliputi persediaan, integrasi, dan faedah prestasi, bersama -sama dengan Pengurusan Dasar Konfigurasi dan Pengusiran PRA Terbaik

Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas?Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas?Mar 17, 2025 pm 05:43 PM

Artikel ini membincangkan menggunakan JPA untuk pemetaan objek-relasi dengan ciri-ciri canggih seperti caching dan pemuatan malas. Ia meliputi persediaan, pemetaan entiti, dan amalan terbaik untuk mengoptimumkan prestasi sambil menonjolkan potensi perangkap. [159 aksara]

Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka?Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka?Mar 17, 2025 pm 05:35 PM

Kelas kelas Java melibatkan pemuatan, menghubungkan, dan memulakan kelas menggunakan sistem hierarki dengan bootstrap, lanjutan, dan pemuat kelas aplikasi. Model delegasi induk memastikan kelas teras dimuatkan dahulu, yang mempengaruhi LOA kelas tersuai

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual