Как внедрить накопительные наборы времени в Кафке? - PullRequest
1 голос
/ 06 апреля 2019

Я хочу использовать Кафку для распределения высокочастотных цен финансового рынка внутри фирмы.Данные поступают со скоростью 2000-3000 номеров в секунду от различных поставщиков.Потребители заинтересованы в последнем пункте, потому что это самая последняя цена, однако, они часто также заинтересованы в получении истории цены.

Теперь за серию высоколиквидных средств, таких как курс доллара США / евро (EURUSD), может приходиться до 100 сообщений в секунду.Когда потребители хотят получить исторические данные, им нужна серия выборок , а не весь журнал сообщений, потому что это было бы огромно.Например, им может понадобиться история цен только за каждые 5 минут, скажем, за 10 дней, то есть только за каждое 30000-е сообщение в журнале (100 * 60 * 5) из последних 86 миллионов тиков (10 дней * 24 часа * 3600секунд * 100 / секунда = 86,4 миллиона сообщений в журнале).

Анализ всего 10-дневного журнала только для каждого 30000-го, безусловно, будет очень дорогой операцией.Очевидно, что у меня может быть потребитель, который делает это, а затем переиздается в другую тему каждые 5 минут, но тогда у меня теперь будет две разные темы для одного и того же тикера (EURUSD), который снова вводит своего рода архитектуру «партия против живого».Более того, я не хочу так быстро выбегать из космоса.Хранение 100 тиков в секунду - это слишком много.В то же время я хочу, чтобы была доступна самая последняя цена без двух тем.

Как это можно решить?В идеале я хотел бы, чтобы цены в реальном времени публиковались всегда, а также, возвращаясь в журнал, получать каждые 5 минут или около того исторических сообщений.Это выполнимо / выполнимо, без дорогих сканирований?Может ли Кафка выталкивать сообщения, которые НЕ хранятся в журнале (т. Е. Сообщения, которые нельзя потерять), но хранить одно из них каждые 5 минут, скажем?Как это будет сделано?

1 Ответ

2 голосов
/ 07 апреля 2019

Вы можете использовать offsetsForTime , чтобы получить карту смещений для требуемых разделов и выполнить поиск оттуда.Насколько мне известно, это стало возможным благодаря введению индекса на основе времени (см. https://cwiki.apache.org/confluence/display/KAFKA/KIP-33+-+Add+a+time+based+log+index#KIP-33-Addatimebasedlogindex-Enforcetimebasedlogretention) - поэтому я предполагаю, что он эффективен, насколько это возможно.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...