Сначала оцените байтовый поток и допустимость потерь. Callback должен быстро передать данные в ограниченный буфер, а отдельные workers — пакетировать и отправлять их.
Задача: есть callback, срабатывающий 100 тысяч раз в секунду, поставляет бинарные данные. Нужно доставить их на центральный сервер. Какие подводные камни и хорошие практики?
Сначала оцените байтовый поток и допустимость потерь. Callback должен быстро передать данные в ограниченный буфер, а отдельные workers — пакетировать и отправлять их.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Сначала оцените байтовый поток и допустимость потерь. Callback должен быстро передать данные в ограниченный буфер, а отдельные workers — пакетировать и отправлять их.
Проверьте владение входным буфером: его могут переиспользовать сразу после callback, тогда нужна копия. Задайте backpressure или явную политику сброса, последовательные номера, retries и дедупликацию. При требовании пережить падение нужен локальный durable-spool. Накапливать бесконечную очередь в RAM нельзя.