0Pricing
C# Academy · Pelajaran

Algoritme Pembatasan Laju

Bandingkan pembatas tetap, bergeser, token, dan konkurensi.

Algoritme Pembatasan Laju adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 4 pelajaran total.

Mengapa Membatasi Laju?

Pembatasan laju membatasi jumlah permintaan yang dapat dibuat klien dalam jangka waktu tertentu. Fitur ini melindungi API Anda dari penyalahgunaan, klien yang tidak terkendali, dan lonjakan lalu lintas yang tidak disengaja, serta menjaga kapasitas tetap adil bagi semua pengguna.

// e.g. allow 100 requests per minute per API key

Pembatasan Laju Bawaan

Sejak .NET 7, ASP.NET Core menyediakan perangkat perantara pembatasan laju utama di Microsoft.AspNetCore.RateLimiting dengan empat algoritma bawaan.

// Algorithms: Fixed Window, Sliding Window,
//             Token Bucket, Concurrency

Jendela Tetap

Algoritma jendela tetap mengizinkan N permintaan dalam blok waktu tetap. Setelah blok berakhir, penghitung diatur ulang menjadi nol.

Algoritma ini sederhana, tetapi lonjakan pada batas jendela dapat menggandakan laju efektif untuk sementara.

// 10 requests per 60s window
// All 10 used at 0:59, 10 more at 1:00 -> 20 in 2 seconds

Jendela Bergeser

Jendela bergeser menghaluskan masalah batas dengan membagi jendela menjadi beberapa segmen dan menggeser segmen yang kedaluwarsa ke depan, sehingga batas berlaku pada jendela kontinu mana pun.

// 10 requests per 60s, 6 segments of 10s each
// The count slides as each segment expires

Keranjang Token

Keranjang token menyimpan sejumlah token. Setiap permintaan menggunakan satu token, lalu token diisi ulang dengan laju tetap. Algoritma ini mengizinkan lonjakan singkat hingga ukuran keranjang, sekaligus mempertahankan rata-rata jangka panjang.

// Bucket = 10 tokens, refill 5 tokens / 10s
// Burst of 10 allowed, then 5 every 10 seconds

Pembatas Konkurensi

Pembatas konkurensi berbeda: pembatas ini membatasi jumlah permintaan yang sedang diproses pada saat yang sama, bukan jumlah permintaan per satuan waktu. Algoritma ini ideal untuk melindungi operasi yang mahal.

// At most 5 concurrent requests in flight
// The 6th waits in the queue or is rejected

Antrean

Setiap pembatas dapat mengantrekan permintaan yang melampaui batas, alih-alih langsung menolaknya. QueueLimit menetapkan ukuran antrean, sedangkan QueueProcessingOrder menetapkan keadilan pemrosesan (yang paling lama atau paling baru terlebih dahulu).

// QueueLimit = 2, OldestFirst
// Over-limit requests wait if a slot exists, else get 503/429

Memilih Algoritma

Sesuaikan algoritma dengan tujuannya:

  • Jendela tetap: paling sederhana dan memadai untuk banyak kasus.
  • Jendela bergeser: lebih halus dan menghindari lonjakan pada batas.
  • Keranjang token: mengizinkan lonjakan yang terkendali.
  • Konkurensi: membatasi beban secara bersamaan, bukan lajunya.
// Bursty clients -> token bucket
// Expensive endpoint -> concurrency

Pemartisian

Batas diterapkan per kunci partisi—biasanya pengguna, kunci API, atau IP—sehingga satu klien yang terlalu banyak mengirim permintaan tidak dapat menghabiskan kuota semua orang. Satu partisi bersama akan membatasi seluruh lalu lintas secara bersamaan.

// Partition by user id, IP, or API key
// Each partition gets its own independent counter

Tampilan bagi Klien

Permintaan yang ditolak menghasilkan HTTP 429 Terlalu Banyak Permintaan. API yang dirancang dengan baik juga mengembalikan header Retry-After yang memberi tahu klien kapan harus mencoba lagi.

// HTTP/1.1 429 Too Many Requests
// Retry-After: 30

Pembatasan Laju vs Pelambatan vs Kuota

Konsep-konsep ini berkaitan: pembatasan laju membatasi frekuensi jangka pendek, kuota membatasi jumlah total dalam jangka lebih panjang (per hari atau bulan), sedangkan pelambatan memperlambat, bukan menolak. Perangkat perantara ini berfokus pada pembatasan laju.

// rate limit: 100/min   quota: 10000/day

Pemeriksaan Singkat

Uji pemahaman Anda tentang algoritma-algoritma tersebut.

Rekapitulasi

Anda telah mempelajari konsep pembatasan laju:

  • Empat algoritma: jendela tetap, jendela bergeser, keranjang token, dan konkurensi.
  • Keranjang token mengizinkan lonjakan; konkurensi membatasi beban secara bersamaan.
  • Batas diterapkan per kunci partisi; antrean meredam kelebihan permintaan.
  • Permintaan yang ditolak mendapatkan 429 dengan Retry-After.

Berikutnya: mengonfigurasi perangkat perantara.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Algoritme Pembatasan Laju” gratis?

Ya — teks lengkap “Algoritme Pembatasan Laju” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Algoritme Pembatasan Laju”?

Bandingkan pembatas tetap, bergeser, token, dan konkurensi. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C# Academy?

Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Algoritme Pembatasan Laju” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?

Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Algoritme Pembatasan Laju
  2. Mengonfigurasi Middleware Pembatasan Laju
  3. Dasar-Dasar Caching Output
  4. Kebijakan dan Invalidasi Cache
← Kembali ke C# Academy