|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
Я знаю что щас скорее всего полетят тапки но вдруг кто знает. короче, тема: есть компакт-топик. есть 12 партиций. читаем топик сначала. есть партиция икс, читается с оффсета ну скажем тысяча. считаем по порядку 1001, 1002, 1003, 1004, 1005 иии 1205, 1206 и тп скипанули двести мессаджей. что за..? загуглил на эту тему написали что да вот де бывает ребаланс и может скипануть. взял другой топик. там только одна партиция. тоже самое запустил шарманку. ничего не скипает. написал в первый раз клиента на вертиксе. (под капотом у кварка) такой модный благородный реактивный. подумал дело в нем. переписал на обычной голый кафка сдк. та же фигня. стоял автокоммит. убрал сделал коммит вручную - получил в полле 200 мессаджей - заокммитил, получил еще 200 закоммитил еще и так по кругу. не помогло. я понимаю что тут скорее всего что то с кафкой. но кафкаводы отпираются говорят что у них всё ок (они скорее всего даже не пытались читать топик сначала всквозь). собссно вопрос кто нибудь сталкивался с таким поведением когда оффсеты прыгают? это прям не очень тема потому что мне нужна схема где будет как минимум раз сообщение дойдет. оно может дублироваться, приходить вне ордера но не должно исчезнуть. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2020, 18:45 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
andreykaT, Закон message driven систем это - ничего не должно ломаться если сообщение не пришло или оно пришло дублируясь. Это выполняется у тебя надеюсь. Если у тебя от упорядоченности и гарантированной доставки жизнь зависит, то выкинуть message driven. Только синхронно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2020, 19:23 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
кафка гарантирует ордеринг в рамках одного ключа. один ключ всегда в одной и той же партиции. мне этого достаточно. хотя даже это не критично. тем не менее это означает что если одна и та же сущность обновлялась 25 раз то все 25 обновлений лягут в одну партицию и придут в том порядке в каком ушли. тем не менее, речь не про ордеринг. а про то что в рамках одной партиции оффсет не растет на +1 а он может быть +1 +1 +1 +1 +1434 +1 +1 и я хз что с этим делать. данные теряются :) система терпит тот факт что они появятся не сразу. но она не терпит что они не появятся никогда. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2020, 20:27 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
andreykaT не появятся никогда Тесть не на оффсет а на "никогда" в студию ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2020, 20:45 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
PetroNotC Sharp andreykaT не появятся никогда Тесть не на оффсет а на "никогда" в студию ты вменяемый? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2020, 20:49 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
andreykaT, Я знаю чт ты из разряда ленивых. Тесты тут для всех не выложишь никогда. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2020, 21:08 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
andreykaT ты вменяемый? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2020, 21:10 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
вадя, Вы ТС. От вас просят логи. Какая разница кто под ником? Вы флудеры что ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2020, 21:13 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
PetroNotC Sharp вадя, Вы ТС. От вас просят логи. Какая разница кто под ником? Вы флудеры что ли? тебе логи чего именно? как прыгает оффсет? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2020, 21:16 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
andreykaT система терпит тот факт что они появятся не сразу. но она не терпит что они не появятся никогда. Из твоего предложения следует что данные НЕ ПОЯВЛЯЮТСЯ НИКОГДА и система.... Падает? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2020, 21:19 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
Как же я люблю андрейкины топики ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2020, 00:21 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
mayton Как же я люблю андрейкины топики Сказала Кафка, выкидывая 200 мессаджей :-) А если серьезно, то нужно делать пример демонстрирующий баг и заводить issue в ихней JIRA. Только чтобы занятых людей не отвлекать зря, example лучше сначала сюда на верефикацию кинуть, проблема то на 146% заключается в кривых руках, я на это даже могу бутылку вискаря поставить. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 02:57 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
что значит выложить баг? показать что вот тут циферка оффсета 100, а при следующем полле циферка оффсета 1000? никого не смутит что это снимается с моего же приложения? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2020, 20:13 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
Мне как-то бухгалтер проел мозг доказывая что sequence в базах данных должен выдавать строго последовательно значения без пробелов. Ему там надо-было для формирования документов присваивать им номера. По топику. Я еще раз скажу что не спец в кафке. Но мне кажется что генераторы последовательностей в TCP и в прочих инженерно-технических решениях вовсе не гарантируют нам каких-то особых контрактов. Их задача - уникальность а существование белых пятен - это просто оптимизация перформанса. Например поток-продюсер который планирует выдать пачку (batch/branch) сообщений - резервирует диапазон... [ 1000...1199 ] чтоб следующий поток зохватил уже следующую пачку [ 1200...1399 ]. При этом если первый поток падает - обратно пачка уже не возвращается. Она - уже использована как туалетная бумага. И незачем ее искать или по ней плакать. Как-то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2020, 20:41 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
https://github.com/apache/kafka Вот исходный код. https://github.com/apache/kafka/blob/trunk/clients/src/main/java/org/apache/kafka/clients/consumer/KafkaConsumer.java Вот объяснялка от туда строки 110 - 112 автор * The {@link #position(TopicPartition) position} of the consumer gives the offset of the next record that will be given * out. It will be one larger than the highest offset the consumer has seen in that partition. It automatically advances * every time the consumer receives messages in a call to {@link #poll(Duration)}. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2020, 21:02 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
andreykaT что значит выложить баг? показать что вот тут циферка оффсета 100, а при следующем полле циферка оффсета 1000? никого не смутит что это снимается с моего же приложения? Сначала оформить словами хотелку или недостаток. И без слова оффсет. Бизнес аналитик не знает такого слова. Он знает: "сообщение А не пришло в систему Б в течении Х часов. Или..... .... Если не умеешь формулировать, то брось заниматься Messagen Driven system. Не твое это. Либо кодируй чёткое ТЗ от того кто умеет. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2020, 21:09 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
Sergunka https://github.com/apache/kafka Вот исходный код. https://github.com/apache/kafka/blob/trunk/clients/src/main/java/org/apache/kafka/clients/consumer/KafkaConsumer.java Вот объяснялка от туда строки 110 - 112 автор * The {@link #position(TopicPartition) position} of the consumer gives the offset of the next record that will be given * out. It will be one larger than the highest offset the consumer has seen in that partition. It automatically advances * every time the consumer receives messages in a call to {@link #poll(Duration)}. ну... написано +1. а у меня может быть плюс 500 тысяч. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2020, 14:33 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
andreykaT что значит выложить баг? SSCCE Short, Self Contained, Correct (Compilable), Example . Без запускаемого примера который показывает как теряются двести мессаджей, с вами разговаривать не о чем. Потому что ожидать о твас можно всё чего угодно, вплоть до включенного автокомита в комбинации с проглатыванием эксепшенов - тобишь прочитали пачку мессаджей упали при обработке первого же из пачки не дойдя до следующего, а в итоге всю пачку всё равно закомитили. В кафке вам баги нужно искать в самую последнюю очередь, поэтому берите Testcontainers Kafka и выкладывайте проектик на гитхаб демонстрирующий потерю 200 мессаджей при его запуске, тогда и поговорим, заодно и кафку сразу не отходя от кассы пофиксим, если там конечно действительно есть баг, в чем я очень сильно сомневаюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2020, 22:44 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
vimba, >Без запускаемого примера°.... А ТС хоть кол на голову теши. Вот уже 4ый его топик он слушает только себя и у него минимум кода в постах. 19 декабря проснулся. Сделал удивленные глазки и опять заснул. До сдедующего своего топика про оффсеты и бла бла бла. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 07:25 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
Андрей. Я предлагаю завести дефект здесь https://issues.apache.org/jira/projects/KAFKA/issues/KAFKA-10869?filter=allopenissues и если его закроют с резолюцией - не баг тогда это просто особенность конфигурации или софта. Я также в дальнейшем предлагаю не поднимать топики по кафке здесь, в форуме Java т.к. экспертизы не хватает. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 10:50 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
конфиг при старте консамера: автор allow.auto.create.topics = true auto.commit.interval.ms = 5000 auto.offset.reset = earliest bootstrap.servers = [o-----.se:31092] check.crcs = true client.dns.lookup = default client.id = client.rack = connections.max.idle.ms = 540000 default.api.timeout.ms = 60000 enable.auto.commit = false exclude.internal.topics = true fetch.max.bytes = 52428800 fetch.max.wait.ms = 500 fetch.min.bytes = 1 group.id = ---i-group-4ceed390-2441-4e7f-b1d0-19ae4eb80a31asdfg group.instance.id = null heartbeat.interval.ms = 3000 interceptor.classes = [] internal.leave.group.on.close = true isolation.level = read_committed key.deserializer = class org.apache.kafka.common.serialization.StringDeserializer max.partition.fetch.bytes = 1048576 max.poll.interval.ms = 300000 max.poll.records = 400 metadata.max.age.ms = 300000 metric.reporters = [] metrics.num.samples = 2 metrics.recording.level = INFO metrics.sample.window.ms = 30000 partition.assignment.strategy = [class org.apache.kafka.clients.consumer.RangeAssignor] receive.buffer.bytes = 65536 reconnect.backoff.max.ms = 1000 reconnect.backoff.ms = 50 request.timeout.ms = 30000 retry.backoff.ms = 100 sasl.client.callback.handler.class = null sasl.jaas.config = null sasl.kerberos.kinit.cmd = /usr/bin/kinit sasl.kerberos.min.time.before.relogin = 60000 sasl.kerberos.service.name = null sasl.kerberos.ticket.renew.jitter = 0.05 sasl.kerberos.ticket.renew.window.factor = 0.8 sasl.login.callback.handler.class = null sasl.login.class = null sasl.login.refresh.buffer.seconds = 300 sasl.login.refresh.min.period.seconds = 60 sasl.login.refresh.window.factor = 0.8 sasl.login.refresh.window.jitter = 0.05 sasl.mechanism = GSSAPI security.protocol = PLAINTEXT security.providers = null send.buffer.bytes = 131072 session.timeout.ms = 10000 ssl.cipher.suites = null ssl.enabled.protocols = [TLSv1.2] ssl.endpoint.identification.algorithm = https ssl.key.password = null ssl.keymanager.algorithm = SunX509 ssl.keystore.location = null ssl.keystore.password = null ssl.keystore.type = JKS ssl.protocol = TLSv1.2 ssl.provider = null ssl.secure.random.implementation = null ssl.trustmanager.algorithm = PKIX ssl.truststore.location = null ssl.truststore.password = null ssl.truststore.type = JKS value.deserializer = class com.-----MessageDeserializer ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 13:58 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
andreykaT конфиг при старте консамера: автор allow.auto.create.topics = true auto.commit.interval.ms = 5000 auto.offset.reset = earliest bootstrap.servers = [o-----.se:31092] check.crcs = true client.dns.lookup = default client.id = client.rack = connections.max.idle.ms = 540000 default.api.timeout.ms = 60000 enable.auto.commit = false exclude.internal.topics = true fetch.max.bytes = 52428800 fetch.max.wait.ms = 500 fetch.min.bytes = 1 group.id = ---i-group-4ceed390-2441-4e7f-b1d0-19ae4eb80a31asdfg group.instance.id = null heartbeat.interval.ms = 3000 interceptor.classes = [] internal.leave.group.on.close = true isolation.level = read_committed key.deserializer = class org.apache.kafka.common.serialization.StringDeserializer max.partition.fetch.bytes = 1048576 max.poll.interval.ms = 300000 max.poll.records = 400 metadata.max.age.ms = 300000 metric.reporters = [] metrics.num.samples = 2 metrics.recording.level = INFO metrics.sample.window.ms = 30000 partition.assignment.strategy = [class org.apache.kafka.clients.consumer.RangeAssignor] receive.buffer.bytes = 65536 reconnect.backoff.max.ms = 1000 reconnect.backoff.ms = 50 request.timeout.ms = 30000 retry.backoff.ms = 100 sasl.client.callback.handler.class = null sasl.jaas.config = null sasl.kerberos.kinit.cmd = /usr/bin/kinit sasl.kerberos.min.time.before.relogin = 60000 sasl.kerberos.service.name = null sasl.kerberos.ticket.renew.jitter = 0.05 sasl.kerberos.ticket.renew.window.factor = 0.8 sasl.login.callback.handler.class = null sasl.login.class = null sasl.login.refresh.buffer.seconds = 300 sasl.login.refresh.min.period.seconds = 60 sasl.login.refresh.window.factor = 0.8 sasl.login.refresh.window.jitter = 0.05 sasl.mechanism = GSSAPI security.protocol = PLAINTEXT security.providers = null send.buffer.bytes = 131072 session.timeout.ms = 10000 ssl.cipher.suites = null ssl.enabled.protocols = [TLSv1.2] ssl.endpoint.identification.algorithm = https ssl.key.password = null ssl.keymanager.algorithm = SunX509 ssl.keystore.location = null ssl.keystore.password = null ssl.keystore.type = JKS ssl.protocol = TLSv1.2 ssl.provider = null ssl.secure.random.implementation = null ssl.trustmanager.algorithm = PKIX ssl.truststore.location = null ssl.truststore.password = null ssl.truststore.type = JKS value.deserializer = class com.-----MessageDeserializer Это к чему? В соседнем топике не ты? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 14:13 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
mayton Андрей. Я предлагаю завести дефект здесь https://issues.apache.org/jira/projects/KAFKA/issues/KAFKA-10869?filter=allopenissues и если его закроют с резолюцией - не баг тогда это просто особенность конфигурации или софта. Я также в дальнейшем предлагаю не поднимать топики по кафке здесь, в форуме Java т.к. экспертизы не хватает. я в рамках этого форума задавал этот вопрос в других топиках там тоже никто не знает ничего. хотя проблему в интернете загуглить можно. вот решения - нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 15:50 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
vimba andreykaT что значит выложить баг? SSCCE Short, Self Contained, Correct (Compilable), Example . Без запускаемого примера который показывает как теряются двести мессаджей, с вами разговаривать не о чем. Потому что ожидать о твас можно всё чего угодно, вплоть до включенного автокомита в комбинации с проглатыванием эксепшенов - тобишь прочитали пачку мессаджей упали при обработке первого же из пачки не дойдя до следующего, а в итоге всю пачку всё равно закомитили. В кафке вам баги нужно искать в самую последнюю очередь, поэтому берите Testcontainers Kafka и выкладывайте проектик на гитхаб демонстрирующий потерю 200 мессаджей при его запуске, тогда и поговорим, заодно и кафку сразу не отходя от кассы пофиксим, если там конечно действительно есть баг, в чем я очень сильно сомневаюсь. так я не говорю что кафка глючит или код глючит. я говорю что оффсет меняется нелинейно. МОЖЕТ быть такое что если это компакт-топик и если продьссер послал тампбстоун то эти мессаджи находящиеся под оффсетами х, х+1, х+2 и т.п. затираются и потом когда консамер по ним бежит он их скипает? или у всех мессаджей по офсетам смещение идет сразу? мне кажется это накладно и проще так как я выше написал? ну типа партиция А. там мессаджи 1,2,3,4,5,6,7,8,9,10. консамер шлет по айдишкам мессаджей которые лежат в оффсетах 4,5,6 три тамбстона. получается 1,2,3,7,8,9,10 -- и их я и получаю. такое возможно? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 15:52 |
|
не совсем джава но вдруг. кафка.
|
|||
---|---|---|---|
#18+
andreykaT mayton Андрей. Я предлагаю завести дефект здесь https://issues.apache.org/jira/projects/KAFKA/issues/KAFKA-10869?filter=allopenissues и если его закроют с резолюцией - не баг тогда это просто особенность конфигурации или софта. Я также в дальнейшем предлагаю не поднимать топики по кафке здесь, в форуме Java т.к. экспертизы не хватает. я в рамках этого форума задавал этот вопрос в других топиках там тоже никто не знает ничего. хотя проблему в интернете загуглить можно. вот решения - нет. Ему 5 человек - Приведи демку. Он 20 раз - "я везде задавал этот вопрос...")))) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 16:14 |
|
|
start [/forum/topic.php?fid=59&msg=40027516&tid=2120562]: |
0ms |
get settings: |
16ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
43ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
502ms |
get tp. blocked users: |
0ms |
others: | 287ms |
total: | 860ms |
0 / 0 |