Tüm Ürünler
Search
Belge Merkezi

Microservices Engine:Register Spring Cloud applications with MSE Nacos registries

Son Güncelleme:Oct 06, 2026

Birden fazla Spring Cloud mikroservisinin birbirini keşfetmesi ve çağırması gerektiğinde merkezi bir hizmet kayıt defteri sabit kodlanmış uç noktaları ortadan kaldırır ve dinamik yönlendirmeyi mümkün kılar. Microservices Engine (MSE), hizmet keşfi ve yapılandırma yönetimini sağlayan yönetilen bir Nacos kayıt defteri sunar; uygulama içinde kayıt defteri uç noktasını yapılandırırsınız ve uygulama başlatıldığında otomatik olarak kaydolur.

Bu kılavuzda bir sağlayıcı ve bir tüketici uygulaması oluşturma, her ikisini de bir MSE Nacos kayıt defterine kaydetme ve uçtan uca hizmet çağrılarını doğrulama adımları gösterilmektedir.

Ön koşullar

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

  • Ortam değişkenleri yapılandırılmış şekilde kurulu Maven

  • Bir MSE Nacos örneği. Bkz. Örnek oluşturma.

  • Bir ad alanı. Bkz. Ad alanı oluşturma. Bu kılavuzda varsayılan Public ad alanı kullanılmaktadır.

Önemli

MSE Nacos kayıt defterine İnternet üzerinden erişiyorsanız hem sağlayıcının hem de tüketicinin İnternet erişimine sahip olması gerekir. Genel IP adreslerini kayıt defterinin izin listesine ekleyin. Bkz. Genel IP adresi izin listesi yapılandırma.

Adım 1: Sağlayıcıyı oluşturma

Bir REST uç noktası sunan ve hizmet sağlayıcısı olarak MSE Nacos kayıt defterine kaydedilen bir Spring Cloud uygulaması oluşturun.

1. Maven projesi oluşturma

nacos-service-provider adlı bir Maven projesi oluşturun.

2. Bağımlılıkları ekleme

pom.xml dosyasına aşağıdakileri ekleyin. Bu örnekte Spring Boot 2.1.4.RELEASE ve Spring Cloud Greenwich.SR1 kullanılmaktadır.

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

<dependencies>
    <!-- Nacos service discovery -->
    <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ü, Spring Cloud sürümüyle eşleşmelidir:

Spring Cloud sürümü Spring Cloud Alibaba sürümü Durum
Greenwich 2.1.1.RELEASE Etkin
Finchley 2.0.1.RELEASE Etkin
Edgware 1.5.1.RELEASE Kullanımdan kaldırıldı
Önemli

Spring Cloud Edgware kullanımdan kaldırılmıştır. Yeni uygulamalarda kullanmayın.

3. Uygulama sınıfını oluşturma

src/main/java dizini altında com.aliware.edas adlı bir paket oluşturun. ProviderApplication adlı aşağıdaki sınıfı ekleyin.

@EnableDiscoveryClient açıklaması hizmet kaydı ve keşfini etkinleştirir.

package com.aliware.edas;

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

@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {

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

4. REST denetleyicisi oluşturma

Aynı com.aliware.edas paketi içinde GET isteklerini /echo/{string} yoluna eşleyen ve yol değişkenini döndüren EchoController adlı bir sınıf 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;
    }
}

5. Nacos kayıt defteri uç noktasını yapılandırma

src/main/resources dizini altında application.properties adlı bir dosya oluşturun:

spring.application.name=service-provider
server.port=18081
spring.cloud.nacos.discovery.server-addr=mse.XX.nacos.mse.aliyuncs.com:8848
# To use a custom namespace, uncomment the following line:
# spring.cloud.nacos.discovery.namespace=<namespace-id>

mse.XX.nacos.mse.aliyuncs.com değerini MSE Nacos örneğinizin genel uç noktasıyla değiştirin. Bu değeri bulmak için MSE konsolunu açın, Microservices Registry > Instances seçeneğine gidin ve örnek ayrıntıları sayfasında uç noktayı bulun.

Önemli

Nacos yerine bir MSE ZooKeeper veya Eureka kayıt defteri kullanıyorsanız kayıt defteri yapılandırmasını buna göre değiştirin. Bkz. Kullanım notları.

6. Sağlayıcı kaydını doğrulama

  1. Sağlayıcıyı başlatmak için ProviderApplication öğesinin main yöntemini çalıştırın.

  2. MSE konsoluna giriş yapın ve üst gezinme çubuğundan bir bölge seçin.

  3. Sol gezinme bölmesinde Microservices Registry > Instances seçeneğini belirleyin. Örnek adına tıklayın.

  4. Service Management > Services seçeneğini belirleyin.

  5. Services sayfasında service-provider hizmetinin listelendiğini doğrulayın.

Adım 2: Tüketiciyi oluşturma

RestTemplate ve FeignClient kullanarak sağlayıcıyı çağıran ve aynı MSE Nacos kayıt defterine kaydedilen bir Spring Cloud uygulaması oluşturun.

1. Maven projesi oluşturma

nacos-service-consumer adlı bir Maven projesi oluşturun.

2. Bağımlılıkları ekleme

pom.xml dosyasına aşağıdakileri ekleyin. Sağlayıcıya kıyasla tüketici bildirim temelli REST çağrıları için spring-cloud-starter-openfeign bağımlılığını içerir.

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

<dependencies>
    <!-- Nacos service discovery -->
    <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>
    <!-- Declarative REST client -->
    <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>

3. FeignClient arayüzünü oluşturma

src/main/java dizini altında com.aliware.edas adlı bir paket oluşturun. service-provider hizmetini işaret eden @FeignClient açıklamasına sahip EchoService adlı bir arayüz 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")
public interface EchoService {
    @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
    String echo(@PathVariable("str") String str);
}

4. Uygulama sınıfını oluşturma

Aynı pakette aşağıdaki açıklamalara sahip ConsumerApplication adlı bir sınıf oluşturun:

  • @EnableDiscoveryClient -- hizmet kaydı ve keşfini etkinleştirir

  • @EnableFeignClients -- FeignClient'i etkinleştirir

  • RestTemplate bean'i üzerindeki @LoadBalanced -- RestTemplate'i istemci tarafı yük dengeleme için hizmet keşfi ile entegre eder

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
@EnableFeignClients
public class ConsumerApplication {

    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

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

5. Test denetleyicisi oluşturma

Aynı pakette her iki hizmet keşfi yöntemini de göstermek amacıyla biri RestTemplate diğeri FeignClient kullanan iki uç nokta sunan TestController adlı bir sınıf 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;

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

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

6. Nacos kayıt defteri uç noktasını yapılandırma

src/main/resources dizini altında application.properties adlı bir dosya oluşturun:

spring.application.name=service-consumer
server.port=18082
spring.cloud.nacos.discovery.server-addr=mse.XX.nacos.mse.aliyuncs.com:8848
# To use a custom namespace, uncomment the following line:
# spring.cloud.nacos.discovery.namespace=<namespace-id>

mse.XX.nacos.mse.aliyuncs.com değerini 1. Adım'ın 5. alt adımında açıklandığı gibi MSE Nacos örneğinizin genel uç noktasıyla değiştirin.

Önemli

Nacos yerine bir MSE ZooKeeper veya Eureka kayıt defteri kullanıyorsanız kayıt defteri yapılandırmasını buna göre değiştirin. Bkz. Kullanım notları.

7. Tüketici kaydını doğrulama

  1. Tüketiciyi başlatmak için ConsumerApplication öğesinin main yöntemini çalıştırın.

  2. MSE konsoluna giriş yapın ve üst gezinme çubuğundan bir bölge seçin.

  3. Sol gezinme bölmesinde Microservices Registry > Instances seçeneğini belirleyin. Örnek adına tıklayın.

  4. Service Management > Services seçeneğini belirleyin.

  5. Services sayfasında service-consumer hizmetinin listelendiğini doğrulayın.

Adım 3: Hizmet çağrılarını test etme

Her iki uygulama da çalışırken tüketicinin sağlayıcıyı keşfedip çağırabildiğini doğrulayın.

Linux, UNIX veya macOS:

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

Windows: Bir tarayıcı açın ve aşağıdaki URL'lere gidin:

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

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

RestTemplate uç noktası için beklenen çıktı:

rest-rest

FeignClient uç noktası için beklenen çıktı:

feign-rest

Her iki yanıt da eşleşiyorsa tüketici MSE Nacos kayıt defteri aracılığıyla sağlayıcıyı keşfetmiş ve çağırmıştır.

SSS

Hizmetler kayıt sonrasında MSE konsolunda görünmüyor

Varsayılan olarak genel IP adresi izin listesi 127.0.0.1/32 olarak ayarlanır ve bu durum tüm harici erişimi engeller. Sağlayıcı ve tüketici makinelerinizin genel IP adreslerini izin listesine ekleyin. Bkz. Genel IP adresi izin listesi yapılandırma.

MSE hangi Spring Cloud sürümlerini destekler?

Spring Cloud sürümü Spring Cloud Alibaba sürümü Durum
Greenwich 2.1.1.RELEASE Etkin
Finchley 2.0.1.RELEASE Etkin
Edgware 1.5.1.RELEASE Kullanımdan kaldırıldı

Spring Cloud Edgware kullanımdan kaldırılmıştır. Yeni uygulamalarda kullanmayın.