Top.Mail.Ru

Точный Rate Limiting на API Gateway в мультиЦОД инфраструктуре

Экспертный хаб

Тезисы

Ограничение нагрузки — одна из ключевых задач API Gateway. Без неё один недобросовестный или просто неосторожный потребитель способен исчерпать ресурсы бэкенда и обрушить сервис для всех остальных. Как не дать одному потребителю «положить» бэкенд? Как позволить владельцу сервиса гибко распределять квоты между клиентами и при этом не терять точность на шлюзе, развёрнутом на нескольких ЦОДах и тысячах подов?

Расскажу, как в команде MWS Octapi мы решили задачу rate limiting на уровне распределённого шлюза. Когда каждый под видит только часть трафика, классический подсчёт запросов перестаёт работать, — нужно синхронизировать состояние между всеми узлами. Мы рассмотрели готовые подходы: Redis, In-Memory Data Grid, Gossip-протокол — и у каждого нашлись компромиссы, неприемлемые для нашей нагрузки и требований к латентности. В итоге мы написали собственную систему шеринга состояния, заточенную под конкретную задачу, и собственный алгоритм ограничения нагрузки на бэкенд.


Ключевые темы и технологии

Структуры данных, Строковые алгоритмы


Аудитория

Бэкенд-разработчик, Руководитель команды / Технический руководитель


Уровень сложности

Средний

МТС Web Services
Андрей Пушкарев

Middle Go Developer MWS Octapi.

Другие спикеры Экспертный хаб