Apa itu pembatasan tarif?

Pembatasan tarif adalah mekanisme kontrol yang digunakan API cloud untuk mengatur jumlah permintaan yang dapat dibuat pengguna dalam waktu tertentu. Produsen CLOUD API menggunakan pembatasan laju untuk memastikan bahwa alur permintaan tidak membanyangi layanan. Pembatasan tarif menetapkan batas pada kecepatan dan volume panggilan API. Batas tarif biasanya ditentukan dalam hal permintaan per periode waktu.

Mengapa API cloud menggunakan pembatasan laju

  • Cegah kelebihan beban. Pembatasan tarif memastikan bahwa server API tetap stabil dan responsif dengan mencegah satu pengguna atau layanan membanjirinya dengan terlalu banyak permintaan.
  • Pastikan penggunaan yang adil. Pembatasan tarif memberlakukan kebijakan penggunaan yang adil dengan memastikan bahwa tidak ada satu pengguna yang memonopoli sumber daya API. Pembatasan tarif memungkinkan akses yang setara ke semua pengguna.
  • Tingkatkan keamanan. Pembatasan tarif membantu dalam mengurangi serangan Penolakan Layanan Terdistribusi dan perilaku kasar lainnya dengan membatasi jumlah permintaan dari sumber yang berpotensi berbahaya.
  • Mengelola biaya. Untuk penyedia layanan cloud, pembatasan tarif membantu dalam mengelola biaya operasional dengan mencegah penggunaan sumber daya yang tidak dapat diprediksi atau berlebihan.
  • Menjaga kualitas layanan. Pembatasan tarif memastikan kualitas layanan yang konsisten untuk semua pengguna dengan mencegah lonjakan lalu lintas.

Bagaimana Anda mengalami pembatasan tarif di aplikasi Anda

Saat Anda membuat aplikasi yang mengintegrasikan API cloud, periksa dokumentasinya untuk memverifikasi apakah mereka mendukung pembatasan tarif. Jika mereka melakukannya, Anda menerima RateLimit-... atau X-RateLimit-... header respons dengan informasi tentang batas kecepatan. Anda dapat menggunakan informasi ini dalam aplikasi untuk memastikan bahwa Anda tidak melebihi batas tarif API. Misalnya, RateLimit-Remaining header menunjukkan jumlah permintaan yang tersisa di jendela saat ini. Jika Anda menerima respons dengan header ini diatur ke 0, Anda tahu bahwa Anda mencapai batas tarif dan harus menunggu jendela berikutnya sebelum Anda mengirim permintaan lain. Header RateLimit-Reset menunjukkan waktu saat batas laju direset. Beberapa API mengirim RateLimit-... header hanya setelah Anda mencapai ambang batas. Contohnya adalah ketika Anda memiliki 10 permintaan% yang masih tersisa.

Ketika Anda melebihi batas tarif, API membatasi permintaan Anda dan mengembalikan kode status HTTP 429 Too Many Requests . Beberapa API mungkin juga mengirim Retry-After header untuk menunjukkan berapa lama Anda harus menunggu sebelum mengirim permintaan lain. Tidak setiap API mengikuti pola ini. GitHub, misalnya, dapat menjawab dengan 403 alih-alih 429.

Untuk menghindari pembatasan dan memastikan bahwa aplikasi Anda tetap responsif, terapkan pembatasan tarif dalam aplikasi Anda. Bergantung pada stack teknologi Anda, berbagai pustaka dapat membantu Anda menangani pembatasan laju dalam aplikasi Anda. Setelah Anda menerapkan pembatasan tarif dalam aplikasi Anda, uji untuk melihat apakah pembatasan laju ditangani dengan benar.

Bagaimana pembatasan tarif memengaruhi aplikasi Anda?

Saat API mulai mengembalikan 429 respons, aplikasi yang tidak menanganinya mengalami crash, menunjukkan kesalahan umum, mencoba kembali dengan sangat cepat sehingga tetap dibatasi, atau secara diam-diam menghilangkan data. Anda jarang melihat hal-hal ini saat Anda mengembangkan, karena API cepat, Anda satu-satunya pengguna, dan data pengujian Anda kecil.

Cara menguji bahwa aplikasi Anda menangani batas laju

Approach Apa yang Anda temukan Yang Anda lewatkan
Tunggu lingkungan produksi Limit rate aktual Semuanya, sampai pengguna menekannya
Mock API dalam pengujian Anda, atau biarkan agen pengkodan Anda menulis mock Apakah cabang percobaan ulang Anda berjalan Kode status nyata milik API, header batas laju, dan badan kesalahan, serta kebijakan coba lagi milik SDK Anda. Aplikasi Anda juga memerlukan toggle khusus pengujian untuk mengakses mock.
Panggil API nyata sampai mulai membatasi permintaan Anda Perilaku sebenarnya Anda tidak dapat mencapai batas on-demand, Anda menghabiskan kuota aktual Anda, dan beberapa batasan diatur ulang hanya setelah satu jam
Mencegat lalu lintas nyata aplikasi Anda dan mensimulasikan pembatasan URL nyata, SDK nyata Anda dan kebijakan coba lagi, dan header API sendiri, dengan batas yang Anda pilih Kode Anda secara terisolasi. Simpan pengujian unit Anda untuk itu.

Coba di aplikasi Anda.

Dev Proxy menghitung permintaan aplikasi Anda ke API yang Anda pilih, menambahkan header batas laju ke respons, dan mengembalikan 429 saat aplikasi Anda melampaui batas, sementara aplikasi Anda terus memanggil URL nyata. Ini juga memberi tahu Anda ketika aplikasi Anda memanggil API lagi sebelum batas tersebut direset.

Unduh prasetel untuk API yang dipanggil aplikasi Anda, dan mulai Dev Proxy dengannya:

devproxy config get github-rate-limiting
devproxy --config-file "~dataFolder/configs/github-rate-limiting/.devproxy/devproxyrc.json"

Untuk panggilan Microsoft Graph ke OneDrive dan SharePoint (/drive, /sites, microsoft-graph-rate-limiting), gunakan prasetel /shares. Untuk mengatur batas Anda sendiri untuk API apa pun, lihat Mensimulasikan respons API batas laju. Untuk menginstal Dev Proxy, lihat Menyiapkan Dev Proxy.

Langkah berikutnya