The Rate Limiter
Что такое ограничитель скорости (Rate Limiter)?
Ограничитель скорости — это механизм, который ограничивает количество запросов, которые сервис может обработать за определенный промежуток времени. Он блокирует запросы, превышающие заранее установленный лимит. Например, если клиент использует API сервиса, настроенного на 500 запросов в минуту, ограничитель скорости будет блокировать дальнейшие запросы от этого клиента, если количество его запросов превысит этот лимит.

Зачем нужен ограничитель скорости?
Ограничитель скорости используется как защитный слой для сервисов, чтобы предотвратить их чрезмерное использование, как преднамеренное, так и случайное. Он также защищает сервисы от вредоносных действий, нацеленных на прикладной уровень, таких как атаки типа отказ в обслуживании (DoS) и попытки взлома паролей методом перебора.
Ниже приведены сценарии, в которых ограничители скорости могут быть использованы для повышения надежности сервиса:
Предотвращение истощения ресурсов
Некоторые инциденты отказа в обслуживании вызваны ошибками в программном обеспечении или конфигурациях системы, что приводит к истощению ресурсов. Такие атаки называются дружественным огнем (friendly-fire) отказа в обслуживании. Одним из распространенных случаев использования ограничителей скорости является предотвращение истощения ресурсов, вызванного такими атаками, будь то преднамеренные или случайные.
Управление политиками и квотами
Ограничители скорости та кже необходимы для обеспечения справедливого и разумного использования ресурсов, когда они делятся между многими пользователями. Политика здесь относится к применению ограничений на время или количество выделенных ресурсов (квота).
Контроль потока данных
Ограничители скорости могут быть использованы в системах, где требуется обработка большого объема данных. Они контролируют поток данных, чтобы равномерно распределить нагрузку между различными машинами, избегая перегрузки одной машины.
Избежание избыточных расходов
Ограничение скорости также может быть использовано для контроля за расходами на операции. Например, организации могут использовать ограничение скорости, чтобы предотвратить неконтролируемые э ксперименты и избежать крупных счетов. Некоторые облачные сервисы также применяют этот концепт, предлагая бесплатные услуги с определенными лимитами, которые могут быть увеличены за дополнительную плату.

Как спроектировать ограничитель скорости?
В следующих уроках мы рассмотрим следующее:
Требования
Здесь мы обсудим функциональные и нефункциональные требования к ограничителю скорости. Также будут рассмотрены типы управления скоростью и места, где ограничитель скорости может быть установлен для эффективного выполнения своих функций.