Как распределить пакетную запись по узлам кластера БД?

Вместо единственного статического адреса используйте доступный пул узлов с проверкой состояния, ограниченными повторами и идемпотентными пакетами. Равное число сборщиков не гарантирует равный поток данных.

Короткий ответ

Что ответить на собеседовании

Вместо единственного статического адреса используйте доступный пул узлов с проверкой состояния, ограниченными повторами и идемпотентными пакетами. Равное число сборщиков не гарантирует равный поток данных.

Подробный разбор

Ответ с пояснениями

Условие

N независимых сборщиков получают непересекающиеся потоки, накапливают пакеты и отправляют их по HTTP в кластер БД. Любой узел БД принимает запись. Сейчас установщик равномерно назначает каждому сборщику один статический адрес БД. Предложите решение для отказов узла, повторов и неравномерной нагрузки.

Ответ

Вместо единственного статического адреса используйте доступный пул узлов с проверкой состояния, ограниченными повторами и идемпотентными пакетами. Равное число сборщиков не гарантирует равный поток данных.

Пакету назначают устойчивый идентификатор; БД или слой приёма дедуплицирует повтор после потери ответа. Неотправленные данные сохраняют в ограниченном долговечном буфере с backpressure, а не только в памяти. Клиент выбирает доступный endpoint с учётом нагрузки либо работает через отказоустойчивый балансировщик. Повторы имеют backoff и jitter. Отдельно оговаривают семантику подтверждения записи, предел буфера и поведение при недоступности всего кластера.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее