Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Petunjuk / Saran
Konten ini adalah kutipan dari eBook, Arsitektur Layanan Mikro .NET untuk Aplikasi .NET Kontainer, tersedia di .NET Docs atau sebagai PDF gratis yang dapat diunduh yang dapat dibaca secara offline.
Untuk menangani kegagalan parsial, gunakan salah satu strategi yang dijelaskan di sini.
Gunakan komunikasi asinkron (misalnya, komunikasi berbasis pesan) di seluruh layanan mikro internal. Sangat disarankan untuk tidak membuat rantai panjang panggilan HTTP sinkron di seluruh layanan mikro internal karena desain yang salah pada akhirnya akan menjadi penyebab utama pemadaman buruk. Sebaliknya, kecuali untuk komunikasi front-end antara aplikasi klien dan tingkat layanan mikro pertama atau API Gateway terperinci, disarankan untuk hanya menggunakan komunikasi asinkron (berbasis pesan) setelah melewati siklus permintaan/respons awal, di seluruh layanan mikro internal. Konsistensi akhir dan arsitektur berbasis peristiwa akan membantu meminimalkan efek riak. Pendekatan ini memberlakukan tingkat otonomi layanan mikro yang lebih tinggi dan oleh karena itu mencegah masalah yang disebutkan di sini.
Gunakan pengulangan dengan penundaan eksponensial. Teknik ini membantu menghindari kegagalan singkat dan terputus dengan melakukan panggilan ulang beberapa kali, jika layanan tidak tersedia hanya untuk waktu yang singkat. Ini mungkin terjadi karena masalah jaringan terputus-terputus atau ketika layanan mikro/kontainer dipindahkan ke simpul yang berbeda dalam kluster. Namun, jika percobaan ulang ini tidak dirancang dengan benar dengan pemutus sirkuit, itu dapat memperburuk efek riak, pada akhirnya bahkan menyebabkan Penolakan Layanan (DoS).
Mengatasi batas waktu jaringan. Secara umum, klien harus dirancang untuk tidak memblokir tanpa batas waktu dan untuk selalu menggunakan batas waktu saat menunggu respons. Menggunakan batas waktu memastikan bahwa sumber daya tidak pernah diikat tanpa batas waktu.
Gunakan pola Circuit Breaker. Dalam pendekatan ini, proses klien melacak jumlah permintaan yang gagal. Jika tingkat kesalahan melebihi batas yang dikonfigurasi, "pemutus sirkuit" diaktifkan sehingga upaya lebih lanjut segera gagal. (Jika sejumlah besar permintaan gagal, yang menunjukkan layanan tidak tersedia dan bahwa permintaan pengiriman tidak ada gunanya.) Setelah periode waktu habis, klien harus mencoba lagi dan, jika permintaan baru berhasil, tutup pemutus sirkuit.
Sediakan alternatif cadangan. Dalam pendekatan ini, proses klien melakukan logika fallback ketika permintaan gagal, seperti mengembalikan data cache atau nilai default. Ini adalah pendekatan yang cocok untuk kueri, dan lebih kompleks untuk pembaruan atau perintah.
Batasi jumlah permintaan yang diantrekan. Klien juga harus memberlakukan batas atas pada jumlah permintaan terutang yang dapat dikirim oleh layanan mikro klien ke layanan tertentu. Jika batas telah tercapai, mungkin tidak ada gunanya membuat permintaan tambahan, dan upaya tersebut harus segera gagal. Dalam hal penerapan, kebijakan Isolasi Bulkhead Polly dapat digunakan untuk memenuhi persyaratan ini. Pendekatan ini pada dasarnya adalah pengendalian paralelisasi dengan SemaphoreSlim sebagai implementasi. Ini juga mengizinkan "antrean" di luar sekat. Anda dapat secara proaktif menumpahkan kelebihan beban bahkan sebelum eksekusi (misalnya, karena kapasitas dianggap penuh). Ini membuat responsnya terhadap skenario kegagalan tertentu lebih cepat daripada pemutus sirkuit, karena pemutus sirkuit menunggu kegagalan. Objek BulkheadPolicy di Polly memperlihatkan seberapa penuh sekat dan antrean, dan menawarkan kejadian ketika terjadi kelebihan sehingga juga dapat digunakan untuk mendorong penskalaan horizontal otomatis.
Sumber daya tambahan
Pola ketahanan
https://learn.microsoft.com/azure/architecture/framework/resiliency/reliability-patternsMenambahkan Ketahanan dan Mengoptimalkan Performa
https://learn.microsoft.com/previous-versions/msp-n-p/jj591574(v=pandp.10)Sekat. Repositori GitHub. Implementasi dengan kebijakan Polly.
https://github.com/App-vNext/Polly/wiki/BulkheadMendesain aplikasi tangguh untuk Azure
https://learn.microsoft.com/azure/architecture/framework/resiliency/app-designpenanganan kesalahan sementara
https://learn.microsoft.com/azure/architecture/best-practices/transient-faults