|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
vimba andreykaT короче.. процес прошел. и снова хрень. цифры почти бьются с бд и снова ска почти. то есть в бд 10 млн. в топике 7 млн. мой вертикс прочел снова ПРАКТИЧЕСКИ 7 млн (допускаю что просто появилось больше новых сущностей). то есть всё примерно сходится. пойду после праздников к топикодержателю с пруфами что нифига не сходится. А с чего вы взяли что в топике с включенным компакшеном эти цифры будут сходится? Это же даже ребёнку очевидо, что если среди записанных есть мессаджи с одинаковыми ключами, то компакшен будет сжимать данные согласно настройкам. Тут вам нужно сначала настройки компакшена на топике посмотреть, если их нет на топике то смотрите глобальные настойки на брокере. В жирных топиках компакшен за раз как правило всё не сожмёт, потому что его эффективность ограниченна размером скользящего буфера и числу ключей для дедупликации которое ему разрешили удерживать в оперативной памяти. В общем кидайте сюда все настройки топика, все настройки брокера а также версию брокера, и мы вам всё растолкуем. andreykaT вопрос практически закрыт. Нет не решен. Вы же так ничего и не поняли. Кстате что касается вашего кода на вертексе. Я вам скинул пример как пофиксить багу в вашем коде, связанную с тем что вы комитите мессаджи до их фактической обработке, и написал что это код ещё не окончательный. Вы даже не удосужились подумать, а что там дальше нужно улучшить. Так вот сообщаю - читая мессаджи в одном потоке и скидывая их дальнейшую обработку в экзекьютор, вы теоритически можете нарушить причинно следственные связи для мессаджей с одним ключом, так как порядок их обработки в екзекьюторе не известен, и два логически взаимосвязанных события: снял штаны и посрал могут при обработке у вас переставиться местами. andreykaT за исключением: какого х если количество консамеров не равно количеству партиций цифры не сходятся. и почему они ИНОГДА не сходятся когда количество консамеров = количеству партиций. Какие цифры? Объясните в терминах кафки, какие именно цифры у вас несходятся, и как вы их получаете. andreykaT ну и вопрос без ответа. кто бы что ни говорил - могу утверждать -- если десять партиций показывают каждый по 7.5 миллионов дельты между старт-енд оффсет это НЕ означает что у тебя оффсетов будет суммарно количество дельт-партиций. и да оффсеты могут скакать и это нихера ничего не значит. Поправте два зачеркнутых слова выделенных жирным текстом. С точки зрения терминологии кафки вы написали полный бред, я не могу его расшифровать. я вроде выше написал что накатил код ровно как у тебя там реактор у вертикса начал вести себя неадекватно от таких низкоуровневых штук и блокирований потоков. нельзя в нем блокировать как то более, чем через его родной апи. или не юзать вертикс вовсе. короче, не работает твой код. я понимаю о чем ты говоришь и о каких проблемах. и подозреваю что ты скорее всего прав, вполне возможно вертикс слишком самостоятелен, и тупо гасит через какой то промежуток времени verbosely весь процесс и что то возможно теряется именно "там". хотя это не объясняет поведение что если 1 консамер на 12 партиций то потерь больше. увы или не увы. сейчас выходные у всхе та кафка прилегла и чистый эксперимент провести пока невозможно. с моими тестовыми данными из того файла в мою же кафку "баг" не повторяется. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2020, 22:11 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
andreykaT короче, не работает твой код ТС'у выкладывают код. Так как он ленивый то он обвиняет других и не делает ничего сам. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2020, 11:20 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
andreykaT короче, не работает твой код. я понимаю о чем ты говоришь и о каких проблемах. и подозреваю что ты скорее всего прав, вполне возможно вертикс слишком самостоятелен, и тупо гасит через какой то промежуток времени verbosely весь процесс и что то возможно теряется именно "там". Может там а может не там, но в любом случае так код писать нельзя, каша получиться и мессаджи рано или поздно гарантированно потеряются, даже если сейчас они "теряются" не в нём, и обработка нескольких событий связанных причинно следственными связями переупорядочится, даже если вы не наблюдает это сейчас на тестах. Поэтому vertex пока лучше отложить до лучших времён, пока не появится время разобраться как написать на нём гарантированную и упорядоченную обработку. Вообще две новые технологии за раз лучше никогда не внедрять, ибо когда непоние принципов работы одной, начинает интерфирировать с непониманием принципов работы другой, такие франкенштейны начинаю в продакшене вылазить, что никаких бутылок водки нехватит чтобы разобраться. Первым делом стоит перепистать код на работу с голым KafkaConsumer API, без Vertex, SpringKafka или ReactorKafka. Ну и опять же перечитайте ещё раз вот это: vimbaА с чего вы взяли что в топике с включенным компакшеном эти цифры будут сходится? Это же даже ребёнку очевидо, что если среди записанных есть мессаджи с одинаковыми ключами, то компакшен будет сжимать данные согласно настройкам. Тут вам нужно сначала настройки компакшена на топике посмотреть, если их нет на топике то смотрите глобальные настойки на брокере. В жирных топиках компакшен за раз как правило всё не сожмёт, потому что его эффективность ограниченна размером скользящего буфера и числу ключей для дедупликации которое ему разрешили удерживать в оперативной памяти. В общем кидайте сюда все настройки топика, все настройки брокера а также версию брокера, и мы вам всё растолкуем. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2020, 13:07 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
Вспоминается анек. Василий Иваныч и Анка заняты коитусом. Прибегает Петька и кричит - Василий Иваныч! Снимай свою гильзу! В магазин кондомы привезли! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2020, 13:07 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
vimba andreykaT короче, не работает твой код. я понимаю о чем ты говоришь и о каких проблемах. и подозреваю что ты скорее всего прав, вполне возможно вертикс слишком самостоятелен, и тупо гасит через какой то промежуток времени verbosely весь процесс и что то возможно теряется именно "там". Может там а может не там, но в любом случае так код писать нельзя, каша получиться и мессаджи рано или поздно гарантированно потеряются, даже если сейчас они "теряются" не в нём, и обработка нескольких событий связанных причинно следственными связями переупорядочится, даже если вы не наблюдает это сейчас на тестах. Поэтому vertex пока лучше отложить до лучших времён, пока не появится время разобраться как написать на нём гарантированную и упорядоченную обработку. Вообще две новые технологии за раз лучше никогда не внедрять, ибо когда непоние принципов работы одной, начинает интерфирировать с непониманием принципов работы другой, такие франкенштейны начинаю в продакшене вылазить, что никаких бутылок водки нехватит чтобы разобраться. Первым делом стоит перепистать код на работу с голым KafkaConsumer API, без Vertex, SpringKafka или ReactorKafka. Ну и опять же перечитайте ещё раз вот это: vimbaА с чего вы взяли что в топике с включенным компакшеном эти цифры будут сходится? Это же даже ребёнку очевидо, что если среди записанных есть мессаджи с одинаковыми ключами, то компакшен будет сжимать данные согласно настройкам. Тут вам нужно сначала настройки компакшена на топике посмотреть, если их нет на топике то смотрите глобальные настойки на брокере. В жирных топиках компакшен за раз как правило всё не сожмёт, потому что его эффективность ограниченна размером скользящего буфера и числу ключей для дедупликации которое ему разрешили удерживать в оперативной памяти. В общем кидайте сюда все настройки топика, все настройки брокера а также версию брокера, и мы вам всё растолкуем. Я не понимаю почему так сложно понять, что если самый старый мессадж в партиции имеет offset 1_000_000 а самый новый оффсет 1_010_000 то это вовсе не значит что в партиции сейчас 10_000 мессаджей для случая когда на топике включен компакшен(как раз ваш случай), ибо работающий компакшен никогда не меняеет оффсеты у записанных мессаджей, он просто выбрасывает мессаджи с меньшим оффсетом при совпадении ключей, и в зависимости от того успел ли компакшен нанести добро в старых сегментах(компакшен никогд не сжимает активный сегмент), или не успел до момента прочтения мессаджей вы либо будете видеть промежутки в оффсетах обрабатывая мессаджи в цикле, либо не будете. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2020, 13:16 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
я сам вначале в самом в смысле начале спросил может ли такое быть что при компакте или тамбстоуне будут пропускаться оффсеты. мне тут кто то как то пытался убедить что это так не работает. ну вот убедились - работает. именно так. далее, по поводу вертикса. ну я писал компонент на кварке а они в туторах предложили вертикс я и написал на вертиксе. очевидно, буду переписывать если не смогу упорядочить и блокировать. но с другой стороны, вертикс как раз про неблокирующий код. но в данном случае требуется сериализация событий значит поиграюсь и перепишу. другое дело в том что я всё же не понимаю, как тут мессаджи могут потеряться. они не могут в этой схеме потеряться. может ордеринг нарушиться может всё упасть но мессаджи не потеряются. вернее, если это произойдет - оно остановит процесс. другое дело что то что внутри блокинга исполняется то что по факту может быть и не исполняется. а просто скипается или кидает какой нибудь эксепшен молча или вообще не кидается. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2020, 22:50 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
andreykaT может ордеринг нарушиться может всё упасть но мессаджи не потеряются. вернее, если это произойдет - оно остановит процесс. От того что процесс остановится как ошибка возникнет в процессе исплнения таски в отдельном экзекьюторе толку не будет, если ты уже успел закомитить, а комитишь ты как только рассовал все таски в экзекьютор. Обработка некоторых тасок может даже и не быть фактически начата, что толку останавливать консумер если коммит уже произошел? После того как консумер подымится снова, он начнет читать от уже закомиченного , а не от того места где пофэйлился. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2020, 23:49 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
andreykaT я сам вначале в самом в смысле начале спросил может ли такое быть что при компакте или тамбстоуне будут пропускаться оффсеты. мне тут кто то как то пытался убедить что это так не работает. ну вот убедились - работает. именно так. Правильный ответ ещё шире чем у тебя в вопросе. Тут дело не в томбстоунах даже, а в том что мессаджи просто имеют одинаковый ключ. Компактору глубоко наплевать успел кто-то опрочитать рекорд или нет, если ему под руку попались два рекорда с одинаковым ключом, он выкидывает старый. Вам критически важно понять, что является более новое сообщение томбстоуном или нет, ему вообще наплевать, более старый рекорд будет выкинут в любом случае. Так что на топиках без компакшена, консумеру чтобы не потерять мессаджи достаточно читать их быстрее чем истекает TTL на сегменте. А вот чтобы достичь того же самого на топике с включенным компакшеном, консумер должен ещё и обгонять компакшен. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2020, 23:55 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
andreykaT, автордругое дело в том что я всё же не понимаю, как тут мессаджи могут потеряться. они не могут в этой схеме потеряться. Как ты думаешь, может нормальный человек шесть страниц задавать одинаковый вопрос? "Галустян КВН Маша потерялась" ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2020, 03:44 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
vimba andreykaT может ордеринг нарушиться может всё упасть но мессаджи не потеряются. вернее, если это произойдет - оно остановит процесс. От того что процесс остановится как ошибка возникнет в процессе исплнения таски в отдельном экзекьюторе толку не будет, если ты уже успел закомитить, а комитишь ты как только рассовал все таски в экзекьютор. Обработка некоторых тасок может даже и не быть фактически начата, что толку останавливать консумер если коммит уже произошел? После того как консумер подымится снова, он начнет читать от уже закомиченного , а не от того места где пофэйлился. Неее. С нового груп-айди ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2020, 11:28 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
Но ты прав. логику лучше полпилить ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2020, 11:36 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
andreykaT vimba пропущено... От того что процесс остановится как ошибка возникнет в процессе исплнения таски в отдельном экзекьюторе толку не будет, если ты уже успел закомитить, а комитишь ты как только рассовал все таски в экзекьютор. Обработка некоторых тасок может даже и не быть фактически начата, что толку останавливать консумер если коммит уже произошел? После того как консумер подымится снова, он начнет читать от уже закомиченного , а не от того места где пофэйлился. Неее. С нового груп-айди Что с нового group.id? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2020, 12:33 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
vimba andreykaT пропущено... Неее. С нового груп-айди Что с нового group.id? Консамеры стартуют фром бегиннинг с ранжомного групп-айди ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2020, 21:33 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
andreykaT, Вот это поворот. Либо вы там пишите что-то гениальное, либо... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2020, 22:06 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
vimba andreykaT, Вот это поворот. Либо вы там пишите что-то гениальное, либо... я пишу просто компонент-утилиту которая просто один раз считывает данные с топика и кладет их в эластик после этого выключается. либо с успехом либо с фейлом в логах. вроде просто как два пальца. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2020, 22:15 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
andreykaT, Я бы подумал о том чтобы держать постоянно работающий поток, хотя бы из-за того же компакшена. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 00:17 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
andreykaT vimba andreykaT, Вот это поворот. Либо вы там пишите что-то гениальное, либо... я пишу просто компонент-утилиту которая просто один раз считывает данные с топика и кладет их в эластик после этого выключается. либо с успехом либо с фейлом в логах. вроде просто как два пальца. Глупо) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 07:54 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
vimba andreykaT, Я бы подумал о том чтобы держать постоянно работающий поток, хотя бы из-за того же компакшена. меня интересует больше некий снапшот топика. даже если компакт случится ну как минимум, позднее сообщение я получу. вот что меня заботит что может нарушиться ордеринг из-за этих реактивных штучек, о чем ты выше упомянул, и раннее которое скажем не попало под компакт может залететь позже позднего даже в рамках одной партиции. а то что там потом залетают мессаджи - это не столь важно, потому что хранилище обновляется и с других топиков. ну тут либо я выкину вертикс окончательно или перепишу в рх-джава поверх вертикса - там можно хоть по-человечески ордерить правда тоже с блокированиями по-сути. или вообще всё выкину и сделаю по-дедовски на чистом кафка сдк. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 15:37 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
andreykaT, >вот что меня заботит что может нарушиться ордеринг И еще, в 30ый раз про одно и тоже.)) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 16:02 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
Ордеринг это вообще очень дорогое свойство. Гораздо проще идемпотенцию процессинга обеспечить. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 18:40 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
fixxer Ордеринг это вообще очень дорогое свойство. Гораздо проще идемпотенцию процессинга обеспечить. Можно ли сделать репликацию БД идемпотентной? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 18:43 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
fixxer, ТС зациклело на ордеринг. Не лечится. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 18:53 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
mayton fixxer Ордеринг это вообще очень дорогое свойство. Гораздо проще идемпотенцию процессинга обеспечить. Можно ли сделать репликацию БД идемпотентной? Если из чейдж-лога реплицировать, то да. А в общем виде понятия ордеринг в базе нет. Оно появляется, когда мы в какую-то трубу начинаем данные пихать. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 19:41 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
fixxer mayton пропущено... Можно ли сделать репликацию БД идемпотентной? Если из чейдж-лога реплицировать, то да. А в общем виде понятия ордеринг в базе нет. Оно появляется, когда мы в какую-то трубу начинаем данные пихать. Да. Согласен. Но репликация баз - тема популярная. Можно поднять новогодний топик. Прошлый про реплики был неудачен https://www.sql.ru/forum/1321816/tyapnichnyy-cdc-jms Непонятно зачем я его гвоздями приколотил к Java/JMS. Надо было в Программинге . И больше алгоритмизации. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 20:21 |
|
|
start [/forum/topic.php?fid=59&msg=40031341&tid=2120562]: |
0ms |
get settings: |
6ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
28ms |
get topic data: |
2ms |
get forum data: |
1ms |
get page messages: |
457ms |
get tp. blocked users: |
1ms |
others: | 7ms |
total: | 509ms |
0 / 0 |