Tüm Ürünler
Search
Belge Merkezi

Enterprise Distributed Application Service:Develop a Dubbo microservices application with Spring Boot

Son Güncelleme:Oct 03, 2026

Bu öğreticide, hizmet kayıt defteri olarak Nacos ve Spring Boot açıklamalarını (annotation) kullanarak bir Dubbo hizmet sağlayıcısı ve tüketicisinin nasıl oluşturulacağı ve Enterprise Distributed Application Service (EDAS) üzerine nasıl dağıtılacağı gösterilmektedir. İş gereksinimlerinize göre bir kayıt defteri seçebilir ve yapılandırmaları yönetebilirsiniz.

Zaten Spring Boot tabanlı bir Dubbo uygulamanız varsa bu konuyu atlayıp uygulamayı doğrudan EDAS'e dağıtabilirsiniz.

Demo projesiyle hızlı başlangıç

Manuel kurulumu atlamak için önceden hazırlanmış demoyu klonlayın:

git clone https://github.com/aliyun/alibabacloud-microservice-demo.git
cd alibabacloud-microservice-demo/microservice-doc-demo/dubbo-samples-spring-boot

Alternatif olarak, ZIP arşivini indirin. Bu eğitimdeki demo, alibabacloud-microservice-demo/microservice-doc-demo/dubbo-samples-spring-boot dizininde bulunmaktadır.

Gerekli bağımlılıklar önceden yapılandırılmış yeni bir Spring Boot projesi iskelesi oluşturmak için Cloud Native App Initializer aracını kullanabilirsiniz.

Ön koşullar

Başlamadan önce şunlara sahip olduğunuzdan emin olun:

  • Ortam değişkenleri yapılandırılmış şekilde yüklenmiş Maven

  • En son Nacos Server indirilmiş ve tek düğümlü (standalone) modda başlatılmıştır:

    1. İndirilen Nacos Server paketini çıkarın.

    2. nacos/bin dizinine gidin.

    3. Sunucuyu başlatın:

      • Linux, UNIX veya macOS: sh startup.sh -m standalone komutunu çalıştırın.

      • Windows: startup.cmd dosyasında set MODE="standalone" ayarını yapın ve ardından dosyayı çalıştırın.

  • (İsteğe bağlı) Yerel uygulamalar ile cloud uygulamaları arasında bağlantı yapılandırması

Hizmet sağlayıcı oluşturma

1. Adım: Maven projesini ayarlama

spring-boot-dubbo-provider adında bir Maven projesi oluşturun ve aşağıdaki bağımlılıkları pom.xml dosyasına ekleyin. Bu örnekte Spring Boot 2.0.6.RELEASE sürümü kullanılmaktadır.

<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>

2. Adım: Hizmet arayüzünü tanımlama

src/main/java dizininde com.alibaba.edas.boot paketini oluşturun ve IHelloService arayüzünü ekleyin:

package com.alibaba.edas.boot;

public interface IHelloService {
    String sayHello(String str);
}

3. Adım: Hizmeti uygulama

Aynı pakette, arayüzü uygulamak için IHelloServiceImpl sınıfını oluşturun:

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)";
    }
}
Not

Buradaki @Service açıklaması, Apache Dubbo'dan gelen com.alibaba.dubbo.config.annotation.Service sınıfıdır; Spring Framework'ün @Service açıklaması değildir.

4. Adım: Uygulamayı yapılandırma

src/main/resources dizininde application.properties (veya application.yaml) dosyasını oluşturun:

# Base packages to scan Dubbo components (e.g., @Service, @Reference)
dubbo.scan.basePackages=com.alibaba.edas.boot
dubbo.application.name=dubbo-provider-demo
dubbo.registry.address=nacos://127.0.0.1:8848

Aşağıdaki tabloda her bir özellik açıklanmaktadır.

Özellik Açıklama
dubbo.scan.basePackages com.alibaba.dubbo.config.annotation.Service ve com.alibaba.dubbo.config.annotation.Reference bileşenlerinin taranacağı paketler. Birden fazla paketi virgül (,) ile ayırın. Zorunludur; varsayılan değer yoktur.
dubbo.application.name Nacos'a kaydedilen uygulama adı. Zorunludur; varsayılan değer yoktur.
dubbo.registry.address nacos:// ile başlamalı ve bunu Nacos Server IP adresi ile bağlantı noktası izlemelidir. Yerel geliştirme için 127.0.0.1:8848 kullanın. EDAS tarafından yönetilen bir kayıt defteri ile EDAS'e dağıtım yaptığınızda, EDAS bu adresi otomatik olarak değiştirir. Kendi kendinize yönettiğiniz bir Nacos kayıt defteri için bu değeri kendi kayıt defteri adresinizle değiştirin. Zorunludur; varsayılan değer yoktur.

5. Adım: Uygulama giriş sınıfını oluşturma

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. Adım: Sağlayıcıyı doğrulama

http://127.0.0.1:8848 adresinden Nacos konsolunu açın ve sol gezinme bölmesinde Services öğesini tıklayın. Hizmetler listesinde com.alibaba.edas.boot.IHelloService hizmetinin doğru hizmet grubu ve sağlayıcı IP adresiyle göründüğünü onaylayın.

Hizmet tüketicisi oluşturma

1. Adım: Maven projesini ayarlama

spring-boot-dubbo-consumer adında bir Maven projesi oluşturun ve aşağıdaki bağımlılıkları pom.xml dosyasına ekleyin. Bu örnekte Spring Boot 2.0.6.RELEASE sürümü kullanılmaktadır.

<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>
Not

Spring Boot 1.x'in yaşam döngüsü Ağustos 2019'da sona ermiştir. Spring Boot 1.x kullanmanız gerekiyorsa, com.alibaba.boot:dubbo-spring-boot-starter sürüm 0.1.0 ile birlikte sürüm 1.5.x'i kullanın. Daha yeni bir sürüme yükseltmeniz önerilir.

2. Adım: Hizmet arayüzünü tanımlama

src/main/java dizininde com.alibaba.edas.boot paketini oluşturun ve sağlayıcıda kullanılan aynı IHelloService arayüzünü ekleyin:

package com.alibaba.edas.boot;

public interface IHelloService {
    String sayHello(String str);
}

3. Adım: Hizmet çağrısını uygulama

Uzak Dubbo hizmetini çağıran bir REST denetleyicisi oluşturun:

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);
    }
}
Not

@Reference açıklaması, Apache Dubbo'dan gelen com.alibaba.dubbo.config.annotation.Reference sınıfıdır.

4. Adım: Uygulamayı yapılandırma

application.properties veya application.yaml dosyasına aşağıdaki özellikleri ekleyin:

dubbo.application.name=dubbo-consumer-demo
dubbo.registry.address=nacos://127.0.0.1:8848
Özellik Açıklama
dubbo.application.name Nacos'a kaydedilen uygulama adı. Zorunludur; varsayılan değer yoktur.
dubbo.registry.address nacos:// ile başlamalı ve bunu Nacos Server IP adresi ile bağlantı noktası izlemelidir. Nacos Server farklı bir makinede çalışıyorsa 127.0.0.1 adresini kendi Nacos Server adresinizle değiştirin. Zorunludur; varsayılan değer yoktur.

5. Adım: Uygulama giriş sınıfını oluşturma

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);
    }

}

6. Adım: Tüketiciyi doğrulama

http://127.0.0.1:8848 adresinden Nacos konsolunu açın ve sol gezinme bölmesinde Services öğesini tıklayın. Hizmetler listesinde com.alibaba.edas.boot.IHelloService hizmetinin doğru hizmet grubu ve arayan IP adresiyle göründüğünü onaylayın.

Yerel kurulumu test etme

Hem sağlayıcı hem de tüketici çalıştıktan sonra bir test isteği gönderin:

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

Beklenen yanıt:

Hello, EDAS (from Dubbo with Spring Boot)

EDAS'e dağıtma

Not

EDAS ile entegre olan Application Configuration Management (ACM), Nacos'un ticari bir sürümünü sağlar. EDAS'e dağıtım yaptığınızda, yerel Nacos Server adresini (127.0.0.1:8848) otomatik olarak yönetilen kayıt defteri adresiyle değiştirir.

EDAS, aşağıdaki küme türlerine dağıtımı destekler. Gereksinimlerinize göre bir küme türü ve dağıtım yöntemi seçin.

Küme türü Belgeleme
Elastic Compute Service (ECS) ECS kümesine dağıtma
Container Service for Kubernetes (ACK) Kubernetes kümesine dağıtma

Konsol dağıtımı için uygulamayı paketleme

EDAS konsolu üzerinden dağıtım yapmak için pom.xml dosyasına Spring Boot Maven eklentisini ekleyin ve yüklemeden önce JAR paketini oluşturun.

**Sağlayıcı pom.xml dosyası:**

<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>

**Tüketici pom.xml dosyası:**

<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>

JAR paketini oluşturun:

mvn clean package

Geçiş notu

Dubbo uygulamalarını EDAS'e dağıtmak için edas-dubbo-extension kullanmaktan kaçının. Bu uzantı, Dubbo hizmet yönetimi gibi EDAS özelliklerini desteklemez. Bunun yerine Nacos'a geçiş yapın.