Фиксированное окно, скользящее окно, token bucket, leaky bucket. Счетчики в памяти или Redis. Выбор по требованию к гладкости и точности. Распределенный вариант - с центральным хранилищем или с допуском.