API Rate Limiting & Scalability Patterns · Lección

Estrategia Sliding Window Counter

Aprenda sobre Sliding Window Counter, un enfoque más eficiente en memoria que aproxima el método de registro para su uso práctico.

Lección 2 de 412 pasos

Estrategia Sliding Window Counter es una lección gratuita de API Rate Limiting & Scalability Patterns en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de API Rate Limiting & Scalability Patterns, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de API Rate Limiting & Scalability Patterns incluye 4 lecciones en total.

Partes de esta lección aún no han sido traducidas y se muestran en inglés.

Intro to Sliding Window Counter

Welcome to our lesson on the Sliding Window Counter (SWC) algorithm!

This algorithm is a clever way to implement rate limiting. It aims to offer better accuracy than the simple Fixed Window Counter, while being more memory-efficient than the precise Sliding Window Log.

Fixed Window's Flaw

Recall that the Fixed Window Counter can suffer from a 'burst' problem. If a user makes requests right at the end of one window and then again right at the start of the next, they can effectively double their allowed requests in a short period.

The Sliding Window Counter helps to mitigate this issue.

The Core Idea: Blending Windows

Instead of just looking at the current fixed window, SWC looks at two fixed windows:

  • The current window.
  • The previous window.

It then combines their counts using a weighted average to estimate the true request rate over a 'sliding' period.

How the 'Slide' Happens

The 'sliding' effect comes from how we weight the previous window's count. We calculate an overlap percentage based on how far we are into the current window.

For example, if our window size is 60 seconds and we are 30 seconds into the current window, 50% of the previous window is still 'relevant' to our current sliding view.

Components for Calculation

To apply the Sliding Window Counter, you need to track a few pieces of information:

  • The total request count for the previous fixed window.
  • The total request count for the current fixed window.
  • The current timestamp (to determine how far into the current window we are).
  • The defined window size (e.g., 60 seconds, 1 minute).

SWC in Action: Scenario

Let's use an example:

  • Rate Limit: 10 requests per minute.
  • Current Time: 30 seconds into the current minute.
  • Previous Minute's Count: 8 requests.
  • Current Minute's Count: 3 requests so far.

How many requests have we 'used' in our sliding window?

Step-by-Step Calculation

Here's how we calculate the estimated count:

  1. Overlap Percentage: We are 30 seconds into a 60-second window, so 30/60 = 0.5 (or 50%).
  2. Weighted Previous Count: The previous window's count (8) is weighted by (1 - overlap percentage). So, 8 * (1 - 0.5) = 8 * 0.5 = 4.
  3. Estimated Total: Add the weighted previous count to the current count: 4 (weighted prev) + 3 (current) = 7.

So, 7 requests are estimated, leaving 3 requests remaining.

Implementing SWC Logic

This simple Java code snippet demonstrates how to calculate the estimated request count based on the current state of two windows.

Try running it to see the calculation in action!

public class RateLimitCalculator {

    public static double calculateEstimatedRequests(
            int previousWindowCount,
            int currentWindowCount,
            long timeElapsedInCurrentWindowMillis,
            long windowSizeMillis) {

        double overlapPercentage = (double) timeElapsedInCurrentWindowMillis / windowSizeMillis;

        // The core Sliding Window Counter calculation
        // It weights the previous window's count based on the *overlap*
        // and adds it to the current window's count.
        double estimatedCount = previousWindowCount * (1 - overlapPercentage) + currentWindowCount;

        return estimatedCount;
    }

    public static void main(String[] args) {
        int maxRequestsPerMinute = 10;
        long windowSizeMillis = 60 * 1000; // 1 minute

        // Scenario: 30 seconds into the current minute
        long timeElapsed = 30 * 1000;

        // Previous minute had 8 requests
        int prevCount = 8;
        // Current minute has 3 requests so far
        int currentCount = 3;

        double estimated = calculateEstimatedRequests(
            prevCount,
            currentCount,
            timeElapsed,
            windowSizeMillis
        );

        System.out.println("Prev count: " + prevCount);
        System.out.println("Current count: " + currentCount);
        System.out.println("Elapsed in window: " + (timeElapsed / 1000) + "s");
        System.out.println("Window size: " + (windowSizeMillis / 1000) + "s");
        System.out.println("\nEstimated requests: " + String.format("%.2f", estimated));

        if (estimated < maxRequestsPerMinute) {
            System.out.println("Request would likely be allowed.");
        } else {
            System.out.println("Request would likely be denied.");
        }
    }
}

SWC's Key Benefits

The Sliding Window Counter offers several advantages:

  • Improved Accuracy: It provides a better approximation of the true rate than Fixed Window, especially around window boundaries.
  • Memory Efficiency: Unlike Sliding Window Log, it doesn't need to store every request timestamp, making it less demanding on memory.
  • Better Burst Handling: It reduces the chance of allowing excessive bursts compared to the Fixed Window algorithm.

SWC: Approximation, Not Perfect

While powerful, the Sliding Window Counter is still an approximation. It's not perfectly accurate like the Sliding Window Log.

It can still allow slight overages at window boundaries, though significantly less than a purely Fixed Window approach. For high-precision requirements, the Sliding Window Log might still be preferred, if memory allows.

Quick Check on SWC

Let's test your understanding of the Sliding Window Counter calculation!

Recap & What's Next

Great job! You've learned about the Sliding Window Counter algorithm.

  • It combines counts from two fixed windows to approximate a sliding window.
  • It's more accurate than Fixed Window and more memory-efficient than Sliding Window Log.
  • It calculates an estimated count using an overlap percentage.

Next, we'll compare all the algorithms you've learned to understand their trade-offs.

Gratis para empezar

Aprende API Rate Limiting & Scalability Patterns con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
12
Lecciones
48

Preguntas frecuentes

¿La lección «Estrategia Sliding Window Counter» es gratis?

Sí — el texto completo de «Estrategia Sliding Window Counter» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de API Rate Limiting & Scalability Patterns, actualiza a CoddyKit PRO. El curso de API Rate Limiting & Scalability Patterns incluye 4 lecciones en total.

¿Qué aprenderé en «Estrategia Sliding Window Counter»?

Aprenda sobre Sliding Window Counter, un enfoque más eficiente en memoria que aproxima el método de registro para su uso práctico. Practicas API Rate Limiting & Scalability Patterns con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar API Rate Limiting & Scalability Patterns?

No se requiere experiencia previa. API Rate Limiting & Scalability Patterns en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Estrategia Sliding Window Counter»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de API Rate Limiting & Scalability Patterns?

Sí. Cada lección de API Rate Limiting & Scalability Patterns incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Implementación de Sliding Window Log
  2. Estrategia Sliding Window Counter
  3. Comparación de algoritmos y compromisos
  4. Ventana deslizante con conjuntos ordenados en Redis
← Volver a API Rate Limiting & Scalability Patterns