Kafka Streams - несколько объединений и количество потоков в одном экземпляре

У меня есть вариант использования для нескольких объединений по двум темам,

Допустим, у меня есть тема A (2 раздела) и тема B (2 раздела) и запущен один экземпляр приложения KafkaStreams.

У меня есть вариант использования для поиска перерывов, пропуска слева и пропуска справа между двумя темами, поэтому я выполняю следующие 3 операции:

A.join(B)
B.leftJoin(A)
A.leftJoin(B)

Согласно документации, будет создано две задачи (макс. (2,2)) для каждой топологии и всего 6 задач, т. Е.

 1. A.join(B)  - two tasks created - each task is assigned two
    partitions 
 2. B.leftJoin(A) - two tasks created - each task is assigned
    two partitions 
 3. A.leftJoin(B) - two tasks created - each task is
    assigned two partitions

Поскольку я использую один экземпляр, для увеличения масштаба я планирую настроить num.stream.threads = 6, и каждому потоку будет назначена одна задача.

правильно ли мое понимание выше? Пожалуйста, поправьте меня, если я ошибаюсь.

Заранее спасибо.

С уважением, Сатиш


person Sathish    schedule 20.07.2017    source источник


Ответы (1)


Из объединенной документации:

Реализация по умолчанию, предоставляемая Kafka Streams, - это DefaultPartitionGrouper, которая назначает каждой задаче не более одного раздела для каждого из разделов исходной темы; следовательно, сгенерированное количество задач равно наибольшему количеству разделов среди входных тем. [1]

Поэтому, если вы не переопределяете partition.grouper конфигурацию, количество задач должно быть 2.

Ссылки: [1] http://docs.confluent.io/current/streams/developer-guide.html#optional-configuration-parameters.

person Vikas Tikoo    schedule 21.07.2017