Автор разбирает три основных алгоритма рейт лимитинга в 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 и не писать свою реализацию
28.05.2026
Похожее
27.05.2026
Регрессия на 3%
Порция байтоебства на сегодня Автор расследовал регрессию производительности ...
26.05.2026
Сборщик мусора
Автор прослеживает эволюцию сборки мусора от оригинального mark-and-sweep из ста...
26.05.2026
Select
Автор разбирает устройство select в Go как совместную работу компилятора и ранта...
23.05.2026
HTTP/2 h2c
Обычно HTTP/2 работает только поверх TLS через HTTPS. Но h2c позволяет использов...