Всем привет. Подскажите, плиз, как правильно сделать? Есть консьюмер, который читает

топик и на основе пришедших данных делает расчет и отдает результат ниже. Допустим, этот констюмер «падает» по какой-то причине и рестартует автоматически. Теперь консьюмеру надо с нулевого оффсета прочитать весь топик до момента где он «упал» и заново сделать расчеты.

Учитывая реалтайм событий, делать расчеты с нулевого оффсета как-то не хочется. Смотрю в сторону compacted topic’ов. Но, не могу понять, как сказать консьюмеру, что для начала надо прочитать компактед топик. Или это решается простым обработчиком ошибок? Типа, нет компактед, читаем с нуля, в противном случае компактед и далее реалтайм.

Подскажите, как правильно делать, плиз.

10 ответов

23 просмотра

результат вычислений хранить в бд

Alexander- Автор вопроса
Dmitry Boeing
результат вычислений хранить в бд

в чем преимущество перед compacted topic?

Alexander
в чем преимущество перед compacted topic?

O(1) на чтение, а в компакшоне O(n) если поверх него кэш (или индекс) не намотать, а если намотать, то надо будет заморачиваться на поддержания целостности этого кэша (или индекса)🤪 Я такое делал, но это больно)

Alexander- Автор вопроса
Sergei Kuzmin
O(1) на чтение, а в компакшоне O(n) если поверх не...

но, в таком случае мне придется поверх всего этого еще и накатывать кастомный retention policy, ибо данные "протухают" через определенное время. По большому счету, чтение из compacted topic происходит только один раз при "подъеме" контенера, поэтому, O(n) тут, думаю, не сильно влияет. Но, это опять же, мое сугубо личное мнение.

Alexander
но, в таком случае мне придется поверх всего этого...

так компакшен же ретеншон полиси, на топике данные актуальные получаются, если их по порядку читать и если они шардированы в партиции по ключу. Тогда при чтении свежие значения по ключу затрут старые, если ретеншен не успел удалить устаревшие дубли. я оставлял поток с отдельным консьюмером, чтобы он обновления топика сразу писал в инмемори key-value, событие на удаление записи тоже приходит

Alexander- Автор вопроса
Sergei Kuzmin
так компакшен же ретеншон полиси, на топике данные...

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

Alexander
я имел ввиду, что случае с базой данных мне надо б...

Аааа, tarantool крутая DB для агрегирования и хитрых ретеншенов, но там надо немножко кодить на lua даже сам этот retention)

Alexander- Автор вопроса
Sergei Kuzmin
Аааа, tarantool крутая DB для агрегирования и хитр...

я в AWS все кручу и не особо хочется поднимать дополнительные provisioned инстансы для чего-то, что не будет использоваться 24х7 ;)

Alexander
я в AWS все кручу и не особо хочется поднимать доп...

Интересно) Тогда и правда инмемори стейт с персистентом в кафкином компакшене - вполне себе вариант для рассмотрения))

Alexander- Автор вопроса
Sergei Kuzmin
Интересно) Тогда и правда инмемори стейт с персист...

Можно, конечно заморочиться с DynamoDB, в которой есть ttl аттрибут, но это уже история для другого чатика )) Спасибо за идею с db

Похожие вопросы

Обсуждают сегодня

Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Привет!) Кто как юзает переменные в строках?) Чисто ради интереса Вот так: echo "У меня {$bananasAmount} бананов"; Или вот так: echo "У меня ${bananasAmount} бананов";
Виталий
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
разработчик ботов скидывает портфолио, боты которые он уже создал. А вот как узнать что это именно он их создал?
Gosudar
4
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Карта сайта