Sobes.tech
Senior

Τι θα συμβεί με τον περιοριστή ρυθμού Token Bucket στο σενάριο: 1 αίτημα στην αρχή του δευτερολέπτου, 99 στο τέλος, και στη συνέχεια άλλα 100 στο επόμενο δευτερόλεπτο;

sobes.tech AI

Απάντηση από AI

Token Bucket — это алгоритм ограничения скорости, который позволяет накапливать токены с определённой скоростью до максимального размера бакета. Каждый запрос «тратит» один токен.

В вашем сценарии:

  • В начале первой секунды приходит 1 запрос — бакет, предположим, полный, позволяет выполнить запрос, токен тратится.
  • В конце первой секунды приходит 99 запросов подряд. Если токены не успели накопиться, то большинство из них будет отклонено, так как токенов недостаточно. Если бакет вмещает 100 токенов, то после первого запроса в начале секунды в бакете осталось 99 токенов, и 99 запросов в конце секунды смогут быть обслужены (если токены не успели обновиться, то скорее всего нет).
  • В начале следующей секунды токены снова начинают накапливаться, и 100 запросов могут быть обслужены, если размер бакета и скорость пополнения позволяют.

Итог: Token Bucket позволяет сгладить пиковые нагрузки, но если запросы приходят слишком быстро и превышают количество накопленных токенов, лишние запросы будут отклонены или задержаны.