Ssylka

Реализация RateLimiter с Sliding Window на Yii и Redis

Sliding window rate limiter, в отличие от fixed window, ограничивает запросы в рамках скользящего временного окна, обеспечивая более точный контроль. Это позволяет избежать ситуаций, когда запросы, находящиеся на границе фиксированных окон, могут суммарно превышать лимиты.
Реализация RateLimiter с Sliding Window на Yii и Redis
Изображение носит иллюстративный характер

Предложенный подход использует Redis с сортированными множествами, где временные метки микросекунд служат как значения, так и ключи. При каждом запросе происходит удаление устаревших меток и добавление текущей, с последующей проверкой на превышение лимита.

Хранение запросов в Redis происходит в виде сортированных множеств с временными метками, хотя для оптимизации, особенно при высокой частоте запросов, целесообразно использовать обычные списки Redis с добавлением в начало и удалением из конца, поскольку данные всегда добавляются с увеличивающимися временными метками. При этом нужно помнить, что zadd гарантирует уникальность в рамках member'а. Использование микросекунд снижает вероятность перезаписи.


Новое на сайте

19034Откуда берется загадочное инфракрасное свечение вокруг сверхмассивных черных дыр? 19033Обнаружение древнейшей подтвержденной спиральной галактики с перемычкой COSMOS-74706 19032Микрогравитация на мкс превратила вирусы в эффективных убийц устойчивых бактерий 19031Как древние римляне управляли капиталом, чтобы обеспечить себе пассивный доход и защитить... 19030Миссия Pandora: новый инструмент NASA для калибровки данных телескопа «Джеймс Уэбб» 19029Телескоп Джеймс Уэбб запечатлел «неудавшиеся звезды» в звездном скоплении вестерлунд 2 19028Как «пенопластовые» планеты в системе V1298 Tau стали недостающим звеном в понимании... 19027Возможно ли одновременное глобальное отключение всего мирового интернета? 19026Станет ли бактериальная система самоуничтожения SPARDA более гибким инструментом... 19025Насколько опасной и грязной была вода в древнейших банях Помпей? 19024Гравитационная ориентация и структура космических плоскостей от земли до сверхскоплений 19023Сколько частей тела и органов можно потерять, чтобы остаться в живых? 19022Зачем Сэм Альтман решил внедрить рекламу в бесплатные версии ChatGPT? 19021Хитроумная маскировка вредоноса GootLoader через тысячи склеенных архивов 19020Удастся ли знаменитому археологу Захи Хавассу найти гробницу Нефертити до ухода на покой?