Dalam kerangka layanan mikro, panggilan layanan terpengaruh jika konsumen tidak dapat mendeteksi pengecualian pada instance aplikasi dari penyedia. Hal ini memengaruhi performa dan bahkan ketersediaan layanan yang disediakan oleh konsumen. Fitur outlier ejection memantau ketersediaan instance aplikasi dan menyesuaikannya secara dinamis untuk memastikan keberhasilan panggilan layanan serta meningkatkan stabilitas dan kualitas layanan (QoS). Topik ini menjelaskan cara membuat kebijakan outlier ejection.
Informasi latar belakang
Gambar berikut menunjukkan sistem yang memerlukan outlier ejection. Dalam contoh ini, sistem memiliki Aplikasi A, B, C, dan D, di mana Aplikasi A memanggil instance dari Aplikasi B, C, dan D. Jika instance dari Aplikasi B, C, atau D menjadi abnormal dan Aplikasi A tidak mengidentifikasi instance tersebut, sebagian panggilan yang dimulai oleh Aplikasi A akan gagal. Pada gambar berikut, Aplikasi B memiliki satu instance abnormal, sementara Aplikasi C dan D masing-masing memiliki dua instance abnormal. Jika Aplikasi B, C, dan D memiliki banyak instance abnormal, performa layanan dan ketersediaan Aplikasi A dapat terpengaruh.
Untuk memastikan performa layanan dan ketersediaan Aplikasi A, Anda dapat mengonfigurasi kebijakan outlier ejection untuk Aplikasi A. Setelah dikonfigurasi, Enterprise Distributed Application Service (EDAS) dapat memantau status instance dari Aplikasi B, C, dan D, serta menambah atau menghapus instance secara dinamis untuk memastikan keberhasilan panggilan layanan.

Berikut adalah proses outlier ejection:
EDAS mendeteksi apakah Aplikasi B, C, atau D memiliki instance abnormal. Jika ditemukan instance abnormal, EDAS menentukan apakah akan menghapus instance tersebut berdasarkan parameter Instance Removal Rate Threshold.
EDAS tidak mendistribusikan permintaan panggilan Aplikasi A ke instance yang telah dihapus.
EDAS mendeteksi apakah instance abnormal telah pulih berdasarkan parameter Recovery Detection Unit Time.
Interval deteksi meningkat secara linear sesuai dengan nilai parameter Recovery Detection Unit Time. Nilai default Recovery Detection Unit Time adalah 30.000 ms, atau 0,5 menit. Jika ambang batas yang ditentukan oleh parameter Max Number of Instance Checked Before Restoration tercapai, EDAS mendeteksi apakah instance abnormal telah pulih pada interval deteksi maksimum.
Setelah instance abnormal pulih, EDAS menambahkan kembali instance tersebut ke aplikasi untuk memproses permintaan panggilan. Interval deteksi diatur ulang ke nilai parameter Recovery Detection Unit Time, seperti 30.000 ms.
Jika rasio instance abnormal dari penyedia melebihi ambang batas yang ditentukan oleh parameter Instance Removal Rate Threshold, EDAS menghapus instance abnormal berdasarkan ambang batas ini.
Jika penyedia hanya memiliki satu instance yang tersedia, EDAS tidak akan menghapus instance tersebut meskipun ambang batas yang ditentukan oleh parameter Error Rate Threshold terlampaui.
Buat kebijakan outlier ejection
Masuk ke .
Di panel navigasi sisi kiri, pilih .
Di panel navigasi sisi kiri, klik Outlier Ejection. Di halaman Outlier Ejection, klik Create Outlier Ejection Policy.
Di panel Create Outlier Ejection Policy, konfigurasikan parameter dan klik OK.
Parameter
Deskripsi
Microservice Space
Pilih wilayah dan namespace layanan mikro.
Policy Name
Nama kebijakan outlier ejection. Nama dapat mencapai hingga 64 karakter, dan dapat berisi huruf, angka, garis bawah (_), dan tanda hubung (-).
Framework for Called Services
Pilih Spring Cloud, Dubbo, atau Service Mesh sesuai kebutuhan.
Select a valid application
Pilih aplikasi dan klik ikon > untuk menambahkan aplikasi ke daftar Selected Applications.
Setelah aplikasi dipilih, instance abnormal dari semua aplikasi yang dipanggil oleh aplikasi ini dapat dihapus. Permintaan panggilan dari aplikasi ini tidak didistribusikan ke instance yang dihapus.
Error Rate Threshold
Masukkan batas bawah tingkat kesalahan. Jika tingkat kesalahan pada instance aplikasi yang dipanggil melebihi batas, instance tersebut dihapus. Nilai default: 50. Sebagai contoh, sebuah instance menerima 10 permintaan panggilan dalam jendela waktu statistik, dan 6 permintaan panggilan gagal. Tingkat kesalahan adalah 60%. Jika parameter ini diatur ke 50, instance tersebut dihapus.
Advanced Settings
Klik ikon
untuk menampilkan bagian Advanced Settings.Exception Type
Pilih Network Exception atau Network Exception + Business Exception (Dubbo Exception) berdasarkan kebutuhan bisnis Anda.
CatatanPengecualian jaringan merujuk pada RpcException dari Dubbo. Pengecualian semacam itu termasuk timeout jaringan dan thread pool penuh yang disebabkan oleh pengumpulan sampah penuh (full GCs) yang lambat dari server.
Pengecualian bisnis merujuk pada BizException dari Dubbo, misalnya, RunTimeException yang dilemparkan oleh server.
Lower QPS Limit
Masukkan batas bawah queries per second (QPS) berdasarkan jendela waktu statistik. Jendela waktu statistik adalah 15 detik untuk aplikasi yang dikembangkan berdasarkan Dubbo 2.7, dan 10 detik untuk aplikasi yang dikembangkan berdasarkan versi Dubbo lainnya dan aplikasi Spring Cloud. Jika QPS dalam jendela waktu statistik, seperti jendela waktu statistik 15 detik, mencapai batas bawah yang ditentukan oleh parameter ini, EDAS mulai mengumpulkan dan menganalisis tingkat kesalahan.
Instance Removal Rate Threshold
Tentukan ambang batas untuk rasio instance abnormal yang dapat dihapus. Jika ambang batas tercapai, tidak ada lagi instance abnormal yang dihapus. Sebagai contoh, sebuah aplikasi memiliki total 6 instance. Jika Anda mengatur parameter ini ke 60%, jumlah instance yang dapat dihapus adalah 3,6, yang dibulatkan ke bawah menjadi bilangan bulat terdekat 3. Angka ini dihitung dengan menggunakan rumus berikut: 6 × 60%. Jika hasil perhitungan kurang dari 1, tidak ada instance abnormal yang dihapus.
Recovery Detection Unit Time
Tentukan interval unit dalam milidetik. Interval unit ini digunakan untuk mendeteksi apakah instance abnormal telah pulih. Setelah instance abnormal dihapus, EDAS meningkatkan interval deteksi secara linear berdasarkan interval unit yang ditentukan. Nilai default: 30000. Satuan: ms. Nilai default sama dengan 0,5 menit.
Max Number of Instance Checked Before Restoration
Masukkan jumlah maksimum kali EDAS mendeteksi bahwa instance abnormal belum pulih. Interval deteksi meningkat secara linear dengan nilai Waktu Deteksi Pemulihan Unit. Jika jumlah kali deteksi mencapai nilai parameter ini, EDAS mendeteksi apakah instance abnormal telah pulih pada interval deteksi maksimum. Sebagai contoh, Anda mengatur Recovery Detection Unit Time ke 30000 ms dan Max Number of Instance Checked Before Restoration ke 20. Jika EDAS mendeteksi selama 20 kali berturut-turut bahwa instance abnormal belum pulih, EDAS melakukan operasi deteksi berikutnya dengan interval 10 menit. Interval dihitung dengan menggunakan rumus berikut: 20 x 30000 ms. Jika instance pulih sebelum jumlah kali deteksi mencapai nilai yang ditentukan oleh parameter ini, interval deteksi diatur ulang ke nilai Recovery Detection Unit Time.
CatatanKami menyarankan agar Anda tidak mengatur Max Number of Instance Checked Before Restoration ke nilai besar. Jika Anda mengatur parameter ini ke nilai besar, interval deteksi maksimum akan lama. Jika instance pulih sebelum interval deteksi berakhir, pemulihan tidak dapat dideteksi pada kesempatan paling awal. Hal ini mengakibatkan rendahnya pemanfaatan sumber daya dan tertundanya pemrosesan permintaan panggilan layanan.
Verifikasi hasil
Fitur outlier ejection diaktifkan setelah Anda mengonfigurasi dan membuat kebijakan outlier ejection. Anda dapat membuka halaman detail aplikasi tempat Anda mengonfigurasi outlier ejection untuk melihat informasi pemantauan aplikasi. Sebagai contoh, Anda dapat memeriksa apakah permintaan panggilan masih diteruskan ke instance abnormal dan apakah Error Rate / 1 Min untuk panggilan aplikasi lebih tinggi dari nilai parameter Error Rate Threshold pada tab Topology. Dengan cara ini, Anda dapat memverifikasi apakah kebijakan outlier ejection berlaku. Untuk informasi lebih lanjut, lihat Ikhtisar Aplikasi.