в каждом источнике одинаковые и порядок данных тоже. По сути это стрим событий. Внутри сообщения нет никаких порядковых номеров и меток времени. Источники могут отставать друг от друга. Стримы могут менять лидерство по доставке несколько раз в сек, минуту, час, день. Собственно как брать в моменте самые быстрые данные без дублирования и пропусков?
А как предполагается узнавать, что лидерство сменилось?
Кешироватб хеш от данных и самые новые, те которые в кеш ещё не попали
а в какой предметной области такое бывает? (интересно просто)
Мб котировки какие то с бирж
В этом и вопрос
Это будет медленно и как чистить мапу?
Интересный вариант. Пока не произошла синхронизация нужно много данных сравнить(((
Узкое горлышко качает по сети сами данные. Функция активации работает очень быстро. Реальная Система - брокер сообщений или прокси от nginx (любой другой поток), один или больше клиентов, сервер редиса для хранения и синхронизации очистка возможна через автоудаление ключей но всё зависит от самой системы.
Идея хорошая, но сравнение по всем полям структуры на каждом вызове даёт огромные накладные расходы. + Это очень жирно по памяти хранить столько данных. А в целом отличный вариант. Но как бороться с тем, что твой сервер хранит состояние, чего в идеале не должен делать
Считай hash суммы от данных сообщения и храни их последовательность.
Какие вводные – такая и идея) Мы же не знаем ничего про сообщения кроме того, что там нет порядковых номеров и меток времени. Памяти нужно на одно-два сообщения и один оффсет для каждого источника данных. А как можно сделать дедупликацию без хранения состояния, я совершенно не представляю.
Я выше это и описывал 😏
Хеш суммы и сравнение по всем полям - разные вещи
Это приведёт к задержке в размер окна
да, но задержка должна быть в любом случае - нужно дождаться всех отвечающих
Зачем ждать все ?
> задача получать "самые быстрые данные"
Идея в том чтобы брать самый быстрый
Обсуждают сегодня