Tüm Ürünler
Search
Belge Merkezi

Enterprise Distributed Application Service:Build service gateways

Son Güncelleme:Oct 03, 2026

Hizmet ağ geçidi, URL yolu, üstbilgiler veya sorgu parametreleri gibi yapılandırılabilir kurallara dayanarak gelen istemci isteklerini arka uç mikro hizmetlere yönlendirir. Bu konuda, Nacos'u hizmet kayıt defteri olarak kullanarak Spring Cloud Gateway veya Spring Cloud Netflix Zuul ile bir ağ geçidinin nasıl oluşturulacağı açıklanmaktadır.

Adım adım kurulum sürecini atlamak istiyorsanız eksiksiz demo projelerini indirin:

Spring Cloud Gateway istekleri nasıl yönlendirir

Spring Cloud Gateway, istekleri üç temel yapı taşı üzerinden işler:

Yapı Açıklama
Route (Rota) Temel yapı taşıdır. Her rota, gelen bir isteği bir arka uç hizmetine eşler; bir kimlik (ID), hedef URI, bir veya daha fazla predicate ve isteğe bağlı filter'lardan oluşur.
Predicate Gelen istekle (yol, üstbilgi, sorgu parametresi vb.) karşılaştırılan bir eşleşme koşuludur. Tüm predicate'ler true döndüğünde rota eşleşmiş olur.
Filter İstek aşağı akışa iletilmeden önce veya sonra isteği ya da yanıtı değiştiren bir işleme adımıdır. Örneğin, StripPrefix=1 kod bloğu, istek aşağıya gönderilmeden önce ilk yol segmentini kaldırır.

İstek akışı şu şekildedir: İstemci -> Ağ Geçidi İşleyici Eşlemesi (predicate'leri değerlendirerek bir rotayla eşleştirir) -> Ağ Geçidi Web İşleyicisi (filter zincirini çalıştırır) -> Arka Uç Hizmeti. Filter'lar, proxy edilen istekten önce ve sonra çalışarak üstbilgileri değiştirmenize, yolları yeniden yazmanıza veya kimlik doğrulamayı ağ geçidi düzeyinde eklemenize olanak tanır.

Ön koşullar

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

  • Ortam değişkenleri yapılandırılmış şekilde Maven yüklü olmalıdır.

  • En son Nacos Server indirilmiş olmalıdır.

  • İsteğe bağlı:

Nacos Server'ı başlatın

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

  2. nacos/bin dizinine gidin ve Nacos Server'ı tek başına modda başlatın:

    • Linux, UNIX veya macOS için:

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

Spring Cloud Gateway ile hizmet ağ geçidi oluşturma

Spring Cloud Gateway, Project Reactor ve Spring WebFlux üzerine kuruludur ve engellemeyen, reaktif bir ağ geçidi sağlar.

1. Adım: Ağ geçidi projesini oluşturun

  1. spring-cloud-gateway-nacos adında bir Maven projesi oluşturun.

  2. 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:

        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.4.RELEASE</version>
            <relativePath/>
        </parent>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-gateway</artifactId>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <version>2.1.1.RELEASE</version>
            </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. GatewayApplication adlı başlangıç sınıfını oluşturun:

        @SpringBootApplication
        @EnableDiscoveryClient
        public class GatewayApplication {
            public static void main(String[] args) {
                SpringApplication.run(GatewayApplication.class, args);
            }
        }

2. Adım: Yönlendirme kurallarını yapılandırın

Aşağıdaki yapılandırmayı application.yaml dosyasına ekleyin. Nacos Server farklı bir makinede çalışıyorsa 127.0.0.1:8848 adresini gerçek Nacos Server adresinizle değiştirin.

server:
  port: 18012

spring:
  application:
    name: spring-cloud-gateway-nacos
  cloud:
    gateway:
      routes:
      - id: service-provider
        uri: lb://service-provider
        predicates:
        - Path=/provider1/**
        filters:
        - StripPrefix=1
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

Bu rota yapılandırması aşağıdaki şekilde çalışır:

Bileşen Değer Açıklama
Predicate Path=/provider1/** Yolu /provider1/ ile başlayan tüm istekleri eşleştirir.
URI lb://service-provider Eşleşen istekleri istemci tarafı yük dengeleme kullanarak service-provider hizmetine iletir.
Filter StripPrefix=1 İletmeden önce ilk yol segmentini kaldırır. Örneğin, /provider1/echo/hello adresi /echo/hello haline gelir.

3. Adım: Ağ geçidini başlatın ve kaydı doğrulayın

  1. Ağ geçidini başlatmak için GatewayApplication ana işlevini çalıştırın.

  2. Varsayılan kullanıcı adı ve şifre (nacos) ile http://127.0.0.1:8848/nacos adresinden Nacos Server konsolunu açın.

  3. Sol gezinme bölmesinde Service Management > Services seçeneğini belirleyin. Hizmet listesinde spring-cloud-gateway-nacos öğesinin göründüğünü onaylayın.

Spring Cloud Netflix Zuul ile hizmet ağ geçidi oluşturma

Zuul, engelleyen G/Ç modeline dayalı alternatif bir ağ geçidi seçeneğidir. Netflix OSS yığınını zaten kullanan uygulamalar için uygundur.

1. Adım: Ağ geçidi projesini oluşturun

  1. spring-cloud-zuul-nacos adında bir Maven projesi oluşturun.

  2. Aşağıdaki bağımlılıkları pom.xml dosyasına ekleyin. Bu örnekte Spring Boot 2.1.4.RELEASE, Spring Cloud Greenwich.SR1 ve Spring Cloud Alibaba 0.9.0 kullanılmaktadır:

        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.4.RELEASE</version>
            <relativePath/>
        </parent>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-webflux</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <version>2.1.1.RELEASE</version>
            </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. ZuulApplication adlı başlangıç sınıfını oluşturun:

        @SpringBootApplication
        @EnableZuulProxy
        @EnableDiscoveryClient
        public class ZuulApplication {
            public static void main(String[] args) {
                SpringApplication.run(ZuulApplication.class, args);
            }
        }

2. Adım: Yönlendirme kurallarını yapılandırın

Aşağıdaki yapılandırmayı application.properties dosyasına ekleyin. Nacos Server farklı bir makinede çalışıyorsa 127.0.0.1:8848 adresini gerçek Nacos Server adresinizle değiştirin.

spring.application.name=spring-cloud-zuul-nacos
server.port=18022

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

zuul.routes.opensource-provider1.path=/provider1/**
zuul.routes.opensource-provider1.serviceId=service-provider

Bu yapılandırma, yolu /provider1/ ile başlayan tüm istekleri service-provider arka uç hizmetine yönlendirir.

3. Adım: Ağ geçidini başlatın ve kaydı doğrulayın

  1. Ağ geçidini başlatmak için ZuulApplication ana işlevini çalıştırın.

  2. Varsayılan kullanıcı adı ve şifre (nacos) ile http://127.0.0.1:8848/nacos adresinden Nacos Server konsolunu açın.

  3. Sol gezinme bölmesinde Service Management > Services seçeneğini belirleyin. Hizmet listesinde spring-cloud-zuul-nacos öğesinin göründüğünü onaylayın.

Hizmet sağlayıcı oluşturma

Hem Spring Cloud Gateway hem de Zuul, istekleri iletmek için bir aşağı akış hizmetine ihtiyaç duyar. Ayrıntılar için bkz. Hizmet kaydı ve keşfi uygulama.

Aşağıdaki örnek, tek bir /echo/{string} uç noktasına sahip minimal bir hizmet sağlayıcı oluşturur:

@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {

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

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

İstek iletimini doğrulama

Yerel ortamda doğrulama

Hem ağ geçidini hem de hizmet sağlayıcıyı başlatın, ardından ağ geçidi üzerinden bir istek gönderin.

Spring Cloud Gateway için (bağlantı noktası 18012):

curl http://127.0.0.1:18012/provider1/echo/hello

Zuul için (bağlantı noktası 18022):

curl http://127.0.0.1:18022/provider1/echo/hello

Başarılı bir yanıt hello değerini döndürür; bu durum ağ geçidinin isteği service-provider hizmetine ilettiğini ve /provider1 ön ekini kaldırdığını doğrular.

EDAS Spring Cloud application development: build a Zuul gateway

EDAS'a dağıtım

Uygulamayı Enterprise Distributed Application Service (EDAS) ortamına dağıtın. Dağıtım talimatları için bkz. Hizmet kaydı ve keşfi uygulama.

EDAS hizmet kayıt defteri, Nacos'un ticari bir sürümüdür. EDAS'a dağıtım yapılırken platform, Nacos bağlantı ayrıntılarını (IP adresi, hizmet bağlantı noktası, ad alanı, AccessKey ID, AccessKey secret ve bağlam yolu) otomatik olarak yapılandırır. Ek yapılandırma gerekmez. Orijinal şirket içi Nacos ayarlarını ihtiyaca göre koruyun veya kaldırın.

Sürüm uyumluluğu

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 yaşam döngüsünün sonuna ulaşmıştır. Yeni uygulamalarda kullanmayın.

Sonraki adımlar