Itu tergantung pada apa yang Anda coba hindari.
Jika Anda mencoba untuk menghindari interupsi layanan dari sesuatu yang merupakan layanan yang benar-benar kritis (saya berpikir dalam hal "orang akan mati jika panggilan API saya tidak dilayani dengan tepat"), Anda perlu hanya menganggarkan untuk inefisiensi besar yang datang dari jauh melebihi penyediaan sumber daya khusus. Dan ya mereka harus berdedikasi, tidak ada ini memungkinkan untuk hal-hal lonjakan lalu lintas, beberapa layanan lonjakan sehingga akan menyebabkan pemadaman.
Dalam skenario yang jauh lebih mungkin bahwa layanan Anda turun akan merepotkan Anda dapat mengatasi masalah baik dari sisi klien dan server. Meskipun perlu dicatat bahwa secara logis tidak mungkin untuk benar-benar menyelesaikan masalah banyak lalu lintas karena tanpa memproses lalu lintas (yang menghabiskan sumber daya) Anda tidak dapat mengetahui apakah itu coba lagi, apakah itu coba lagi untuk permintaan yang berhasil tetapi tidak ditangani dengan benar oleh klien, jika itu DDOS, dll. Tetapi Anda dapat mengurangi dampak.
Dalam kode klien, tulis logika coba lagi yang masuk akal yang memiliki batas atas dan mekanisme untuk gagal anggun. Dengan begitu Anda tidak menempel pengguna Anda dalam loop tak terbatas dari permintaan gagal dan Anda hanya memberi mereka kesalahan mengatakan kepada mereka untuk mencoba apa pun yang baru saja mereka lakukan dalam waktu singkat.
Untuk infrastruktur sisi server Anda , solusi paling sederhana adalah mencekik. Batas keras pada permintaan, terutama jika Anda dapat mencoba dan menyebarkannya secara logis berdasarkan kasus penggunaan khusus Anda (mis. Jika Anda memiliki layanan terpusat membuat beberapa keputusan sulit, apakah Anda ingin mulai memblokir permintaan yang jauh secara geografis yang mungkin mengakibatkan benang menggantung sisi server? Atau Anda ingin mendistribusikan pemadaman kecil yang tak terhindarkan Anda secara merata? dll) Ini pada dasarnya bermuara pada kenyataan bahwa mengembalikan 503 dengan sengaja dari gateway adalah jauh lebih murah daripada membiarkan permintaan melalui dan mengirim 504 bagaimanapun. Pada dasarnya memaksa klien untuk berperilaku berdasarkan apa yang saat ini dapat Anda berikan dan memberikan tanggapan yang benar sehingga klien dapat bereaksi dengan tepat.