All Products
Search
Document Center

Microservices Engine:Hubungkan Spring Cloud ke MSE Nacos

Last Updated:Jun 22, 2026

Saat Anda mengonfigurasi aplikasi Spring Cloud dengan titik akhir instans MSE Nacos, aplikasi tersebut secara otomatis terdaftar ke registri layanan MSE Nacos saat startup. Pendaftaran ini memungkinkan penemuan layanan, manajemen konfigurasi, dan panggilan antarlayanan. Topik ini menjelaskan cara menghubungkan aplikasi Anda ke registri tersebut.

Prasyarat

Penting

Untuk mengakses MSE Nacos melalui jaringan publik, penyedia layanan dan konsumen layanan harus memiliki akses jaringan publik. Anda juga harus menambahkan alamat IP aplikasi Anda ke daftar putih instans MSE Nacos. Untuk informasi selengkapnya, lihat Konfigurasi daftar putih alamat IP publik.

Buat penyedia layanan

Buat aplikasi penyedia layanan secara lokal, tambahkan dependensi yang diperlukan, aktifkan pendaftaran dan penemuan layanan, serta tentukan instans MSE Nacos sebagai registri layanan.

  1. Buat proyek Maven bernama nacos-service-provider.

  2. Dalam file pom.xml, tambahkan dependensi berikut.

    Contoh ini menggunakan Spring Boot 2.1.4.RELEASE dan Spring Cloud Greenwich.SR1.

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

    Rilis Spring Cloud Greenwich sesuai dengan versi Spring Cloud Alibaba 2.1.1.RELEASE.

    • Jika Anda menggunakan rilis Spring Cloud Finchley, versi Spring Cloud Alibaba yang sesuai adalah 2.0.1.RELEASE.

    • Jika Anda menggunakan rilis Spring Cloud Edgware, versi Spring Cloud Alibaba yang sesuai adalah 1.5.1.RELEASE.

    Penting

    Siklus hidup Spring Cloud Edgware telah dihentikan. Kami menyarankan agar Anda tidak menggunakan versi ini untuk aplikasi baru.

  3. Dalam direktori src\main\java, buat package bernama com.aliware.edas.

  4. Dalam package com.aliware.edas, buat kelas bootstrap penyedia layanan ProviderApplication dan tambahkan kode berikut.

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

    Anotasi @EnableDiscoveryClient mengaktifkan fungsionalitas pendaftaran dan penemuan layanan untuk aplikasi.

  5. Dalam package com.aliware.edas, buat EchoController. Metode ini mengambil parameter dari path URL dan mengembalikannya dalam tanggapan.

    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;
          }
    }              
  6. Dalam direktori src\main\resources, buat file bernama application.properties. Dalam file tersebut, tambahkan konfigurasi berikut dan tentukan titik akhir server Nacos.

    spring.application.name=service-provider
    server.port=18081
    spring.cloud.nacos.discovery.server-addr=mse.XX.nacos.mse.aliyuncs.com:8848
    # Untuk menggunakan namespace kustom, hapus komentar dan konfigurasikan baris berikut:
    #spring.cloud.nacos.discovery.namespace={namespaceId}               

    Pada halaman Instances, Anda dapat melihat titik akhir publik instans MSE Nacos. Formatnya adalah mse.XX.nacos.mse.aliyuncs.com.

    Penting

    Jika Anda menggunakan instans MSE ZooKeeper atau Eureka sebagai registri layanan, gantilah konfigurasi khusus Nacos pada langkah ini dengan konfigurasi yang sesuai untuk ZooKeeper atau Eureka. Untuk informasi selengkapnya, lihat Catatan penggunaan kluster MSE.

  7. Verifikasi bahwa aplikasi berhasil terdaftar.

    1. Jalankan metode main dari ProviderApplication dalam proyek nacos-service-provider untuk menjalankan aplikasi.

    2. Masuk ke Konsol MSE, lalu pilih wilayah di bilah navigasi atas.

    3. Di panel navigasi kiri, pilih Microservices Registry > Instances. Klik nama instans tersebut.

    4. Service ManagementServices

    5. Pada halaman Services, verifikasi bahwa aplikasi service-provider muncul dalam daftar.

Buat konsumen layanan

Bagian ini menjelaskan cara mendaftarkan konsumen layanan dan menggunakan penemuan layanan Nacos dengan dua klien: RestTemplate dan FeignClient.

  1. Buat proyek Maven bernama nacos-service-consumer.

  2. Dalam file pom.xml, tambahkan dependensi berikut.

    <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>        
  3. Dalam direktori src\main\java, buat package bernama com.aliware.edas.

  4. Dalam package com.aliware.edas, konfigurasikan RestTemplate dan FeignClient.

    1. Dalam com.aliware.edas, buat kelas antarmuka bernama EchoService, tambahkan anotasi @FeignClient, lalu konfigurasikan URL HTTP dan metode HTTP yang sesuai.

      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);
      }                   
    2. Dalam com.aliware.edas, buat kelas bootstrap ConsumerApplication dan tambahkan konfigurasi yang relevan.

      • Gunakan anotasi @EnableDiscoveryClient untuk mengaktifkan pendaftaran dan penemuan layanan.

      • Gunakan anotasi @EnableFeignClients untuk mengaktifkan FeignClient.

      • Gunakan anotasi @LoadBalanced untuk mengintegrasikan RestTemplate dengan penemuan layanan.

      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. Dalam package com.aliware.edas, buat kelas bernama TestController untuk mendemonstrasikan dan memverifikasi fitur penemuan layanan.

    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. Dalam direktori src\main\resources, buat file bernama application.properties. Dalam file tersebut, tambahkan konfigurasi berikut untuk menentukan alamat registri layanan Nacos.

    spring.application.name=service-consumer
    server.port=18082
    spring.cloud.nacos.discovery.server-addr=mse.XX.nacos.mse.aliyuncs.com:8848
    # Untuk menggunakan namespace kustom, hapus komentar dan konfigurasikan baris berikut:
    #spring.cloud.nacos.discovery.namespace={namespaceId}

    Pada halaman Instances, Anda dapat melihat titik akhir publik instans MSE Nacos. Formatnya adalah mse.XX.nacos.mse.aliyuncs.com.

    Penting

    Jika Anda menggunakan instans MSE ZooKeeper atau Eureka sebagai registri layanan, gantilah konfigurasi khusus Nacos pada langkah ini dengan konfigurasi yang sesuai untuk ZooKeeper atau Eureka. Untuk informasi selengkapnya, lihat Catatan penggunaan.

  7. Verifikasi bahwa aplikasi berhasil terdaftar.

    1. Jalankan metode main dari ConsumerApplication dalam proyek nacos-service-consumer untuk menjalankan aplikasi.

    2. Masuk ke Konsol MSE, lalu pilih wilayah di bilah navigasi atas.

    3. Di panel navigasi kiri, pilih Microservices Registry > Instances. Klik nama instans tersebut.

    4. Service ManagementServices

    5. Pada halaman Services, verifikasi bahwa aplikasi service-consumer muncul dalam daftar.

Pengujian lokal

Uji panggilan layanan dari konsumen layanan ke penyedia layanan secara lokal.

  • Pada Linux, Unix, atau macOS, gunakan perintah berikut untuk melakukan panggilan layanan.

    curl http://127.0.0.1:18082/echo-rest/rest-rest
    curl http://127.0.0.1:18082/echo-feign/feign-rest
  • Pada Windows, masukkan http://127.0.0.1:18082/echo-rest/rest-rest dan http://127.0.0.1:18082/echo-feign/feign-rest di bilah alamat browser Anda.

    Tanggapan yang berhasil akan mengembalikan string yang diberikan dalam URL. Perintah pertama mengembalikan rest-rest dan yang kedua mengembalikan feign-rest, yang mengonfirmasi keberhasilan panggilan layanan.

    consumer consumes Provider

FAQ

Layanan tidak terlihat di Konsol MSE

Anda harus mengonfigurasi daftar putih untuk akses aplikasi Anda. Untuk informasi selengkapnya, lihat Konfigurasi daftar putih alamat IP publik.

Catatan

Secara default, daftar putih MSE diatur ke 127.0.0.1/32, sehingga memblokir semua akses eksternal.

Versi Spring Cloud yang didukung

  • Untuk Spring Cloud Greenwich, versi Spring Cloud Alibaba yang sesuai adalah 2.1.1.RELEASE.

  • Untuk Spring Cloud Finchley, versi Spring Cloud Alibaba yang sesuai adalah 2.0.1.RELEASE.

  • Untuk Spring Cloud Edgware, versi Spring Cloud Alibaba yang sesuai adalah 1.5.1.RELEASE.

Penting

Siklus hidup Spring Cloud Edgware telah dihentikan. Kami menyarankan agar Anda tidak menggunakan versi ini untuk aplikasi baru.