Gateway cloud-native MSE mendukung beberapa mode routing: single-service, berbasis persentase, berbasis tag, mock, dan redirection.
Single-service routing
Gateway cloud-native meneruskan permintaan ke layanan backend tertentu berdasarkan aturan routing. Untuk informasi lebih lanjut tentang konfigurasi layanan, lihat Add a service.
Gateway mencocokkan permintaan dengan aturan routing yang telah Anda konfigurasikan. Contohnya:
-
Gateway meneruskan semua permintaan yang sesuai dengan aturan routing /user ke layanan user.
-
Gateway meneruskan semua permintaan yang sesuai dengan aturan routing /order ke layanan order.

Percentage-based routing
Gateway cloud-native mendistribusikan permintaan ke beberapa layanan backend berdasarkan bobot yang dikonfigurasikan untuk setiap layanan. Skenario umum meliputi:
-
Multiple Registry Centers
Saat Anda mengganti registri layanan, Anda dapat menerapkan replika layanan yang menggunakan registri baru sambil tetap mempertahankan layanan dan registri asli. Trafik secara bertahap dialihkan dari layanan asli ke layanan baru. Setelah stabilitas layanan baru diverifikasi, Anda dapat meneruskan seluruh trafik ke layanan tersebut. Migrasi ini mendukung rollback jika layanan baru tidak memenuhi kebutuhan Anda.
Gambar berikut menunjukkan contoh di mana layanan user bermigrasi dari Nacos ke CoreDNS bawaan untuk Kubernetes. CoreDNS harus digunakan bersama dengan sumber daya layanan.

-
O&M System Differences
Secara tradisional, sebagian besar layanan berjalan pada mesin virtual seperti instans Alibaba Cloud Elastic Compute Service (ECS). Seiring semakin banyak perusahaan yang bermigrasi ke platform berbasis Kubernetes seperti Alibaba Cloud Container Service for Kubernetes (ACK), Anda dapat menerapkan replika layanan pada kluster Kubernetes dan mendaftarkannya dengan nama baru di registri. Dua layanan dengan fitur identik kemudian ada: satu di instans ECS dan satu lagi di kluster Kubernetes. Trafik secara bertahap dialihkan dari ECS ke Kubernetes, dan Anda dapat menyesuaikan persentase atau melakukan rollback kapan saja.
Sebagai contoh, misalkan Anda ingin memigrasikan layanan user yang menggunakan Nacos sebagai registri dari ECS ke platform Alibaba Cloud ACK.

Tag-based routing
Gateway cloud-native meneruskan permintaan ke versi layanan yang berbeda berdasarkan bobot yang dikonfigurasikan untuk setiap versi. Untuk informasi lebih lanjut tentang konfigurasi versi layanan, lihat Manage service versions. Skenario umum meliputi:
-
Canary release
Rilis canary mengalihkan sejumlah kecil trafik ke versi layanan baru untuk verifikasi. Jika hasilnya sesuai ekspektasi, sisa trafik secara bertahap dimigrasikan ke versi baru tersebut.
Sebagai contoh, layanan user yang diterapkan pada kluster ACK saat ini menjalankan v1, dan v2 direncanakan untuk dirilis. Anda dapat melakukan rilis canary dengan salah satu cara berikut:
-
By ratio
Routing berbasis tag digunakan untuk meneruskan permintaan /user ke layanan user v1. Anda dapat menambahkan layanan user v2 pada halaman manajemen layanan di Konsol Microservices Engine (MSE), lalu menambahkan layanan user v2 ke daftar layanan tujuan untuk routing berbasis tag. Anda dapat mengonfigurasi bobot untuk menentukan persentase trafik yang diteruskan ke layanan user v2.

-
Tags
Routing berbasis tag digunakan untuk meneruskan permintaan /user ke layanan user v1. Anda dapat menambahkan entri rute /user dan mengonfigurasi tag yang menunjukkan bahwa rute ini digunakan untuk rilis canary. Sebagai contoh, tag tersebut dapat berupa header stage dengan nilai gray. Rute ini digunakan untuk meneruskan permintaan yang memiliki header tersebut ke layanan user v2.

-
-
Tag-based routing
Di lingkungan produksi, beberapa versi layanan dapat berdampingan dalam jangka waktu lama, dengan masing-masing versi menangani jenis permintaan yang berbeda. Sebagai contoh, permintaan dengan nilai header yang berbeda dapat diteruskan ke versi layanan yang berbeda. Routing berbasis tag juga berlaku ketika beberapa lingkungan (pengujian, staging, dan produksi) berdampingan, dengan menggunakan tag untuk membedakan permintaan masing-masing lingkungan.
Sebagai contoh, pada aplikasi berikut, layanan user menggunakan layanan kontainer K8s untuk penemuan layanan dan memiliki tiga lingkungan pengembangan (test, pre, dan online). Pengaturan untuk permintaan ke /user adalah sebagai berikut:
-
Jika nilai header stage adalah test, trafik diteruskan ke layanan user di lingkungan pengujian.
-
Jika nilai header stage adalah pre, trafik diteruskan ke layanan user di lingkungan staging.
-
Jika nilai header stage adalah online, trafik diteruskan ke layanan user di lingkungan produksi.

-
-
High-availability deployment
Untuk memastikan ketersediaan layanan, layanan identik dapat diterapkan pada beberapa kluster Kubernetes. Anda dapat mengelola instans layanan berdasarkan kluster menggunakan metadata node dan menyesuaikan bobot untuk mendistribusikan trafik di antara kluster. Jika suatu kluster gagal, atur bobotnya menjadi 0 agar seluruh trafik diteruskan ke kluster yang tersisa.
Sebagai contoh, pada sistem aplikasi berikut, penemuan layanan dilakukan pada layanan user yang diterapkan pada kluster ACK A dan B. Untuk permintaan /user, 80% trafik diteruskan ke layanan user yang diterapkan pada kluster A, dan 20% trafik diteruskan ke layanan user yang diterapkan pada kluster B.

Mock routing
Routing mock mengembalikan respons tetap untuk suatu rute, memungkinkan Anda memverifikasi apakah permintaan diteruskan dengan benar. Hal ini memungkinkan pengembangan antarmuka depan dan backend berjalan secara paralel.
Sebagai contoh, saat layanan backend user belum selesai, Anda dapat mengonfigurasi respons tetap untuk operasi API-nya sehingga pengembang antarmuka depan dapat menguji proses routing. Setelah layanan backend siap, ubah tipe rute dari Mock ke layanan aktual untuk debugging gabungan.

Redirection routing
Gateway cloud-native dapat mengalihkan permintaan ke nama domain atau path yang berbeda. Ini umumnya digunakan untuk migrasi nama domain dan perubahan API.
Sebagai contoh, nama domain layanan saat ini adalah old.example.com dan path-nya adalah /test. Gateway cloud-native mengalihkan permintaan dari old.example.com/test ke new.example.com/dev.
