Что является разумным значением для StreamsConfig.COMMIT_INTERVAL_MS_CONFIG для потоков Kafka - PullRequest
0 голосов
/ 15 февраля 2019

Я искал несколько смежных примеров для потоков Кафки, различные значения для значения конфигурации 'StreamsConfig.COMMIT_INTERVAL_MS_CONFIG' немного смутили меня.

Например, в примере с микро сервисом

config.put(StreamsConfig.COMMIT_INTERVAL_MS_CONFIG, 1); //commit as fast as possible

https://github.com/confluentinc/kafka-streams-examples/blob/5.1.0-post/src/main/java/io/confluent/examples/streams/microservices/util/MicroserviceUtils.java

Другой,

// Records should be flushed every 10 seconds. This is less than the 
default
// in order to keep this example interactive.
streamsConfiguration.put(StreamsConfig.COMMIT_INTERVAL_MS_CONFIG, 10 * 
1000);

https://github.com/confluentinc/kafka-streams-examples/blob/5.1.0-post/src/main/java/io/confluent/examples/streams/WordCountLambdaExample.java

Другой,

// Set the commit interval to 500ms so that any changes are flushed 
frequently and the top five
// charts are updated with low latency.
streamsConfiguration.put(StreamsConfig.COMMIT_INTERVAL_MS_CONFIG, 
 500);

https://github.com/confluentinc/kafka-streams-examples/blob/5.1.0-post/src/main/java/io/confluent/examples/streams/interactivequeries/kafkamusic/KafkaMusicExample.java

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

Thx дляответы ..

1 Ответ

0 голосов
/ 15 февраля 2019

Ну, это зависит от того, как часто вы хотите зафиксировать свои записи.На самом деле это относится к Record Caching в памяти:

https://kafka.apache.org/21/documentation/streams/developer-guide/memory-mgmt.html#record-caches-in-the-dsl

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

Также имейте в виду, что на кэширование записей влияют следующие две конфигурации:

commit.interval.ms и cache.max.byte.buffering

Семантика кэширования заключается в том, что данные сбрасываются в хранилище состояний и пересылаются на следующий узел процессора в нисходящем направлении всякий раз, когда самый ранний из commit.interval.ms или cache.max.bytes.buffering (давление в кэше)) хиты.

...