@gstackoverflow да, в соответствии с исходным кодом клиентов Kafka. Я знаю, это звучит глупо, но в целом и с другой точки зрения, чего бы вы хотели достичь? В критически важных системах лучше выполнять фиксацию смещения вручную, если вы уверены, что сообщение обработано, в других случаях - вы можете предпочесть использование менее частой фиксации смещения для ускорения процесса. Однако смещение коммитов не является тривиальным, так как это потребует zookeeper и т. Д

аюэтот:

Автоматическая фиксация Самый простой способ зафиксировать смещения - позволить потребителю сделать это за вас. Если вы настроите enable.auto.commit = true, то каждые пять секунд потребитель будет фиксировать наибольшее смещение, полученное вашим клиентом от poll (). Пятисекундный интервал является значением по умолчанию и регулируется настройкой auto.commit.interval.ms. Как и все остальное в потребителе, автоматические коммиты управляются циклом опроса. Всякий раз, когда вы опрашиваете, потребитель проверяет, настало ли время для фиксации, и если это так, он фиксирует смещения, которые он возвратил в последнем опросе.

Может быть проблема в том, что мой английский не очень хорош, но я не совсем понял это описание.

Допустим, я использую автоматическую фиксацию с интервалом по умолчанию - 5 секунд, а опрос происходит каждые 7 секунд. В этом случае коммит будет происходить каждые 5 секунд или каждые 7 секунд?

Можете ли вы уточнить поведение, если опрос будет проводиться каждые 3 секунды? Произойдет ли фиксация каждые 5 секунд или каждые 6 секунд?
я прочиталэтот:

Автоматическая фиксация: вы можете установить для auto.commit значение true и установить для свойства auto.commit.interval.ms значение в миллисекундах. Как только вы включите это, потребитель Kafka передаст смещение последнего сообщения, полученного в ответ на его запрос poll (). Вызов poll () выполняется в фоновом режиме в наборе auto.commit.interval.ms.

И это противоречит ответу.

Можете ли вы объяснить это подробно.

скажем, у меня есть такая диаграмма:

0 сек - опрос
4 сек - опрос
8 сек - опрос

Когда смещение будет совершено и когда какой?

 AKSW03 окт. 2017 г., 16:28
"проводник", да ...

Ответы на вопрос(2)

Решение Вопроса

т, что истекшее время превышает настроенное время. Если это так, смещение фиксируется.

Если интервал фиксации составляет 5 секунд, а опрос происходит через 7 секунд, то фиксация произойдет только через 7 секунд.

 gstackoverflow03 окт. 2017 г., 16:58
а второй случай?
 Liju John03 окт. 2017 г., 17:07
второй случай будет следовать той же логике, для первого опроса он не будет фиксироваться как 3 <5, но при следующем опросе он будет фиксироваться как 6> 5, а после фиксации будет сброшен счетчик, и тот же шаблон будет следовать
 gstackoverflow03 окт. 2017 г., 17:09
Но как провести последний опрос в этом случае? Должен ли я сделать это вручную?
 Liju John03 окт. 2017 г., 19:53
при закрытии потребителя и включении автоматической фиксации смещение будет зафиксировано до закрытия потребителя

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

https://github.com/apache/kafka/blob/10cd98cc894b88c5d1e24fc54c66361ad9914df2/clients/src/main/java/org/apache/kafka/clients/consumer/internals/ConsumerCoordinator.java#L625

И одно из мест в опросе, которые выполняют вызов для храненияhttps://github.com/apache/kafka/blob/10cd98cc894b88c5d1e24fc54c66361ad9914df2/clients/src/main/java/org/apache/kafka/clients/consumer/internals/ConsumerCoordinator.java#L279

При этом, например, опрос выполняется каждые 7 секунд, а autocommit устанавливается на 5:

0 - опрос, + установить срок до 5-й секунды

7 - опрос + фиксация из-за крайнего срока, обновить крайний срок до 7 + 5 = 12

14 - опрос + фиксация из-за крайнего срока, обновить крайний срок до 12 + 5 = 17

Однако, если опрос установлен каждые 3 секунды, а автокоммит установлен на 5:

0 - опрос, + установить срок до 5-й секунды

3 - опрос, без коммита

6 - опрос + фиксация из-за крайнего срока, обновите крайний срок до 6 + 5 = 11

 zubrabubra19 окт. 2017 г., 21:57
@gstackoverflow да, в соответствии с исходным кодом клиентов Kafka. Я знаю, это звучит глупо, но в целом и с другой точки зрения, чего бы вы хотели достичь? В критически важных системах лучше выполнять фиксацию смещения вручную, если вы уверены, что сообщение обработано, в других случаях - вы можете предпочесть использование менее частой фиксации смещения для ускорения процесса. Однако смещение коммитов не является тривиальным, так как это потребует zookeeper и т. Д
 gstackoverflow19 окт. 2017 г., 18:26
Первый срок происходит только на 6-й секунде?

Ваш ответ на вопрос