Сижу пишу велосипед, может кто написал уже? Вычитываем из кафки

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

4 ответов

11 просмотров

Мы параллельно обрабатываем сообщения вычитанные из партиций кафки в очередь. Обработка так гораздо быстрее чем последовательно. Но при этом для коммита надо складывать обработанные оффсеты в непрерывную последовательность и потом коммитить иначе при восстановлении в случае сбоя не обработанные сообщения могут быть потеряны. Также приходится очень тщательно обрабатывать ошибки и следить за тем что код занимающийся параллельной обработкой не должен зависать. Если одно сообщение зависнет вас может порвать по памяти при накоплении непрерывной последовательности. Готового решения не встречал. Но в доке кафки написано что если захочется параллельной обработки партиции то надо делать примерно так как я описал.

Oleg-Nyrkov Автор вопроса
Руслан Маркелов
Мы параллельно обрабатываем сообщения вычитанные и...

хорошо, спасибо, тогда наверно выложу свою поделку, может кто посмотрит скажет где не прав

Руслан Маркелов
Мы параллельно обрабатываем сообщения вычитанные и...

а backpressure не делаете, чтобы зависание не роняло приложение?

Oleg
а backpressure не делаете, чтобы зависание не роня...

у нас очереди на каждую партицию отдельные и ограниченные если очередь заполнена перестаем читать партицию пока не разгребется очередь зависание кода обработчика мы не можем контролировать (там пользовательский код) поэтому у нас есть таймаут и если в течении этого таймаута код обработчика не возвращает управление то мы просто добавляем ооффсет этого сообщения к последовательности на коммит тут выбор либо блокировать и выходить изз групппы подписки либо продолжать с подвисшим потоком, мы выбрали продолжать

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

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

Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
Всем привет, есть небольшая проблема Есть такой скрипт document.addEventListener('DOMContentLoaded', function () { const sliderTabs = document.querySelectorAll('.s...
A da
8
@go1337 @dblackCat Привет. Все ещё дрочусь с fastpanel. Добавил второй домен который должен смотреть в рут того же сайта, но так как это просто домен, а не сайт, я не могу ему...
Ross 🦴
9
До речі, в ево нема можливості чи якого розширення щоб з адмінки з телефона зайти і терміново щось в верстці поправити?
Женя
7
кто-нибудь пользуется тайм-трекерами во время работы? так много разных нагуглил, может есть что-то популярное
Lencore
8
Пацаны. Я разрабатываю софт для инвайтинга на телетон, и столкнулся с такой проблемой, в один из чатов не могу приглашать никого, не дает добавлять, в то же время через официа...
Kernel Panic
11
Скажите, а кому нужен Currency как отдельный плагин вместо полноценного ecommerce в OctoberCMS? Кто-то использует его уже или планирует в будущем? Может я что-то не понимаю?
Igor
13
Розмовами про Рево мені нагадали часи, коли шаблони правилися прямо в адмінці. Хто в курсі, чому відійшли від цієї практики, так блейд не працює? Доволі зручно ж було (інколи)
Женя
3
Всем добрый вечер, Рад оказаться в кругу единомышленников. Начинаю погружаться в мир .net веба. Зовут Ерасыл 🖖 У меня назрел вопрос: Какой процент проектов, прошедшие через в...
Ерасыл
6
Чому? Да тому що без GiT не уявляю нормального проекта а коли код в базі то то так собі
Dmytro Lukianenko
3
Карта сайта