Size: a a a

2020 October 09

IK

Ilya Kaznacheev in Go-go!
Господа, есть вопрос. Как правильно реализовать параллельную обработку задач из кафки, при этом не терять сообщения при фейле?
Насколько я понимаю, если просто читать сообщения из очереди, то либо читать по-одному (отказоустойчиво - если сфейлился, то перечитал сообщение и выполнил), либо читать батч, потом параллелить его обработку, но если сфейлится часть, то не получится отметить часть непрочитанными - либо все, либо ни одного

Как-то еще это можно сделать?
источник

IK

Ilya Kaznacheev in Go-go!
Вроде можно как-то на партиции разбить, и из нескольких партиций параллельно читать?
источник

VL

V L in Go-go!
если у вас обработка сообщений идемпотентна, то можно фейлить батч
источник

IK

Ilya Kaznacheev in Go-go!
Действительно, спасибо
источник

IK

Ilya Kaznacheev in Go-go!
А если нет?
источник

IK

Ilya Kaznacheev in Go-go!
У меня переходный процесс от MVP до нормального состояния, и пока запросы не особо идемпотентны
источник

VL

V L in Go-go!
Я не очень понимаю где вы паралелите: на уровне нескольких воркеров-сервисов или внутри одного сервиса.
источник

MG

Max Grigoriev in Go-go!
Ilya Kaznacheev
У меня переходный процесс от MVP до нормального состояния, и пока запросы не особо идемпотентны
Значит бить топик на партиции, иметь несколько консюмероы которые будут читать по одному сообщению.
источник

h

hmirin in Go-go!
Подскажите, где можно прочитать про память в слайсах. интересует вопрос, почему при использовании долгоживущих очередей, используйте связанные списки. а для короткоживущих слайсы.
источник

HM

Henry Metlov in Go-go!
могу предположить, что это связано с тем, что слайс память обратно не возвращает пока используется. Если у вас в какой-то момент очередь разрослась, и слайс увеличился до больших размеров, то вне зависимости от уменьшения его, память остается. А в связанном списке просто отдельные объекты.
источник

RL

R L in Go-go!
Подскажите использовать init() в пакетах норм или считается плохой практикой?
источник

RL

Ragnar Lodbrok in Go-go!
R L
Подскажите использовать init() в пакетах норм или считается плохой практикой?
Если можно без него, то лучше без него
источник

АШ

Алтынбек Шарипов... in Go-go!
R L
Подскажите использовать init() в пакетах норм или считается плохой практикой?
Считается плохой практикой, но конечно есть исключения
источник

RL

R L in Go-go!
Алтынбек Шарипов
Считается плохой практикой, но конечно есть исключения
инициализация map попадает под исключение?
источник

АШ

Алтынбек Шарипов... in Go-go!
R L
инициализация map попадает под исключение?
🤷🏻‍♂️
источник

IK

Ilya Kaznacheev in Go-go!
V L
Я не очень понимаю где вы паралелите: на уровне нескольких воркеров-сервисов или внутри одного сервиса.
Внутри сервиса
источник

RL

Ragnar Lodbrok in Go-go!
R L
инициализация map попадает под исключение?
А зачем ее инициализировать именно в init?
Всегда можно добавить функцию типа Start() и начинать работу с пакетом именно с нее
источник

h

hmirin in Go-go!
Henry Metlov
могу предположить, что это связано с тем, что слайс память обратно не возвращает пока используется. Если у вас в какой-то момент очередь разрослась, и слайс увеличился до больших размеров, то вне зависимости от уменьшения его, память остается. А в связанном списке просто отдельные объекты.
благодарю
источник

АШ

Алтынбек Шарипов... in Go-go!
Действительно, зачем эта мапа вообще нужна непонятно и для чего ее сразу инициализировать тоже
источник

RL

R L in Go-go!
Ragnar Lodbrok
А зачем ее инициализировать именно в init?
Всегда можно добавить функцию типа Start() и начинать работу с пакетом именно с нее
Просто думал, что init() для этого и нужна.
источник