Alibaba Cloud Service Mesh (ASM) mendukung manajemen terpadu semua trafik utara-selatan dan timur-barat di dalam kluster. Dengan mengonfigurasi batas waktu trafik, pengulangan, pembatasan laju, pemutusan sirkuit, antrian, pra-pemuatan, dan fallback, ASM meningkatkan ketersediaan tinggi sistem terdistribusi dari berbagai dimensi. Topik ini menjelaskan konsep dan skenario berbagai kemampuan ketersediaan tinggi dari Service Mesh.
Pengenalan Kemampuan
Dalam sistem terdistribusi, perlindungan dan penjadwalan trafik sangat penting untuk memastikan stabilitas sistem dan ketersediaan tinggi. Kompleksitas sistem ini berarti bahwa setiap fluktuasi atau anomali trafik dapat menyebabkan kegagalan layanan, efek avalan, atau kehabisan sumber daya.
Kerangka kerja pengembangan layanan tradisional, seperti Resilience4j, menyediakan fitur ketersediaan tinggi seperti pembatasan laju dan pemutusan sirkuit. Namun, Service Mesh menawarkan kemampuan ini pada tingkat infrastruktur jaringan yang menampilkan integrasi non-intrusif, kopling rendah, dan konfigurasi fleksibel.
Berikut adalah penjelasan rinci tentang setiap fitur ketersediaan tinggi:
Pembatasan Laju: melindungi sistem dari kelebihan beban
Pembatasan laju adalah kebijakan dasar untuk menjaga stabilitas layanan dalam sistem terdistribusi. Ini memberikan kontrol presisi atas trafik untuk melindungi layanan backend dari dampak trafik tinggi, kelebihan beban layanan, kehabisan sumber daya, atau serangan jahat, sehingga mengurangi biaya dan meningkatkan pengalaman pengguna. Dalam skenario multitenansi, pembatasan laju dapat diterapkan untuk setiap penyewa secara individual untuk manajemen trafik granular dan penggunaan yang adil.
ASM menawarkan kemampuan perlindungan komprehensif untuk sistem terdistribusi melalui berbagai kebijakan pembatasan laju:
Pembatasan lokal dan global
Proxy mesh Envoy mendukung dua jenis metode pembatasan laju: pembatasan lokal dan global.
Skenario
Pembatasan lokal dan global dapat mendukung sebagian besar skenario umum: pembatasan laju untuk layanan tertentu di dalam kluster atau pada rute spesifik gateway, memungkinkan kuota pembatasan laju terpisah berdasarkan kecocokan permintaan tertentu.
Pembatasan global: Diimplementasikan di beberapa layanan menggunakan layanan pembatasan terpusat dan database Redis.
Pembatasan lokal: Konfigurasi yang lebih sederhana yang tidak bergantung pada komponen eksternal, tetapi setiap replika memiliki pembatas laju independen sendiri.
Pembatasan laju berbasis suite penjadwalan trafik ASM
Suite penjadwalan trafik ASM adalah arsitektur penjadwalan trafik terpadu berbasis Service Mesh. Ini mencakup berbagai kebijakan penjadwalan trafik yang bertujuan untuk mencapai penjadwalan dan manajemen beban permintaan terpadu dalam aplikasi terdistribusi berbasis cloud-native. Suite ini mendukung penggunaan RateLimitingPolicy untuk pembatasan laju.
Skenario
RateLimitingPolicy mendukung fitur canggih seperti pengelompokan permintaan berdasarkan tag dan penerapan pembatasan laju dalam setiap grup, cocok untuk skenario kontrol granular dalam lingkungan multitenansi.
Kontrol konkurensi trafik: melindungi sumber daya kritis sistem
Kontrol konkurensi adalah fitur ketersediaan tinggi lainnya yang mengelola jumlah permintaan konkuren untuk mencegah kehabisan sumber daya sistem. Berbeda dengan pembatasan laju, kontrol konkurensi ideal untuk layanan yang bergantung pada sumber daya sistem kritis, seperti thread pool atau database, untuk meningkatkan keamanan dan efisiensi pemanfaatan sumber daya.
ASM menawarkan dua mekanisme kontrol konkurensi utama:
Kontrol konkurensi berbasis suite penjadwalan trafik ASM
Suite penjadwalan trafik ASM mendukung penggunaan ConcurrencyLimitingPolicy untuk mengontrol jumlah permintaan konkuren.
Skenario
Jika batas konkurensi relatif tetap untuk suatu sistem, Anda dapat mengonfigurasi batas konkurensi tetap untuk layanan tertentu dalam kluster. Permintaan yang melebihi batas akan menerima respons 429.
Menggunakan ASMAdaptiveConcurrency untuk kontrol konkurensi adaptif
Envoy mendukung metode kontrol konkurensi adaptif, yang dapat diaktifkan melalui ASMAdaptiveConcurrency. ASMAdaptiveConcurrency menggunakan algoritma untuk menjaga batas konkurensi mendekati permintaan konkuren yang dapat diterima oleh layanan tujuan, menolak permintaan yang melebihi batas ini dengan respons 503 dan pesan kesalahan "mencapai batas konkurensi".
Skenario
Jika batas konkurensi untuk suatu sistem berubah secara signifikan dan sulit diperkirakan, AdaptiveConcurrency dari ASM dapat digunakan untuk membatasi konkurensi. Juga disarankan untuk mengaktifkan fitur pengulangan untuk layanan melalui DestinationRule setelah mengaktifkan AdaptiveConcurrency agar permintaan yang ditolak dapat berhasil diulang.
Pemutusan sirkuit trafik: mengisolasi node bermasalah untuk mencegah efek avalan
Pemutusan sirkuit sangat penting dalam sistem terdistribusi, memungkinkan pemutusan cepat dari layanan ketika anomali terjadi, sehingga mengisolasi layanan bermasalah dan mencegah kesalahan menyebar.
ASM menawarkan kemampuan pemutusan sirkuit pada berbagai dimensi dan tingkat:
Pemutusan sirkuit tingkat kumpulan koneksi
Pemutusan sirkuit kumpulan koneksi didukung oleh aturan tujuan, membatasi jumlah maksimum koneksi HTTP/1 atau TCP ke host layanan tujuan.
Skenario
Strategi ini mencapai pemutusan sirkuit dengan membatasi jumlah koneksi TCP dan digunakan untuk layanan di mana kode status HTTP tidak dapat menunjukkan masalah.
Pemutusan sirkuit tingkat host
Pemutusan sirkuit tingkat host juga didukung oleh aturan tujuan. Ini memantau kesalahan dalam jendela waktu dan memutus permintaan jika tingkat kesalahan melebihi ambang batas.
Skenario
Pemutusan sirkuit tingkat host bekerja secara independen untuk setiap host upstream, menyingkirkan host dengan kode status 5xx terus-menerus dari kolam penyeimbangan beban secara sementara. Ini cocok untuk mendeteksi kesalahan terus-menerus karena masalah beban kerja tunggal tetapi tidak untuk antarmuka API tertentu.
Pemutusan sirkuit tingkat rute
ASM mendukung konfigurasi aturan pemutus sirkuit untuk trafik timur-barat antar layanan dan pada rute tertentu. Untuk informasi lebih lanjut, lihat dokumen referensi.
Skenario
Pemutusan sirkuit tingkat rute bekerja pada tingkat layanan, mendeteksi kesalahan terus-menerus dalam API layanan tertentu karena ketergantungan layanan atau kesalahan logika.
Fallback trafik: menangani skenario kegagalan panggilan
Ketika layanan mikro gagal atau tidak dapat digunakan, mekanisme fallback memanggil layanan alternatif untuk memproses permintaan guna memastikan stabilitas dan ketersediaan seluruh sistem.
Skenario
Menggunakan pemutusan sirkuit tingkat host dan fallback trafik bersama-sama memungkinkan beralih ke layanan cadangan selama pemadaman, mempertahankan ketersediaan sistem selama pemutusan sirkuit.
Pra-pemuatan trafik: transisi mulus untuk penyebaran versi baru
Penyebaran biru-hijau tradisional atau pembaruan bergulir dapat menyebabkan tekanan berlebih ketika versi layanan baru langsung menangani semua trafik. Pra-pemuatan layanan memperkenalkan trafik secara bertahap, seperti memulai dengan 10% permintaan dan secara bertahap meningkat, yang lebih cocok untuk layanan dengan biaya cold start tinggi.
ASM mendukung dua tingkat kemampuan pra-pemuatan trafik:
Pemanasan
Fitur pemanasan didukung oleh aturan tujuan, memungkinkan instance layanan secara bertahap meningkatkan jumlah permintaan dalam jendela waktu yang dikonfigurasi.
Skenario
Ketika peminta mengirim permintaan ke layanan tujuan dan endpoint host upstream layanan tujuan berada dalam jendela mulai lambat, penyeimbang beban akan secara tepat mengurangi trafik yang dialokasikan ke host upstream tersebut. Fitur ini ideal untuk skenario seperti perluasan skala layanan atau merilis versi baru, karena memungkinkan pra-pemuatan host upstream baru yang dimulai dari layanan.
Fitur pra-pemuatan mulai lambat tidak berlaku ketika layanan online baru atau endpoint host upstream opsional terbatas.
Pengoperasian layanan progresif berbasis suite penjadwalan trafik ASM
Mensinkronkan konfigurasi LoadRampingPolicy saat merilis layanan baru dapat secara bertahap meningkatkan trafik yang diterimanya, memastikan transisi yang mulus.
Skenario
Suite penjadwalan trafik ASM menggunakan sampler permintaan untuk menolak sebagian permintaan, memastikan bahwa total trafik yang diterima layanan meningkat secara perlahan. Metode ini cocok untuk peluncuran layanan baru tetapi tidak untuk perluasan skala layanan atau peluncuran versi baru.
Batas waktu dan pengulangan: memastikan keandalan layanan
Batas waktu dan pengulangan adalah langkah toleransi kesalahan umum dalam sistem terdistribusi, memastikan tingkat ketersediaan tertentu bahkan ketika layanan sesekali mengalami kesalahan. Batas waktu mencegah suspensi permintaan panjang, sementara pengulangan menyelesaikan masalah seperti jitter jaringan atau kegagalan sementara.
Antrian permintaan dan penjadwalan berbasis prioritas: bertahan pada jam sibuk
Antrian permintaan adalah mekanisme berbasis pembatasan laju dan batas konkurensi. Jika laju trafik atau jumlah permintaan konkuren melebihi batas atas permintaan yang dapat diproses sistem, permintaan berikutnya tidak langsung ditolak. Sebagai gantinya, mereka diantrikan, di mana mereka menunggu pemrosesan setelah permintaan sebelumnya diproses.
ASM menawarkan tiga kebijakan penjadwalan berbasis prioritas yang berfokus pada konkurensi, laju trafik, dan latensi dengan menggunakan suite penjadwalan trafiknya. Ini juga memungkinkan penjadwalan berbasis prioritas permintaan yang diantrikan. Ini memastikan bahwa permintaan prioritas tinggi ditangani terlebih dahulu untuk mempertahankan ketersediaan dan stabilitas fitur sistem kritis atau meningkatkan pengalaman pengguna untuk penyewa utama.
Berikut ini adalah kebijakan yang didukung untuk antrian permintaan dan penjadwalan berbasis prioritas:
Penjadwalan permintaan berbasis prioritas di bawah konkurensi terkendali
Anda dapat mengonfigurasi kebijakan ConcurrencySchedulingPolicy untuk menentukan apakah sistem kelebihan beban berdasarkan batas konkurensi yang ditentukan. Jika konkurensi permintaan melebihi batas ini, permintaan tambahan diantrikan dan dijadwalkan sesuai dengan prioritas mereka.
Skenario
Kebijakan ini ideal untuk aplikasi yang memiliki batas konkurensi dan layanan yang mengalami fluktuasi trafik signifikan, karena menggunakan batas konkurensi untuk mengidentifikasi apakah sistem kelebihan beban.
Penjadwalan permintaan berbasis prioritas di bawah laju terkendali
Anda dapat mengonfigurasi kebijakan QuotaSchedulingPolicy untuk menentukan apakah sistem kelebihan beban berdasarkan batas laju trafik yang ditentukan. Jika konkurensi permintaan melebihi batas ini, permintaan tambahan diantrikan dan dijadwalkan sesuai dengan prioritas mereka.
Skenario
Kebijakan ini ideal untuk aplikasi yang memiliki batas laju trafik dan layanan yang mengalami fluktuasi trafik signifikan, karena menggunakan batas laju trafik untuk mengidentifikasi apakah sistem kelebihan beban.
Penjadwalan permintaan berbasis prioritas berdasarkan latensi rata-rata
Anda dapat mengonfigurasi kebijakan AverageLatencySchedulingPolicy untuk membandingkan latensi real-time permintaan dengan rata-rata historis untuk mengidentifikasi overload trafik. Penyimpangan signifikan menunjukkan bahwa sistem kelebihan beban, dan permintaan tambahan kemudian diantrikan dan dijadwalkan sesuai dengan prioritas mereka.
Skenario
Metode adaptif ini cocok untuk mengantre dan memprioritaskan permintaan ketika sulit untuk menentukan laju atau konkurensi maksimum yang dapat diterima untuk layanan.