Алгоритмы: token bucket (стабильный rate), sliding window (точнее), leaky bucket (сглаживание). Для distributed: Redis + Lua скрипт (MULTI/EXEC atomicity). Для single instance: golang.org/x/time/rate. Ключ: user ID, IP, API key. Хранение: Redis EXPIRE для автоочистки. Ответ: 429 + Retry-After header. Разные лимиты для разных эндпоинтов и тарифов.
Как спроектировать rate limiter на Go?
Middle
168 просмотровAFK Offer AI
Что выведет: s := []int{1,2,3}; s2 := s[:2]; s2 = append(s2, 4); fmt.Println(s)?