Tüm Ürünler
Search
Belge Merkezi

Serverless App Engine:Spring Cloud uygulamalarını SAE'ye sorunsuz şekilde geçirin

Son Güncelleme:Oct 06, 2026

Alibaba Cloud üzerinde çalışan bir Spring Cloud kümesini, canlı trafiği kesintiye uğratmadan Serverless App Engine (SAE) ortamına taşıyın. Bu konu, geçişi tamamlanmış ve tamamlanmamış uygulamaların aynı hizmet ağında birlikte çalıştığı çift kayıt ve çift abonelik yaklaşımını ele alır. Uygulamalar tüm süreç boyunca yalnızca bir kez yeniden başlatılır.

Çalışan bir demo sürümü şu adreste mevcuttur: sc-migration-examples.zip.

Başlamadan önce

Geçiş işlemini başlatmadan önce aşağıdaki kontrol listesini inceleyin. Engelleyici unsurları erken aşamada tespit etmek, geri alma işlemi gerektiren eksik geçişleri önler.

Kontrol Karşılanmazsa alınacak aksiyon
Tüm uygulamalar Spring Cloud hizmet keşfini (Eureka veya Consul) kullanır Hizmet keşfini atlayarak hizmetlere doğrudan IP veya ana makine adı üzerinden erişen uygulamalar bu yaklaşımı kullanamaz. Geçiş yapmadan önce bu istemcileri güncelleyin.
ECS örnek bağlantı noktaları kullanılabilir durumda (başka bir işlem tarafından meşgul edilmemiş) Bağlantı noktaları meşgulse bunun yerine trafik bölme çözümünü kullanın.
Uygulamalar durumu tutmaz (stateless) Durum tutan (stateful) uygulamalar, durum geçişi için ek planlama gerektirir.
Depolama ve mesajlaşma için Alibaba Cloud hizmetleri (ApsaraDB RDS, Message Queue) kullanılır Alibaba Cloud dışındaki depolama ve mesajlaşma sistemleri ayrı koordinasyon gerektirir. Destek için 32874633 numaralı DingTalk grubuna katılın.

Geçişe genel bakış

Migration process

Geçiş süreci üç aşamadan oluşur:

Aşama Adımlar Gerekli mi?
Geçiş 1. Adım: Uygulamaları geçirin Gerekli
Geçiş sonrası 2. Adım: SLB'yi geçirin veya DNS'i güncelleyin İsteğe bağlı
Geçiş sonrası 3. Adım: Depolama ve mesaj kuyruklarını geçirin İsteğe bağlı

Bir geçiş çözümü seçin

Kesintisiz geçişi destekleyen iki çözüm bulunmaktadır:

Çözüm Nasıl çalışır? Ne zaman kullanılır?
Çift kayıt ve çift abonelik (bu konu) Uygulamaları hem orijinal kayıt defterine hem de Nacos'a aynı anda kaydedin. Geçiş süreci boyunca geçişi tamamlanmış ve tamamlanmamış uygulamalar birbirini keşfeder. ECS bağlantı noktalarının kullanılabilir olduğu durumlarda kullanın. Yalnızca bir uygulama yeniden başlatması gerektirir.
Trafik bölme Kayıt defterini Spring Cloud Alibaba aracılığıyla Nacos'a geçirerek SAE üzerinde yeni bir uygulama grubu dağıtın, ardından trafik yönlendirmesini Server Load Balancer (SLB) ve alan adları kullanarak gerçekleştirin. ECS bağlantı noktalarının meşgul olduğu ve örneklerin yeniden kullanılamadığı durumlarda kullanın.

Trafik bölme çözümü için bkz. Uygulamaların hizmet kaydı ve keşfini Nacos olarak değiştirin.

Çift kayıt ve çift abonelik nasıl çalışır?

Aşağıdaki diyagramlar, geçişin her aşamasındaki sistem durumunu göstermektedir.

Başlangıç durumu

Initial status

1. Aşama

Stage 1

2. Aşama

Stage 2

3. Aşama

Stage 3

4. Aşama

Stage 4

Temel özellikler:

  • Geçişi tamamlanmış ve tamamlanmamış uygulamalar birbirini keşfedip çağırarak iş sürekliliğini sağlar.

  • Gerekli tek kod değişiklikleri, iki yeni bağımlılık ve ana sınıfta bulunan bir ek açıklamadır.

  • Tüketici hizmet çağrılarını izleyin ve geçiş ilerlemesini SAE üzerinden gerçek zamanlı takip edin.

  • Kayıt ve abonelik ilkelerini SAE yapılandırma yönetimi aracılığıyla dinamik olarak kontrol edin; tekrarlanan yeniden başlatmalara gerek yoktur. Uygulamalar yalnızca bir kez yeniden başlatılır.

1. Adım: İlk uygulamayı geçirin

1. Bir uygulama seçin

Üst akış bağımlılığı bulunmayan hizmetlerden, yani temel sağlayıcılardan başlayın. Çağrı zinciri karmaşık veya haritalaması zorsa başlangıç için herhangi bir uygulama seçebilirsiniz.

2. Bağımlılıkları ekleyin ve yapılandırmayı güncelleyin

a. Nacos keşif bağımlılığını ekleyin

spring-cloud-starter-alibaba-nacos-discovery bağımlılığını pom.xml dosyasına ekleyin:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>{Version}</version>
</dependency>

b. Nacos sunucu adresini yapılandırın

Aşağıdaki satırı application.properties dosyasına ekleyin:

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

c. Çoklu kayıt defteri geçiş bağımlılığını ekleyin

Spring Cloud varsayılan olarak yalnızca tek bir kayıt defterine izin verir. İkinci bir kayıt defteri eklemek hataya neden olur. edas-sc-migration-starter bağımlılığı bu kısıtlamayı kaldırır ve birden fazla kayıt defterine eşzamanlı kayıt yapılmasını sağlar.

Bu bağımlılığı pom.xml dosyasına ekleyin:

<dependency>
    <groupId>com.alibaba.edas</groupId>
    <artifactId>edas-sc-migration-starter</artifactId>
    <version>1.0.2</version>
</dependency>

3. RibbonClients yapılandırmasını güncelleyin

Birden fazla kayıt defterinden hizmetlere abone olmak için ana sınıfta @RibbonClients değerini MigrationRibbonConfiguration kullanacak şekilde ayarlayın.

Önce:

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

Sonra:

@SpringBootApplication
@RibbonClients(defaultConfiguration = MigrationRibbonConfiguration.class)
public class ConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
}
Bu değişiklikleri yerinde veya SAE üzerinde dağıttıktan sonra, uygulamayı yeniden başlatmadan Spring Cloud Config veya Nacos Config kullanarak uygulamanın hangi kayıt defterlerine kaydolacağını veya abone olacağını kontrol edebilirsiniz. Ayrıntılar için bkz. Hizmet kayıt ve abonelik ilkelerini dinamik olarak ayarlayın ve Uygulama yapılandırmalarını yönetin .

4. Uygulamayı SAE üzerinde dağıtın

Uygulamayı gereksinimlerinize göre dağıtın. Ayrıntılar için bkz. Uygulamaları dağıtın.

5. Geçişi doğrulayın

Aşağıdaki yöntemlerden birini kullanın:

Seçenek 1: İş davranışını kontrol edin

Dağıtımdan sonra iş süreçlerinizin beklendiği gibi çalıştığını onaylayın.

Seçenek 2: Hizmet aboneliği izlemesini kontrol edin

Spring Boot Actuator etkinleştirilmişse, abone olunan her hizmet için RibbonServerList öğesini görüntülemek üzere aşağıdaki uç noktaya erişin. metaInfo içindeki serverGroup alanı, bir düğümün hangi kayıt defterine ait olduğunu gösterir.

Spring Boot sürümü Uç nokta
1.x http://ip:port/dubboRegistry
2.x http://ip:port/actuator/dubboRegistry

Enable Spring Boot Actuator monitoring

2. Adım: Diğer uygulamaları geçirin

1. Adım ile aynı adımları izleyerek kalan tüm uygulamaları sırayla SAE'ye geçirin.

Geçiş sonrası: Temizlik ve sonlandırma

Geçiş bağımlılıklarını kaldırın

Tüm uygulamalar SAE'ye taşındıktan sonra orijinal kayıt defteri yapılandırmasını ve edas-sc-migration-starter bağımlılığını kaldırın.

Önemli

edas-sc-migration-starter yalnızca geçiş amacıyla kullanılan bir bağımlılıktır. Bu bağımlılığın kalması hizmet kararlığını etkilemez ancak Ribbon'un yük dengeleme verimliliğini sınırlar. Geçiştan sonra bağımlılığı kaldırın ve uygulamaları yoğun olmayan saatlerde toplu olarak yeniden başlatın.

SLB'yi geçirin veya DNS ayarlarını güncelleyin

Uygulamalarınızı geçirdikten sonra SLB örneğinizi ve alan adı yapılandırmanızı aşağıdaki gibi yönetin:

SLB örneği

Senaryo Aksiyon
Geçişten önce SLB mevcuttu SLB'yi yeniden kullanın. Bağlama ayrıntıları için bkz. Bir CLB örneğini bir uygulamaya bağlayın ve bunun için genel veya özel bir IP oluşturun.
Geçişten önce SLB yoktu Bir SLB örneği oluşturun ve bunu giriş uygulamasına (API ağ geçidi gibi) bağlayın.
ECS bağlantı noktaları meşgul Trafik bölme çözümünü kullanın. Yeni ECS örnekleri ekleyin, ardından mevcut SLB'yi yeniden kullanın veya yeni bir tane oluşturun.

Alan adı

Senaryo Aksiyon
SLB yeniden kullanıldı Alan adı değişikliği gerekmez.
Yeni SLB oluşturuldu Alan adı ayarlarına yeni SLB'yi ekleyin ve eski girişi kaldırın. Bkz. DNS sunucularını güncelleyin.

Depolama ve mesaj kuyruklarını geçirin

Uygulamanız ApsaraDB RDS ve Message Queue gibi Alibaba Cloud hizmetlerini kullanıyorsa depolama veya mesaj kuyruklarını geçirmeniz gerekmez. Uygulamanız Alibaba Cloud üzerinde dağıtılmamışsa teknik destek için 32874633 numaralı DingTalk grubuna katılın.

Hizmet kayıt ve abonelik ilkelerini dinamik olarak ayarlayın

Geçiş sırasında herhangi bir zamanda uygulama yeniden başlatmasına gerek kalmadan kayıt ve abonelik ilkelerini ayarlamak için SAE'nin yapılandırma yönetimi özelliğini kullanın.

Abonelik ilkesini ayarlayın

SAE varsayılan olarak ilgili tüm kayıt defterlerinden hizmet verilerine abone olur ve bunları toplar.

Yalnızca belirli kayıt defterlerine abone olmak için spring.cloud.edas.migration.subscribes özelliğini ayarlayın:

# Subscribe to services from both Eureka and Nacos
spring.cloud.edas.migration.subscribes=nacos,eureka

# Subscribe to services from Nacos only
spring.cloud.edas.migration.subscribes=nacos

Kayıt ilkesini ayarlayın

SAE varsayılan olarak ilgili tüm kayıt defterlerine kaydolur.

Belirli kayıt defterlerini hariç tutmak için spring.cloud.edas.migration.registry.excludes özelliğini ayarlayın:

# Register with all registries (default — leave blank)
spring.cloud.edas.migration.registry.excludes=

# Disable registration with Eureka only
spring.cloud.edas.migration.registry.excludes=eureka

# Disable registration with Nacos and Eureka
spring.cloud.edas.migration.registry.excludes=nacos,eureka

Uygulamalarınızı yeniden başlatmadan bu özelliği çalışma zamanında güncellemek için SAE'nin yapılandırma yönetimi özelliğini kullanın.