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