Jika klaster Spring Cloud Anda yang berisi beberapa aplikasi telah diterapkan di Alibaba Cloud, Anda dapat memigrasikan aplikasi tersebut ke Serverless App Engine (SAE). Topik ini menjelaskan cara memigrasikan aplikasi ke SAE secara mulus serta melakukan registrasi layanan dan penemuan layanan.
Proses migrasi

Wajib: Migrasikan Aplikasi
Umumnya, aplikasi yang akan dimigrasikan tidak memiliki status dan harus dipindahkan terlebih dahulu.
Opsional: Migrasikan Instance Server Load Balancer (SLB) atau Modifikasi Pengaturan Nama Domain
Setelah aplikasi dimigrasikan, Anda perlu memigrasikan instance SLB yang terikat pada aplikasi atau memodifikasi pengaturan nama domain.
Instance Server Load Balancer (SLB)
Jika instance SLB digunakan sebelum migrasi, Anda dapat menggunakan kembali instance tersebut setelah migrasi. Pilih kebijakan untuk mengikat instance SLB ke aplikasi Anda sesuai dengan kebutuhan bisnis. Untuk informasi lebih lanjut, lihat Mengikat instance CLB ke aplikasi dan menghasilkan alamat IP publik atau pribadi untuk aplikasi.
Jika tidak ada instance SLB yang digunakan sebelum migrasi, disarankan untuk membuat instance SLB dan mengikatnya ke aplikasi ingress, seperti gateway API, setelah migrasi, sebagaimana ditunjukkan pada gambar sebelumnya.
Saat memigrasikan aplikasi, disarankan untuk mengaktifkan dual-registration dan dual-subscription guna mengurangi biaya penggunaan Elastic Compute Service (ECS). Jika instance ECS yang ada tidak dapat digunakan karena alasan tertentu (misalnya, port asli yang dikonfigurasikan untuk instance ECS sudah terpakai), Anda perlu menggunakan solusi migrasi pemisahan trafik dan menambahkan instance ECS baru. Setelah migrasi aplikasi selesai, Anda dapat menggunakan kembali instance Server Load Balancer (SLB) yang ada atau membuat instance SLB baru dan mengikatnya ke aplikasi yang telah dimigrasikan sesuai dengan kebutuhan bisnis.
Nama Domain
Jika instance SLB dapat digunakan kembali setelah migrasi, Anda tidak perlu mengubah nama domain.
Untuk membuat instance SLB dan mengaitkannya dengan aplikasi yang telah dimigrasikan, tambahkan instance SLB baru ke pengaturan nama domain dan hapus instance SLB yang tidak diperlukan. Untuk detail lebih lanjut, lihat Ubah server DNS untuk nama domain.
Opsional: Migrasikan penyimpanan dan antrian pesan.
Jika aplikasi Anda diterapkan di Alibaba Cloud dan menggunakan layanan Alibaba Cloud seperti ApsaraDB RDS dan Message Queue, Anda tidak perlu memigrasikan penyimpanan atau antrian pesan.
Jika aplikasi Anda tidak diterapkan di Alibaba Cloud, bergabunglah dengan Grup DingTalk (ID: 32874633) untuk mendapatkan dukungan teknis.
Topik ini memberikan contoh cara memigrasikan aplikasi demo ke SAE secara mulus. Untuk informasi tentang URL unduhan aplikasi demo, lihat Demo.
Solusi migrasi
Anda dapat menggunakan salah satu dari dua solusi berikut untuk memigrasikan aplikasi: pemisahan trafik, serta dual-registration dan dual-subscription. Kedua solusi ini memastikan migrasi aplikasi yang mulus tanpa gangguan bisnis.
Bagian ini menjelaskan solusi migrasi dual-registration dan dual-subscription.
Pemisahan Trafik
Gunakan Spring Cloud Alibaba untuk beralih dari registri layanan asli ke Nacos, kembangkan set aplikasi baru, lalu terapkan aplikasi tersebut di SAE. Kemudian, gunakan SLB dan konfigurasikan nama domain untuk beralih trafik.
Untuk informasi lebih lanjut, lihat Modifikasi Registrasi Layanan dan Penemuan Aplikasi ke Nacos.
Dual-Registration dan Dual-Subscription
Solusi dual-registration dan dual-subscription memungkinkan akses ke registri layanan asli dan registri layanan SAE selama migrasi. Ini memastikan bahwa aplikasi yang telah dimigrasikan dan yang belum dimigrasikan dapat saling memanggil.
Gambar berikut menunjukkan arsitektur solusi migrasi dual-registration dan dual-subscription.
Status awal
Langkah 1
Langkah 2
Langkah 3
Langkah 4
Aplikasi yang telah dimigrasikan dan yang belum dimigrasikan dapat menemukan dan memanggil satu sama lain, memastikan kontinuitas bisnis.
Anda hanya perlu menambahkan dependensi dan memodifikasi sejumlah kecil kode untuk menerapkan dual-registration dan dual-subscription.
Anda dapat melihat detail panggilan layanan konsumen dan kemajuan migrasi secara real-time.
Anda dapat memodifikasi kebijakan registrasi layanan dan langganan secara dinamis tanpa perlu memulai ulang aplikasi berulang kali. Cukup lakukan satu kali restart selama proses migrasi.
Langkah 1: Migrasikan aplikasi pertama
Tetapkan prioritas aplikasi yang ingin Anda migrasikan ke SAE.
Pilih aplikasi dengan prioritas tinggi untuk migrasi. Kami sarankan Anda memulai migrasi dari penyedia dasar. Jika jejaknya kompleks dan sulit dianalisis, Anda dapat memilih aplikasi secara acak untuk dimigrasikan.
Tambahkan dependensi ke aplikasi dan modifikasi konfigurasinya.
Tambahkan dependensi
spring-cloud-starter-alibaba-nacos-discoveryke file pom.xml.<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>{Version}</version> </dependency>Tambahkan alamat IP Server Nacos ke application.properties.
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848Tambahkan dependensi
edas-sc-migration-starteruntuk beberapa registri.Secara default, Spring Cloud hanya memungkinkan Anda menambahkan satu registri sebagai dependensi ke file pom.xml. Jika Anda mencoba menambahkan beberapa registri, kesalahan akan dikembalikan. Untuk mendukung beberapa registri di Spring Cloud, tambahkan dependensi
edas-sc-migration-starter.<dependency> <groupId>com.alibaba.edas</groupId> <artifactId>edas-sc-migration-starter</artifactId> <version>1.0.2</version> </dependency>
Modifikasi konfigurasi default RibbonClients.
Untuk memungkinkan aplikasi berlangganan layanan dari beberapa registri, Anda harus memodifikasi konfigurasi Ribbon yang digunakan untuk load balancing. Di kelas utama startup aplikasi, atur RibbonClients ke
MigrationRibbonConfiguration.Kode berikut adalah kode kelas utama asli:
@SpringBootApplication public class ConsumerApplication { public static void main(String[] args) { SpringApplication.run(ConsumerApplication.class, args); } }Kode berikut adalah kode kelas utama yang dimodifikasi:
@SpringBootApplication @RibbonClients(defaultConfiguration = MigrationRibbonConfiguration.class) public class ConsumerApplication { public static void main(String[] args) { SpringApplication.run(ConsumerApplication.class, args); } }CatatanSetelah aplikasi dimodifikasi di mesin lokal Anda atau diterapkan di SAE, Anda dapat mengelola aplikasi tersebut. Misalnya, Anda dapat mendaftarkan aplikasi dengan registri tertentu atau berlangganan layanan dari registri tertentu. Untuk memenuhi persyaratan tersebut, gunakan Spring Cloud Config atau Nacos Config untuk menyesuaikan konfigurasi aplikasi secara dinamis. Dalam hal ini, Anda tidak perlu memulai ulang aplikasi. Untuk informasi lebih lanjut, lihat Sesuaikan Kebijakan Registrasi Layanan dan Kebijakan Langganan Layanan Secara Dinamis.
Untuk menggunakan Spring Cloud Config atau Nacos Config, Anda harus menambahkan dependensi manajemen konfigurasi ke aplikasi dan memodifikasi konfigurasi terkait. Jika Anda menggunakan Spring Cloud Config, lihat dokumentasi sumber terbuka. Jika Anda menggunakan Nacos Config, lihat Kelola Konfigurasi Aplikasi.
Terapkan aplikasi di SAE.
Terapkan aplikasi di SAE sesuai kebutuhan bisnis Anda. Untuk informasi lebih lanjut, lihat Terapkan Aplikasi.
Gunakan salah satu metode berikut untuk memverifikasi hasilnya.
Periksa apakah bisnis Anda berjalan sesuai harapan.
Lihat data pemantauan langganan layanan.
Spring Boot 1.x: http://ip:port/dubboRegistry
Spring Boot 2.x: http://ip:port/actuator/dubboRegistry
Jika Spring Boot Actuator diaktifkan untuk aplikasi, Anda dapat mengakses Actuator untuk melihat informasi RibbonServerList dari setiap layanan yang dilanggan oleh aplikasi. Gambar berikut menunjukkan URL yang dapat Anda gunakan untuk mengakses Actuator. Bidang
serverGroupdi metaInfo menunjukkan registri layanan untuk node tersebut.
Langkah 2: Migrasikan aplikasi lainnya
Migrasikan semua aplikasi ke SAE secara berurutan. Untuk informasi lebih lanjut, lihat Langkah 1: Migrasikan Aplikasi Pertama.
Langkah 3: Hapus konfigurasi migrasi
Setelah migrasi, hapus konfigurasi registri layanan asli dan dependensi edas-sc-migration-starter yang digunakan selama migrasi.
edas-sc-migration-starter adalah starter khusus untuk migrasi. Jika Anda menggunakan starter ini dalam jangka waktu panjang, starter tidak akan memengaruhi stabilitas layanan, tetapi membatasi efek load balancing Ribbon. Kami sarankan Anda menghapus starter setelah migrasi dan memulai ulang aplikasi secara bertahap selama jam non-puncak.
Sesuaikan Kebijakan Registrasi Layanan dan Kebijakan Langganan Layanan Secara Dinamis
Anda dapat menggunakan fitur manajemen konfigurasi SAE untuk menyesuaikan kebijakan registrasi layanan dan kebijakan langganan layanan selama migrasi.
Sesuaikan Kebijakan Langganan Layanan Secara Dinamis
Kebijakan langganan default memungkinkan SAE untuk berlangganan dan mengumpulkan data layanan dari semua registri terkait.
Untuk berlangganan data dari registri tertentu, Anda dapat menggunakan fitur manajemen konfigurasi SAE untuk memodifikasi properti
spring.cloud.edas.migration.subscribes.spring.cloud.edas.migration.subscribes=nacos,eureka # Berlangganan layanan dari Eureka dan Nacos. spring.cloud.edas.migration.subscribes=nacos # Berlangganan layanan hanya dari Nacos.Sesuaikan Kebijakan Registrasi Layanan Secara Dinamis
Kebijakan registrasi default memungkinkan SAE untuk mendaftar ke semua registri terkait.
Anda dapat menggunakan fitur manajemen konfigurasi SAE untuk menyesuaikan registri layanan.
Gunakan properti
spring.cloud.edas.migration.registry.excludesuntuk menentukan registri yang ingin Anda nonaktifkan.spring.cloud.edas.migration.registry.excludes= # Secara default, nilainya kosong. Ini menunjukkan pendaftaran ke semua registri layanan. spring.cloud.edas.migration.registry.excludes=eureka # Nonaktifkan pendaftaran ke Eureka. spring.cloud.edas.migration.registry.excludes=nacos,eureka # Nonaktifkan pendaftaran ke Nacos dan Eureka.Dalam contoh ini, jika Anda perlu memodifikasi registri tempat aplikasi terdaftar secara dinamis saat aplikasi sedang berjalan, Anda dapat menggunakan fitur manajemen konfigurasi Spring Cloud untuk memodifikasi properti tersebut.