Оглавление

Компания Databricks представила архитектурный прорыв в системах ограничения запросов, который позволяет обрабатывать миллионы операций в секунду с минимальной задержкой. Решение сочетает автошардинг через технологию Dicer и инновационный механизм пакетной отчетности.

Проблемы традиционного подхода

До 2023 года инфраструктура ограничения запросов в Databricks использовала классическую схему: шлюз Envoy, сервис ограничения запросов и единый экземпляр Redis для хранения счетчиков. С ростом нагрузки и появлением новых сценариев использования, таких как обслуживание моделей в реальном времени, эта архитектура показала серьезные ограничения:

  • Высокая задержка в хвосте распределения — до 10-20 мс в одном из облачных провайдеров
  • Ограниченная пропускная способность — добавление машин перестало давать линейный прирост
  • Redis как единая точка отказа — критическая уязвимость всей системы
Упрощённая архитектура до 2023 года: шлюз Envoy с бэкендом Redis

Архитектурная революция: Dicer и подсчет в памяти

Ключевым прорывом стало внедрение технологии автошардинга Dicer, которая позволила полностью отказаться от Redis и перейти к подсчету запросов непосредственно в памяти серверов. Dicer решает проблему консистентного хеширования, обеспечивая точное распределение запросов и валидацию прав владения.

Архитектура сервиса RateLimit с технологией автоматического шардирования Dicer

Элегантность решения в том, что они превратили распределенную проблему синхронизации счетчиков в локальную — каждый сервер теперь автономно управляет своим сегментом данных. Это тот случай, когда правильная архитектура побеждает грубый подход «добавим еще серверов».

Пакетная отчетность: клиентская оптимизация

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

  1. Клиенты ведут локальный подсчет разрешенных и отклоненных запросов
  2. Периодически (каждые 100 мс) отправляют агрегированные данные на сервер
  3. Сервер возвращает политики ограничений для конкретных ключей

Такой подход позволяет обрабатывать до 5 миллионов операций в секунду на кластере из 20 серверов с задержкой менее 1 мс для 99.9% запросов.

Производительность и результаты

Новая архитектура демонстрирует впечатляющие показатели:

  • Пропускная способность: 250k RPS на один сервер
  • Задержка P99: менее 1 миллисекунды
  • Масштабируемость: линейный рост производительности с добавлением узлов

Решение уже работает в продакшене и обслуживает критически важные рабочие нагрузки, включая реальное ML-обслуживание и высоконагруженные API.

По материалам: Databricks