powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / немного практической кафки в топик
63 сообщений из 63, показаны все 3 страниц
немного практической кафки в топик
    #40019950
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
собссно тема. есть топик. есть 10 партиций на топике.
есть 10 консамеров. сидят в одной группе.
топик компактный, много данных. читаем сначала. консамеры поллят раз в секунду. выгребают до 1000 сообщений.
в топике.

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

Ребята. Давайте инженерными терминами.
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #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
немного практической кафки в топик
    #40020155
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
del
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020165
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну насколько я понимаю у меня второй кейс. то есть либо раз либо много.
далее, кафка не моя. у меня в руке есть топик и брокер. всё. могу слушать могу не слушать.

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

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

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

ок.

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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

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


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

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

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

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

+1

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

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

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

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


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

+1

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

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

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

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

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

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

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

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

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


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

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

И мне кажется что таймауты которые видел Андрейка это второй кейс. Но тут надо смотреть в настройки
и мониторинг. Без этой инфы - мы как слепые котята.
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020729
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
andreykaT

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


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

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

И мне кажется что таймауты которые видел Андрейка это второй кейс. Но тут надо смотреть в настройки
и мониторинг. Без этой инфы - мы как слепые котята.

да, по ходу там какие то сетевые проблемы были. у меня инет через симку и когда пинг становится до хоста трехзначный (500+мс) консамеры тупо сгребать данные перестают хотя выглядят как подключенные.

я пока стратегию построил так: часть консамеров в группе стартует с начала и до того момента которые определены как оффсет на момент подключения консамеров из группы Б, параллельно включаю консамеры из группы А но не с первого оффсета,а с последнего. итого на момент заканчивания работы первой группы я имею условно актуальные данные. то есть далее актуальность поддерживают консамеры из группы А.

всё.

вот каунтеры сделал да на конкурентхашмапе, в которой по ключам каждый консамер сохраняет последний оффсет. но кейса когда разные консамеры дергают один и тот же ключь улсовно "параллельно" - у меня нет.
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020731
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
вот каунтеры сделал да на конкурентхашмапе, в которой по ключам каждый консамер сохраняет последний оффсет. но кейса когда разные консамеры дергают один и тот же ключь улсовно "параллельно" - у меня нет.


Я все равно ничего не понял. А хоть кто-то понял полёт твоей мысли?
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020742
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Я понялтолько то что интернет на симке это злостный оффтоп в теме.
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020752
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я только понял что все через жопу. Но может это было главным пунктом в ТЗ - тогда все ок
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020758
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
Я только понял что все через жопу. Но может это было главным пунктом в ТЗ - тогда все ок

что именно через жопу? я сталкиваюсь всё чаще с кейсами когда задача чуть сложнее перетаскивания джейсона из угла в угол и всё все горят. типа слооожна.

еще раз медленно.

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

как я это по крайней мере пока сделал:

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

параллельно запускаем консамеры на топик2, но уже с КОНЦА (т.е. лови сообщения созданные после подключения). ждем пока консамеры топика1 дойдут до максимального оффсета, и гасим их. бд синхронизирована. топик2 консамеры продолжают работать. бд в состоянии синхрона.

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

зачем два топика? ведь можно было бы и дальше содержать только топик1? отвечаю. в топике1 нет событий по удалению записей. они через томбстон оттуда просто "исчезают" по ключам и эти события прилетают только через топик2. поэтому топик1 годен только для инициальной заливки бд, но не годен для постоянного синхрона. топик2 же наоборот имеет вменяемый ретеншн типа 2 недели и с него ты не вытянешь все данные для инициализации.

почему так сложно? а вот так вот. в идеале хорошо иметь один топик. и одну консамергруппу. но в данном случае это невозможно потому что нету поставщиков данных.
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020766
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT

что именно через жопу?

Использовать вместо нормальной БД какой-то самокат с треугольными колесами.

andreykaT

надо в бд слить с

INSERT INTO tableB SELECT * FROM tableA;

)))
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020770
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю как вы, но все равно нихера не понял.

Зачем нужен максимальный оффсет? Зачем надо гасить консюмеров? Почему не юзать стримы? Почему tombstone приходят во второй топик только? Почему не взять нормальный механизм репликации данных?

Вообще похоже что система создана взбесившимся архитектором, который услышал про NoSQL, асинхронность и кафку.
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020777
vimba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT

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

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

1. Не гарантируется что все доступные сообщения прийдут вам за один poll.
2. Если сервер таки даже смог на FetchRequest вывалить всё что у него было, то в общем случае не факт что poll отдаст их все за раз, хотя бы из-за той же настройки max.poll.records , которая по дефолту равна 500 и если вы её не меняли то уж 1000 за раз никак не получите.
2. Ecли даже poll вернул пустой список, это не значит что в топике нет мессаджей. poll банально может возвращать пустой список при возникновении большинства типов ошибок начиная с версии 2.1, до 2.1 poll мог просто виснуть.

Что касается клиента то теоритический максимум рекордов которые poll может вернуть вам за раз определяется как минимум настройками:
1. max.poll.records (default 500)
2. max.partition.fetch.bytes (default 1048576 aka 1Mb)
3. fetch.max.bytes (default 52428800 aka 5Mb)
4. Из пункта 2 и 3 очевидно что размер мессаджей тоже имеет значение и ещё какое.
5. На брокере есть аналогичные настройки вроде message.max.bytes
6. Также таймаут который вы передали в poll как аргумент в сочетании со способом которым продьюсер мессаджи записывал(успевал он их писать по одному или групировал в бэтчи).
7. Общая загруженость CPU и сети на консумере.

Осмыслите эти настройками и если всё равно что-то останется непонятным кидайте self-executable код (демонстрирующий непонятные моменты) на github, с помощью TestContainers это сейчас делать несложно, и я смогу посмотреть.
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020783
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,
У тебя уже четвертый топик и всё дальше ты погружаешься....
Ничего личного (с)
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020785
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vimba,
Он не может осмыслить что асинхронный код по другому пишется.
Это значит, к примеру, есть кнопка стр3. Но при нажатии на страницу 3 вывалится Нет данных.
Это значит нет понятия ВЫГРЕБ ДО КОНЦА.
Идеотизм. Можно поиск гугла выгрести до конца?
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020788
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
andreykaT

что именно через жопу?

Использовать вместо нормальной БД какой-то самокат с треугольными колесами.

andreykaT

надо в бд слить с

INSERT INTO tableB SELECT * FROM tableA;

)))

а если базы НЕТ? тут чуть ранее все топили 1 бд 1 сервис и всё остальное на ивентах. получите распишитесь. а то как то непоследовательно.

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

Зачем нужен максимальный оффсет? Зачем надо гасить консюмеров? Почему не юзать стримы? Почему tombstone приходят во второй топик только? Почему не взять нормальный механизм репликации данных?

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

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

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

еще раз. речь идет НЕ о репликации, речь идет о ремаппинге данных как минимум. они не кладутся в базу в том виде в каком летят из топика. то есть о подготовке и хранении в ином формате, считай скрс.
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020795
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Боже мой сколько слов ненужных
andreykaT
еще раз медленно.
надо в бд слить

andreykaT
а если базы НЕТ?

Дак есть бд или нет?)
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020807
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
забыл ник
Не знаю как вы, но все равно нихера не понял.

Зачем нужен максимальный оффсет? Зачем надо гасить консюмеров? Почему не юзать стримы? Почему tombstone приходят во второй топик только? Почему не взять нормальный механизм репликации данных?

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

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

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

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


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

есть два топика, которые надо слить воедино и сохранить при этом некий ордеринг. Для этого ты вычитываешь оффсеты двух топиков, сохраняешь их, вычитываешь все что есть в первом топике(ну надеешься вычитать), после того как все вычитано - ты начинаешь читать из второго топика, используя оффсет прочитанный в самом начале?
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020814
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если все так, все равно выглядит как забивание гвоздей мало приспособленного для этого предметами.

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

Банальный, немного модифицированный, merge join из 3-его тома всем известного автора.

p.s. what is "топик" in Kafka - не знаю. Мое знание message driving архитектуры заканчивается на ConcurrentQueu
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020828
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что такое "максимальный оффсет на момент подключения" ?
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020898
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
andreykaT
пропущено...

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

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

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


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

есть два топика, которые надо слить воедино и сохранить при этом некий ордеринг. Для этого ты вычитываешь оффсеты двух топиков, сохраняешь их, вычитываешь все что есть в первом топике(ну надеешься вычитать), после того как все вычитано - ты начинаешь читать из второго топика, используя оффсет прочитанный в самом начале?


почти. только читать начинаю с обоих топиков одновременно.
у одного топика настройка ирлест у второго латест.

итого таймлайн 1,2,3,4,5,6,7,8,9,10... итп. у нас точка входа типа в 7 (это таймлайн, это НЕ оффсеты), где 7 это настоящее время, 1 - это далекое прошлое и 10 это недалекое будущее. так вот, с топика А (который не содержит удаленных записей) мы читаем с 1 по 7. ,
с топика Б мы читаем с 7 - и дальше в будущее. читание начинается одновременно. то есть до того как топик А выключится у нас 1,7
12,78 123,789 и т.п. и в какой то момент времени становится 1,2,3...10. 1,2,3...11. 1,2,3...12 и т.п. топик А же выключится тогда когда гарантированно построится картина 1,2,3,4,5,6,7 (дальше не важно).
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020902
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
Если все так, все равно выглядит как забивание гвоздей мало приспособленного для этого предметами.

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

никаких комплектов нет. синхронизаций нет буферов нет. говорю же. есть два топика - один компакт который содержит все ФАКТИЧЕСКИЕ записи, второй с ретеншеном, который содержит события удаления записей.

первый топик это типа "исторический" второй - текущий.

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

вкратце при запуске консамеров я один раз сохраняю все оффсеты всех партиций топика внутри консамера, и периодически снимаю с кафки значения закоммиченных оффсетов по всем партициям в рамках этой консамергруппы. далее просто сравниваю что первое минус второе дает. если больше нуля значит не доехал до "точки входа", если ноль и меньше - доехали. отваливаемся. понятно что могут быть некоторые накладки с другим топиком, но это небольшое количество дублей на "шве" которое не критично. доставку ат-лист-ванз оно вроде гарантирует.
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020903
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Что такое "максимальный оффсет на момент подключения" ?

ты вошел в топик и говоришь кафке - покажи мне ласт оффсеты по всем партициям. понятно что на момент выдачи тебе этих значений они могут быть уже и устаревшими. но как минимум они очень близки к неким "реальным". хотя что такое реальность?
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020907
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vimba
andreykaT

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

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

1. Не гарантируется что все доступные сообщения прийдут вам за один poll.
2. Если сервер таки даже смог на FetchRequest вывалить всё что у него было, то в общем случае не факт что poll отдаст их все за раз, хотя бы из-за той же настройки max.poll.records , которая по дефолту равна 500 и если вы её не меняли то уж 1000 за раз никак не получите.
2. Ecли даже poll вернул пустой список, это не значит что в топике нет мессаджей. poll банально может возвращать пустой список при возникновении большинства типов ошибок начиная с версии 2.1, до 2.1 poll мог просто виснуть.

Что касается клиента то теоритический максимум рекордов которые poll может вернуть вам за раз определяется как минимум настройками:
1. max.poll.records (default 500)
2. max.partition.fetch.bytes (default 1048576 aka 1Mb)
3. fetch.max.bytes (default 52428800 aka 5Mb)
4. Из пункта 2 и 3 очевидно что размер мессаджей тоже имеет значение и ещё какое.
5. На брокере есть аналогичные настройки вроде message.max.bytes
6. Также таймаут который вы передали в poll как аргумент в сочетании со способом которым продьюсер мессаджи записывал(успевал он их писать по одному или групировал в бэтчи).
7. Общая загруженость CPU и сети на консумере.

Осмыслите эти настройками и если всё равно что-то останется непонятным кидайте self-executable код (демонстрирующий непонятные моменты) на github, с помощью TestContainers это сейчас делать несложно, и я смогу посмотреть.


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

я поигрался с настройками, ты ставишь батч 500 тебе с 10-ти партиций прилетает только в 1-2. ставишь батч 50 - тебе прилетает со всех 10ти партиций. :) но.. оптяь же оно может и по 500 с 10-ти партиций слать, но гораздо реже.
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020913
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
mayton
Что такое "максимальный оффсет на момент подключения" ?

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

Главное чтоб они были консистентны друг с другом и с твоей предментной областью на некий момент времени t.
Чтоб ты получил 2+2=4. А не 3 и не 5.

Пример - я делаю SELECT в Oracle по табличке которая интенсивно UPDAtE-ится. Я все равно
получу 100% строк консистентных с неким тайм-штампом (технически это SCN) который был синхронным
с началом моей читающей транзакции.
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020969
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Автор выбрал message driven. А это отказ от консистентности))))
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020970
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
это выглядит так (по крайней мере внешне) что полл дернул но ничего не пришло.
у тебя не должно ничего ломаться в данном случае. Трагедию нашел.
Бери РСУБД. Там дернул и 100 процентов получил.
Микросервисники блин.
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020976
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Вот теорема САР
https://ru.m.wikipedia.org/wiki/Теорема_CAP
И он хочет упрямо как баран чтобы у него все 3 буквы С и А и Р работали.
Уже пол года хочет а в школу не ходил.
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020977
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю что весь реальный физический мир - message driven.
Яркий пример - IP протокол и бизнес операции по SWIFT,
межбанковские переводы и электронная почта.
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020979
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Моделирование или Модель это упрощенная копия реального мира.
Ключевое слово - упрощенная.
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020982
vimba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT

ожидаемое поведение - стартуем 10 консамеров - все 10 консамеров гребут по 1000 сообщений.


andreykaT


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

Осмыслите фрагменты выделенные жирным. Сколько стокилобайтных мессаджей влезает в 1Mb(дефолтная настройка )? Как вы с такими настройками и таким размером сообщений ожидаете, что poll вам за раз 1000 сообщений вернёт.

andreykaT

батч на полл как раз 500.

То же самое, если вы сами попросили более 500 за раз не давать, то откуда требования к ожидаемому поведению возвращать 1000 за один poll?

andreykaT

поллит раз в полсекунды.

Интересно что вы имеете в виду. Полсекунды передается как параметр poll? Или что-то другое.

andreykaT

я поигрался с настройками, ты ставишь батч 500 тебе с 10-ти партиций прилетает только в 1-2. ставишь батч 50 - тебе прилетает со всех 10ти партиций. :) но.. оптяь же оно может и по 500 с 10-ти партиций слать, но гораздо реже.

Это легко объяснимо. При маленьком max.poll.records консумер упершись в лимит, то есть попав в ситуацию когда много вычитал с брокеров и не может вычитанное отдать в клиентский код за раз, старается избежать узурпации консумера одной отдельно взятой партицией, тобишь starvation в других партициях и пытается отдавать мессаджи по всем партициям равномерно.
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40020983
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vimba,

у него одно сообщение несколько сотен килобайт? Или у вас так?
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40021012
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вимба, у меня одно сообщение хорошо если килобайт есть - скорее меньше.

я конечно ща может фигню скажу, но по ходу если пинги до хоста где кафка начинают заваливаться за 200-300мс -- то оно начинает слать сильно меньше и реже или вообще в нулину уходит. НО при этом всякие коннекшн эрроры не прилетают. если под 500 и потери пакетов - тогда да. всякие ошибки фетча и коннекшина. но это уже совсем край и рассматривать не стоит.
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40021013
vimba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT

размеры мессаджей там несоклько сотен килобайт.


andreykaT
Вимба, у меня одно сообщение хорошо если килобайт есть - скорее меньше.

Я пока не понял троль или просто мудень которому поговорить не с кем, но в любом случае отвечать тебе больше не буду.
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40021014
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vimba
andreykaT

размеры мессаджей там несоклько сотен килобайт.


andreykaT
Вимба, у меня одно сообщение хорошо если килобайт есть - скорее меньше.

Я пока не понял троль или просто мудень которому поговорить не с кем, но в любом случае отвечать тебе больше не буду.

несколько сотен байт. это опечатка.
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40021172
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
Вимба, у меня одно сообщение хорошо если килобайт есть - скорее меньше.

я конечно ща может фигню скажу, но по ходу если пинги до хоста где кафка начинают заваливаться за 200-300мс -- то оно начинает слать сильно меньше и реже или вообще в нулину уходит. НО при этом всякие коннекшн эрроры не прилетают. если под 500 и потери пакетов - тогда да. всякие ошибки фетча и коннекшина. но это уже совсем край и рассматривать не стоит.


Вообще-то "унутре" Kafka ещё zookeeper сидит.
При этом zookeeper служит "хранилищем" для kafka.
Это к тому же распределенное хранилище.
Причем ноды kafka и zookeeper могут быть перпендикулярны.
Если нода kafka настроена, чтобы данные читались с нескольких нод zookeeper'а.
И там хитрая система согласования нод.
С голосованием, какая нода отвалилась и кто мастер.
Потом восстановление после сбоя.
Так что если сеть плохая то "тормозить" может очень сильно.
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40021187
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тема консенсуса в распределённых системах - очень интересна.

Давайте поднимем отдельный топик.
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40021219
vimba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul

Вообще-то "унутре" Kafka ещё zookeeper сидит.

В последних версиях уже нет, кафка стала самодостаточной.

mad_nazgul

При этом zookeeper служит "хранилищем" для kafka.

Это к тому же распределенное хранилище.
Причем ноды kafka и zookeeper могут быть перпендикулярны.
Если нода kafka настроена, чтобы данные читались с нескольких нод zookeeper'а.

Ваше сообщение не соответсвует действительности. Раньше в зукипере хранилась топология кластера и настройки топиков. В очень древних мохнатых годах в зукипере ещё хранились офсеты консумеров. Но мессаджи в зукипере не хранились вообще никогда.
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40021222
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Apache Cassandra были интересные децентрализованные механизмы разрешения конфликтов.
К сожалению мне попалась в руки книга с русскоязычным переводом и она не очень точно передает
терминологию. Я поищу оригинал в торрентах на английском.
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40021239
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Тема консенсуса в распределённых системах - очень интересна.

Давайте поднимем отдельный топик.
не выйдет. ТС не любит быть исследователем и разбираться до конца.
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40021253
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А при чем тут ТС? Я вообще пишу для всех.
...
Рейтинг: 0 / 0
немного практической кафки в топик
    #40021262
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
А при чем тут ТС? Я вообще пишу для всех.
то есть подымешь на двух трех вирткалках кафку. Выложишь скрины hello world. Пруфы на доки?
Работать то кто будет?
)))
...
Рейтинг: 0 / 0
63 сообщений из 63, показаны все 3 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / немного практической кафки в топик
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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