Tüm Ürünler
Search
Belge Merkezi

Enterprise Distributed Application Service:Implement service registration and discovery

Son Güncelleme:Oct 03, 2026

Enterprise Distributed Application Service (EDAS), Nacos kayıt defterinin genel kullanıma sunulan (GA) sürümünü sağlar. Nacos ile oluşturulan Spring Cloud uygulamaları, kod değişikliği yapmadan bu paylaşılan kayıt defterine bağlanabilir; uygulamaları EDAS'a dağıttığınızda platform kayıt defteri bağlantısını otomatik olarak yönetir.

Bu konuda, hizmet keşfi için Nacos'a kayıt olan iki Spring Cloud mikroservisinin (bir hizmet sağlayıcı ve bir hizmet tüketici) nasıl oluşturulacağı adım adım anlatılmaktadır. İşlem sonunda şunlara sahip olacaksınız:

  1. Tekil modda çalışan yerel bir Nacos Server.

  2. Nacos'a kayıt olan ve bir REST uç noktası sunan bir hizmet sağlayıcı.

  3. Sağlayıcıyı hem RestTemplate hem de FeignClient aracılığıyla keşfeden bir hizmet tüketici.

  4. Uçtan uca hizmet keşfinin yerel ortamda doğrulanması.

Yerel doğrulamadan sonra her iki uygulamayı da EDAS'a dağıtın. Ayrıntılı bilgi için bkz. Uygulamaları ECS örneklerine dağıtma veya Uygulamaları Kubernetes kümelerine dağıtma.

Not

EDAS; Nacos, Eureka, ZooKeeper ve Consul (kendi kendine yönetilen veya Microservice Engine (MSE) üzerinden) dahil olmak üzere birden çok kayıt defterini destekler. Kullandığınız kayıt defterinden bağımsız olarak EDAS, dağıtımdan sonra uygulama yönetimi, mikroservis yönetişimi ve cloud-native PaaS yetenekleri sunar.

Ön koşullar

Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:

  • Maven yüklü ve ortam değişkenleri yapılandırılmış

  • En son Nacos Server indirilmiş ve çıkarılmış

Nacos Server'ı başlatma

  1. nacos/bin dizinine gidin.

  2. Nacos Server'ı tekil modda başlatın:

    • Linux, UNIX veya macOS:

      sudo sh startup.sh -m standalone
    • Windows: startup.cmd dosyasına çift tıklayın.

  3. Nacos Server'ın çalıştığını doğrulamak için tarayıcınızda http://127.0.0.1:8848/nacos adresini açın. Varsayılan kullanıcı adı ve parola nacos değeridir.

Proje yapısı

Bu konuda iki bağımsız Maven projesi oluşturulur:

nacos-service-provider/
├── pom.xml
└── src/main/
    ├── java/com/aliware/edas/
    │   ├── ProviderApplication.java
    │   └── EchoController.java
    └── resources/
        └── application.properties

nacos-service-consumer/
├── pom.xml
└── src/main/
    ├── java/com/aliware/edas/
    │   ├── ConsumerApplication.java
    │   ├── EchoService.java
    │   └── TestController.java
    └── resources/
        └── application.properties

Tam demo projelerini indirin: service-provider | service-consumer.

Hizmet sağlayıcıyı oluşturma

1. Adım: Maven projesini ayarlama

nacos-service-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.1.4.RELEASE ve Spring Cloud Greenwich.SR1 kullanılmaktadır:

Kodu görüntülemek için genişletin

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.4.RELEASE</version>
    <relativePath/>
</parent>

<dependencies>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <version>2.1.1.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Greenwich.SR1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

Spring Cloud Alibaba sürümü, kullandığınız Spring Cloud sürümüyle eşleşmelidir:

Spring Cloud sürümü Spring Cloud Alibaba sürümü
Greenwich 2.1.1.RELEASE
Finchley 2.0.1.RELEASE
Edgware 1.5.1.RELEASE
Not

Spring Cloud Edgware kullanım ömrünü tamamlamıştır. Yeni projelerde Edgware kullanmayın.

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

src/main/java dizininde com.aliware.edas paketini oluşturun, ardından ProviderApplication.java dosyasını ekleyin:

package com.aliware.edas;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient  // Enables service registration and discovery
public class ProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class, args);
    }
}

3. Adım: REST denetleyicisi ekleme

Aynı pakette, /echo/{string} uç noktasını sunmak için EchoController.java dosyasını oluşturun:

package com.aliware.edas;

import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class EchoController {
    @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
    public String echo(@PathVariable String string) {
        return string;
    }
}

4. Adım: Kayıt defteri adresini yapılandırma

src/main/resources dizininde application.properties dosyasını oluşturun:

spring.application.name=service-provider
server.port=18081
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

Nacos Server farklı bir makinede çalışıyorsa 127.0.0.1 IP adresini Nacos Server'ınızın IP adresiyle değiştirin. Ek yapılandırma seçenekleri için bkz. Yapılandırma referansı.

5. Adım: Kaydı doğrulama

  1. Hizmeti başlatmak için ProviderApplication sınıfının main yöntemini çalıştırın.

  2. Nacos konsolunu http://127.0.0.1:8848/nacos adresinde açın (kullanıcı adı/parola: nacos/nacos).

  3. Service Management > Services seçeneğine gidin. Hizmet listesinde service-provider görünür. Örnek IP adresi ve bağlantı noktası gibi kayıt ayrıntılarını görüntülemek için Details öğesini tıklayın.

Hizmet tüketiciyi oluşturma

Tüketici, sağlayıcıyı çağırma konusunda iki yaklaşımı gösterir: İstemci tarafı yük dengeleme ile RestTemplate ve bildirim temelli HTTP istemcisi olarak FeignClient.

1. Adım: Maven projesini ayarlama

nacos-service-consumer adında bir Maven projesi oluşturun ve aşağıdaki bağımlılıkları pom.xml dosyasına ekleyin:

Kodu görüntülemek için genişletin

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.4.RELEASE</version>
    <relativePath/>
</parent>

<dependencies>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <version>2.1.1.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Greenwich.SR1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

2. Adım: Feign istemci arabirimini tanımlama

src/main/java dizininde com.aliware.edas paketini oluşturun, ardından EchoService.java dosyasını ekleyin:

package com.aliware.edas;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@FeignClient(name = "service-provider")  // Refers to the provider's registered service name
public interface EchoService {
    @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
    String echo(@PathVariable("str") String str);
}

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

Aynı pakette ConsumerApplication.java dosyasını oluşturun:

package com.aliware.edas;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableDiscoveryClient   // Enables service registration and discovery
@EnableFeignClients      // Activates FeignClient scanning
public class ConsumerApplication {

    @LoadBalanced  // Integrates RestTemplate with service discovery for client-side load balancing
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
}

Ek açıklama özeti:

  • @EnableDiscoveryClient -- bu uygulamayı Nacos'a kaydeder.

  • @EnableFeignClients -- @FeignClient arabirimlerini tarar ve proxy bean'leri oluşturur.

  • @LoadBalanced -- RestTemplate'in DNS yerine kayıt defteri aracılığıyla hizmet adlarını (örneğin service-provider) çözmesini sağlar.

4. Adım: Test denetleyicisi ekleme

Aynı pakette, sağlayıcıyı farklı yaklaşımlarla çağıran iki uç noktaya sahip TestController.java dosyasını oluşturun:

package com.aliware.edas;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class TestController {

    @Autowired
    private RestTemplate restTemplate;
    @Autowired
    private EchoService echoService;

    // Uses RestTemplate with service discovery to call the provider
    @RequestMapping(value = "/echo-rest/{str}", method = RequestMethod.GET)
    public String rest(@PathVariable String str) {
        return restTemplate.getForObject("http://service-provider/echo/" + str,
                String.class);
    }

    // Uses FeignClient to call the provider
    @RequestMapping(value = "/echo-feign/{str}", method = RequestMethod.GET)
    public String feign(@PathVariable String str) {
        return echoService.echo(str);
    }
}

5. Adım: Kayıt defteri adresini yapılandırma

src/main/resources dizininde application.properties dosyasını oluşturun:

spring.application.name=service-consumer
server.port=18082
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

Nacos Server farklı bir makinede çalışıyorsa 127.0.0.1 IP adresini Nacos Server'ınızın IP adresiyle değiştirin.

6. Adım: Kaydı doğrulama

  1. Hizmeti başlatmak için ConsumerApplication sınıfının main yöntemini çalıştırın.

  2. Nacos konsolunu http://127.0.0.1:8848/nacos adresinde açın.

  3. Service Management > Services seçeneğine gidin. Hizmet listesinde service-provider ile birlikte service-consumer görünür.

Hizmet keşfini yerel olarak test etme

Her iki uygulama da çalışırken uçtan uca hizmet keşfini test edin. Tüketici, service-provider hizmet adını Nacos aracılığıyla çözer ve her isteği sağlayıcıya iletir.

Linux, UNIX veya macOS:

# Test with RestTemplate
curl http://127.0.0.1:18082/echo-rest/rest-rest

# Test with FeignClient
curl http://127.0.0.1:18082/echo-feign/feign-rest

Windows: Aşağıdaki URL'leri tarayıcınızda açın:

  • http://127.0.0.1:18082/echo-rest/rest-rest

  • http://127.0.0.1:18082/echo-feign/feign-rest

Beklenen çıktı:

Uç nokta Beklenen yanıt
/echo-rest/rest-rest rest-rest
/echo-feign/feign-rest feign-rest

Her iki uç nokta da yol parametresi değerini döndürüyorsa hizmet kaydı ve keşfi doğru şekilde çalışıyor demektir.

EDAS'a dağıtma

Yerel doğrulamadan sonra her iki uygulamayı da EDAS'a dağıtın. EDAS yönetilen bir Nacos kayıt defteri sağladığından uygulamalarınız kod değişikliği yapmadan buna otomatik olarak bağlanır.

Dağıtım talimatları için bkz.:

Yapılandırma referansı

Nacos Discovery, application.properties dosyasındaki aşağıdaki yapılandırma özelliklerini destekler:

Yapılandırma öğesi Anahtar Varsayılan değer Açıklama
Sunucu adresi spring.cloud.nacos.discovery.server-addr Yok Nacos Server'ın IP adresi ve bağlantı noktası
Hizmet adı spring.cloud.nacos.discovery.service ${spring.application.name} Hizmeti kaydetmek için kullanılan ad
NIC adı spring.cloud.nacos.discovery.network-interface Yok IP adresi kaydedilen ağ arabirimi. Belirtilmezse varsayılan olarak ilk NIC kullanılır
Kaydedilen IP adresi spring.cloud.nacos.discovery.ip Yok Otomatik algılanan IP adresini geçersiz kılar. En yüksek önceliğe sahiptir
Kaydedilen bağlantı noktası spring.cloud.nacos.discovery.port -1 Varsayılan olarak otomatik algılanır
Ad alanı spring.cloud.nacos.discovery.namespace Yok Hizmetleri ortamlar arasında yalıtır (örneğin, geliştirme, hazırlama, üretim)
Meta veri spring.cloud.nacos.discovery.metadata Yok Hizmet örneğine eklenen özel anahtar-değer çiftleri. Harita biçiminde yapılandırılır
Küme spring.cloud.nacos.discovery.cluster-name DEFAULT Nacos küme adı
Uç nokta spring.cloud.nacos.discovery.endpoint UTF-8 Dinamik sunucu adresi çözümlemesi için alan adı. EDAS'a dağıtıldığında gerekli değildir
Ribbon entegrasyonu ribbon.nacos.enabled true Nacos ile Ribbon tabanlı yük dengelemeyi etkinleştirir. Yalnızca gerektiğinde değiştirin

Tam referans için GitHub'daki Nacos Discovery sayfasına bakın.