Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / немного практической кафки в топик / 25 сообщений из 63, страница 1 из 3
18.11.2020, 14:51
    #40019950
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
немного практической кафки в топик
собссно тема. есть топик. есть 10 партиций на топике.
есть 10 консамеров. сидят в одной группе.
топик компактный, много данных. читаем сначала. консамеры поллят раз в секунду. выгребают до 1000 сообщений.
в топике.

ожидаемое поведение - стартуем 10 консамеров - все 10 консамеров гребут по 1000 сообщений.
что в реале - из 10-ти консамеров рандомно 2-3 консамера выгребают от 200 и до 1000 сообщений за один цикл

что за фигня. понимаю это больше не касательно джавы но все же. выходит кафка еще и не гарантирует отдачу сообщения даже если оно есть? ну то есть отдам когда-нибудь.
...
Рейтинг: 0 / 0
18.11.2020, 15:03
    #40019963
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
немного практической кафки в топик
andreykaT
собссно тема. есть топик. есть 10 партиций на топике.
есть 10 консамеров. сидят в одной группе.
топик компактный, много данных. читаем сначала. консамеры поллят раз в секунду. выгребают до 1000 сообщений.
в топике.

ожидаемое поведение - стартуем 10 консамеров - все 10 консамеров гребут по 1000 сообщений.
что в реале - из 10-ти консамеров рандомно 2-3 консамера выгребают от 200 и до 1000 сообщений за один цикл

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

Без кода и логов сложно понять что там у тебя.
Точно одна group.id у них? Сколько ядер на серваке? Может тупо не успевает выгрести, хз
...
Рейтинг: 0 / 0
18.11.2020, 15:20
    #40019970
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
немного практической кафки в топик
andreykaT,
Очереди всегда надо мониторить и изучать инструменты оного.
Это побочка асинхронности.
Изучай.
...
Рейтинг: 0 / 0
18.11.2020, 15:28
    #40019976
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
немного практической кафки в топик
andreykaT

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


А когда по Вашему должен наступать момент "оно есть" ?

Вообще, если в коде/приложение есть точки синхронизации, до которых "оно нет", а после которых "оно гарантированно есть".... то это и называется "синхронизация" ))), синхронный код. Полная противоположность асинхронному ))) IMHO & AFAIK

Кафку не знаю. Подозреваю интервалы выгребания и кэширования как нибудь настраиваются. Но это Вам на курсы администрирования кафки )))
...
Рейтинг: 0 / 0
18.11.2020, 16:56
    #40020035
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
немного практической кафки в топик
забыл ник
andreykaT
собссно тема. есть топик. есть 10 партиций на топике.
есть 10 консамеров. сидят в одной группе.
топик компактный, много данных. читаем сначала. консамеры поллят раз в секунду. выгребают до 1000 сообщений.
в топике.

ожидаемое поведение - стартуем 10 консамеров - все 10 консамеров гребут по 1000 сообщений.
что в реале - из 10-ти консамеров рандомно 2-3 консамера выгребают от 200 и до 1000 сообщений за один цикл

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

Без кода и логов сложно понять что там у тебя.
Точно одна group.id у них? Сколько ядер на серваке? Может тупо не успевает выгрести, хз

Так в логах ниче нет. Полл прошел консумер выгреб ноль.
Групайди одна. Это прям 143%.
Выглядит так будто кафка типа "не готова" Отдавать сообщения, А в следующий полл может быть готова. А может тоже нет. Я то думал там можно до бесконечности накидать партиций и Консамеров. И оно типа будет работать. Но вот оказывается нет :)
...
Рейтинг: 0 / 0
18.11.2020, 17:42
    #40020049
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
немного практической кафки в топик
andreykaT,
Жжешь
...
Рейтинг: 0 / 0
18.11.2020, 17:46
    #40020058
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
немного практической кафки в топик
andreykaT
Так в логах ниче нет
что как девушка? Чьи логи? Уровень логирования?
...
Рейтинг: 0 / 0
18.11.2020, 21:15
    #40020131
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
немного практической кафки в топик
просто подожди это сколько подожди особенно когда читаешь компактный топик с начала.

в том и дело что я читаю топик сначала. а оно отдает сообщения порциями с невменяемыми паузами.
...
Рейтинг: 0 / 0
18.11.2020, 22:15
    #40020147
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
немного практической кафки в топик
andreykaT
кафка типа "не готова"

Zzz79
просто подожди ,все дойдет

Ребята. Давайте инженерными терминами.
...
Рейтинг: 0 / 0
18.11.2020, 22:38
    #40020153
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
немного практической кафки в топик
andreykaT
собссно тема. есть топик. есть 10 партиций на топике.
есть 10 консамеров. сидят в одной группе.
топик компактный, много данных. читаем сначала. консамеры поллят раз в секунду. выгребают до 1000 сообщений.
в топике.

ожидаемое поведение - стартуем 10 консамеров - все 10 консамеров гребут по 1000 сообщений.
что в реале - из 10-ти консамеров рандомно 2-3 консамера выгребают от 200 и до 1000 сообщений за один цикл

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


Как-то сумбурно всё... Я думаю что работает одна из квантовых механик гарантий доставки.
Но чтобы что-то детально говорить надо узнать как андрейка сконфигурил. Нужен какой-то первый шаг.

Вот со ссылкой на доку
https://kafka.apache.org/documentation/#semantics At most once—Messages may be lost but are never redelivered.
At least once—Messages are never lost but may be redelivered.
Exactly once—this is what people actually want, each message is delivered once and only once.
...
Рейтинг: 0 / 0
18.11.2020, 22:39
    #40020155
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
немного практической кафки в топик
del
...
Рейтинг: 0 / 0
18.11.2020, 23:40
    #40020165
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
немного практической кафки в топик
ну насколько я понимаю у меня второй кейс. то есть либо раз либо много.
далее, кафка не моя. у меня в руке есть топик и брокер. всё. могу слушать могу не слушать.

в общем, судя по тому как валятся мессаджи я думаю всё же какие то моменты с конфигурацией самой кафки.

фиг с ним. спрошу как всегда девопсов что там наворотили.

пока практика показывает даже если мессаджи есть не факт что при первом случившемся полле они тебе прилетят.

ок.

тогда такой чуть другой вопрос. надо прочесть топик до конца и погасить консамер. или группу консамеров.
что я умею делать. я умею читать конечный оффсет, я умею читать текущий оффсет. я умею вычесть текущий минус конечный и узнать сколько осталось.

как я это вижу. я вначале собираю в какую нибудь конкурентную мапу ключами все партиции (1-2-3-4-5-6 и т.п.) и при каждом обработанном рекорде вытаскиваю текущий оффсет и максимальный оффсет (на момент получения рекорда) и кладу в мапу по ключу партиции значение разницы между ними.

в итоге у меня получается некий реестр с партициями и остатком мессаджей. и вот я периодически смотрю когда там всё будет по нулям (на самом деле по единицам) - я гашу сервис.

это вполне рабочий вариант как мне кажется, до тех пор, пока не наступит случай кода надо запустить несколько инстансов своего приложения. то есть вариант не очень. )

есть еще какие то варианты дочитать топик до условного конца и выключиться?
...
Рейтинг: 0 / 0
19.11.2020, 01:31
    #40020185
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
немного практической кафки в топик
Если ты хочешь гарантировано определить, что топик закончился, то засылай на продюсерах спец-сообщение типа TerminalMessage. И отваливайся.
...
Рейтинг: 0 / 0
19.11.2020, 08:01
    #40020208
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
немного практической кафки в топик
mayton
Если ты хочешь гарантировано определить, что топик закончился, то засылай на продюсерах спец-сообщение типа TerminalMessage. И отваливайся.
+1
В файлах есь EOF для этого. В строках конец строки.
А вот в очерели, да еще закольцованной #какойконецавторищет?
))
...
Рейтинг: 0 / 0
19.11.2020, 08:03
    #40020210
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
немного практической кафки в топик
andreykaT
ок.

тогда такой чуть другой вопрос
понятно. Развивать знания не захотели.
Тему мониторинга очередей закрыли.
...
Рейтинг: 0 / 0
19.11.2020, 08:30
    #40020213
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
немного практической кафки в топик
andreykaT
есть еще какие то варианты дочитать топик до условного конца и выключиться?


"Условный конец" топика, это когда его удалят.

Очень грубая аналогия:

Топик это "сливная труба", в которую кто-то может "сливать воду" (передавать данные).
В ней может быть "то густо, то пусто" (данные поступают не равномерно).
Вода в ней "закончиться" может только, когда "трубу демонтируют" (данные гарантированно не будут поступать, когда топик уничтожен).

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

Т.е. Кафка дает гарантию доставки данных. но не дает гарантию единственности доставки данных.
...
Рейтинг: 0 / 0
19.11.2020, 12:28
    #40020314
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
немного практической кафки в топик
mad_nazgul
andreykaT
есть еще какие то варианты дочитать топик до условного конца и выключиться?


"Условный конец" топика, это когда его удалят.

Очень грубая аналогия:

Топик это "сливная труба", в которую кто-то может "сливать воду" (передавать данные).
В ней может быть "то густо, то пусто" (данные поступают не равномерно).
Вода в ней "закончиться" может только, когда "трубу демонтируют" (данные гарантированно не будут поступать, когда топик уничтожен).

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

Т.е. Кафка дает гарантию доставки данных. но не дает гарантию единственности доставки данных.


речь о компакт-топике. в нем данные хранятся по ключам столько сколько надо хранятся и никуда не исчезают. то есть по одному ключу может быть от 1го сообщения до икс сообщений (сортировкой по таймлайну). когда запускается процесс зачистки - он дропает емнип все кроме последнего. и так до следующего раза. по ключу может быть 1-2-3-4-5 сообщений. прошел пурдж - остался 1 или 1-2. ну и т.п.

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

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

опять же у меня моя специфическя задача и она такая какая она есть. никто ничего в топик слать не будет так как топик публичный со своей логикой и своими слушателями которые эту логику ожидают.
...
Рейтинг: 0 / 0
19.11.2020, 13:10
    #40020336
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
немного практической кафки в топик
andreykaT
опять же у меня моя специфическя задача и она такая какая она есть
тогда не ленись и МОНИТОРЬ чужую очередь. Где ты ничего не можешь а толькт наблюдатель.
Изучай средства кафки.
...
Рейтинг: 0 / 0
19.11.2020, 13:28
    #40020347
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
немного практической кафки в топик
PetroNotC Sharp
mayton
Если ты хочешь гарантировано определить, что топик закончился, то засылай на продюсерах спец-сообщение типа TerminalMessage. И отваливайся.
+1
В файлах есь EOF для этого. В строках конец строки.
А вот в очерели, да еще закольцованной #какойконецавторищет?
))

+1

Не говоря о том, что в НЕ синхронной системе (когда в общем-то само понятие "время" у нас отсутствует) и к тому же распределенной (когда отсутствует понятие "где") вообще слова "если мессаджи есть" теряют свой смысл. Т.к. ни когда именно они есть, ни где именно они есть - неопределено.

Например для ConcurrentQueue: Хочется точно знать "offset" и "count", будь добр сделать synchronize, заблокировать всю работу и только тогда, возможно, ты можешь их получить. Возможно, т.к. собственно ConcurrentQueue не позволяет сделать synchronize ))). Для казалось бы простейшей задачи/желания нужно городить велосипед из 100500 классов поверх (видел такое).

НЕ приминительно к Kafka. А вообще. Сферически. IMHO

p.s. Такое чувство, что попытка использовать очереди в качестве БД или хранилища информации. До чего только современные технологии не доводят. Поизобретали микроскопов, а гвозди нормально забивать нечем ))).
...
Рейтинг: 0 / 0
19.11.2020, 13:53
    #40020365
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
немного практической кафки в топик
Leonid Kudryavtsev,
Да. Ты угадал. Аффтар делает копию бд в очередях)))
С постановкой у него уже пол года эксперименты.
...
Рейтинг: 0 / 0
19.11.2020, 14:13
    #40020377
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
немного практической кафки в топик
PetroNotC Sharp
Leonid Kudryavtsev,
Да. Ты угадал. Аффтар делает копию бд в очередях)))
С постановкой у него уже пол года эксперименты.


А чем Kafka Streams не подходит?
...
Рейтинг: 0 / 0
19.11.2020, 14:42
    #40020402
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
немного практической кафки в топик
Leonid Kudryavtsev
PetroNotC Sharp
пропущено...
+1
В файлах есь EOF для этого. В строках конец строки.
А вот в очерели, да еще закольцованной #какойконецавторищет?
))

+1

Не говоря о том, что в НЕ синхронной системе (когда в общем-то само понятие "время" у нас отсутствует) и к тому же распределенной (когда отсутствует понятие "где") вообще слова "если мессаджи есть" теряют свой смысл. Т.к. ни когда именно они есть, ни где именно они есть - неопределено.

Например для ConcurrentQueue: Хочется точно знать "offset" и "count", будь добр сделать synchronize, заблокировать всю работу и только тогда, возможно, ты можешь их получить. Возможно, т.к. собственно ConcurrentQueue не позволяет сделать synchronize ))). Для казалось бы простейшей задачи/желания нужно городить велосипед из 100500 классов поверх (видел такое).

НЕ приминительно к Kafka. А вообще. Сферически. IMHO

p.s. Такое чувство, что попытка использовать очереди в качестве БД или хранилища информации. До чего только современные технологии не доводят. Поизобретали микроскопов, а гвозди нормально забивать нечем ))).

верное чувство. очереди используют как хранилище данных. почему так? ну вот так вот. я как сталин работаю с теми людьми что есть других не дали. )))

я понимаю что "конец" очереди это вещь весьма условная. потому что он может быть конец на определенный момент времени который у всех к тому же разный. я думаю что конец а за долю секунды до того или после того залетело уже новое сообщение а я не знаю и думаю что конец а оно прилетает. понятно что это всё ОЧЕНЬ условно.
поэтому цель стоит прочитать всё что нужно из топика до определенного оффсета,потому что после него уже читают другие. или незадолго до него.
оффсет это понятие абсолютное. вот когда ты его попросил у кафки оно посмотрело в партицию и отдало тебе это значение. всё. так же у партиции есть как минимум, начало.

можно сказать к системе требование "ат лист ванс" то есть если продублируются некоторые мессаджи это не страшно. страшно если они не придут вовсе.
...
Рейтинг: 0 / 0
19.11.2020, 15:19
    #40020429
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
немного практической кафки в топик
andreykaT,
Мил человек. Рано вам Мир подстраивать под себя как Сталин.
Сначала найдите ваш юзкейс в сети и после этого можно обсуждать.
Не нашли? Нобелевская у вас?
...
Рейтинг: 0 / 0
19.11.2020, 15:23
    #40020431
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
немного практической кафки в топик
andreykaT
цель стоит прочитать всё что нужно из топика до определенного оффсета

Термин кухарки детектед и подчеркнут.
...
Рейтинг: 0 / 0
19.11.2020, 15:49
    #40020447
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
немного практической кафки в топик
andreykaT

я понимаю что "конец" очереди это вещь весьма условная. потому что он может быть конец на определенный момент времени который у всех к тому же разный. я думаю что конец а за долю секунды до того или после того залетело уже новое сообщение а я не знаю и думаю что конец а оно прилетает. понятно что это всё ОЧЕНЬ условно.
поэтому цель стоит прочитать всё что нужно из топика до определенного оффсета,потому что после него уже читают другие. или незадолго до него.
оффсет это понятие абсолютное. вот когда ты его попросил у кафки оно посмотрело в партицию и отдало тебе это значение. всё. так же у партиции есть как минимум, начало.


Я не специалист в Кафке от слова вообще. Но если предположить что Кафка работает на принципах TCP/IP
протокола. (А она работает) Тогда у нас есть 2 базовые стратегии как пушить или поллать месседж.

1) 1 TCP сообщение == 1 JMS/MQ/Kafka ообщение.
2) 1 TCP сообщение == много JMS/MQ/Kafka ообщений.

И мне кажется что таймауты которые видел Андрейка это второй кейс. Но тут надо смотреть в настройки
и мониторинг. Без этой инфы - мы как слепые котята.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / немного практической кафки в топик / 25 сообщений из 63, страница 1 из 3
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]