Проблема масштабирования ZippyDB
До внедрения ZGateway клиенты ZippyDB подключались напрямую к каждому хосту базы данных. Один клиент мог устанавливать десятки тысяч TLS-соединений с сотнями тысяч хостов, что приводило к исчерпанию файловых дескрипторов и OOM-ошибкам. Инциденты с переподключением вызывали циклы перезагрузки всего флота. Поскольку клиентами владеют сотни команд, исправления на стороне клиента были неэффективны.
Решение: ZGateway как единая точка входа
ZGateway — это безсостоятельный прокси-слой, работающий на базе толстого C++ клиента ZippyDB. Он принимает запросы от клиентов, завершает TLS, применяет контроль доступа, кэширует данные и батчингует запросы перед отправкой на реплики. Прокси развернут в региональных зонах через ServiceRouter и обрабатывает более 1 миллиарда операций в секунду.
Математика масштабирования: от линейного роста к константе
Внедрение прокси изменило архитектуру соединений. Вместо линейного роста числа соединений с количеством клиентов, ZGateway ограничивает fan-in количеством регионов и плотностью шардов. При тестовых параметрах (500 000 хостов БД, 30 000 прокси, 1 000 000 клиентов) количество постоянных соединений сократилось в 19 раз, а нагрузка на отдельный хост упала на 97-98%.
| Метрика | До ZGateway (Прямой доступ) | После ZGateway (Прокси) |
|---|---|---|
| Обработка операций | Зависит от клиента | > 1 млрд ops/sec |
| Доля трафика | 100% (прямое) | ~40% (прогноз 60%) |
| Вычислительный оверхед | 0% | ~6% (средний случай) |
| Снижение соединений | Линейный рост | Сокращение в 19 раз |
| Нагрузка на хост | Высокая (десятки тысяч коннектов) | Снижение на 97-98% |
Ключевые возможности: DLS и кэширование
В ZGateway внедрена система Discriminant Load Shedding (DLS). При перегрузке (CPU >90%) система изолирует «шумных» клиентов, отбрасывая только их запросы. В тесте с 1350 тенантами только 6 нарушителей подверглись шейдингу, а 99.9% остальных запросов выполнились успешно при goodput 97-98%. Также реализовано read-through кэширование с гарантией свежести данных через CDC-события.
Почему это важно
Хотя ZGateway не будет опубликован как открытый продукт, он демонстрирует передовой паттерн управления трафиком в распределенных системах. Идея выноса клиентской логики (батчинг, кэширование, транзакции) в управляемый прокси-слой позволяет изолировать проблемы масштабирования от тысяч независимых сервисов, обеспечивая стабильность при экстремальных нагрузках.
Источник: MarkTechPost ↗
