Post Thumbnail

Автор разбирает три основных алгоритма рейт лимитинга в Go: Token Bucket в библиотеке golang.org/x/time/rate, Leaky Bucket из go.uber.org/ratelimit и Sliding Window его собственной реализаций со слайсом временных меток.

Token Bucket подходит для большинства случаев - разрешает всплески, а Allow/Wait/Reserve покрывают как HTTP- middleware, так и throttle исходящих запросов. Leaky Bucket выдает строго равномерный поток без всплесков. Sliding Window дает точное "не более N запросов в любом окне длительности W", но дороже по памяти.

Очевидный результат - по умолчанию брать x/time/rate и не писать свою реализацию

Похожее

Post Thumbnail

TigerFS

Файловая система — это просто API. А TigerFS — это файловая система, работающая ...

Post Thumbnail

Иггдрасиль

В статье про использование Yggdrasil в качестве встраиваемой Go-библиотеки. ...

Post Thumbnail

Мультиплеер

В статье автор рассказывает про архитектуру управления состоянием своей многопол...

Post Thumbnail

httptrace

Пакет net/http/httptrace из стандартной библиотеки Go позволяет отслеживать внут...