Кафка потоки: поток потоков против магазина - PullRequest
0 голосов
/ 06 июня 2018

Допустим, у нас есть экземпляр с конфигурацией, как указано ниже, и состояния, поддерживаемые в хранилище.

тема - 1
разделы - 6
num.stream.threads - 6

Toplogy
источник - 1
процессоры низкого уровня - 3 (по одному процессору для ежедневной, ежемесячной и годовой агрегации)
приемник - 3

  • Какмного параллельных задач возможно с вышеупомянутыми топологическими и тематическими разделами?
  • В случае, если для ежедневного процессора назначены 2 параллельные задачи, и если пунктуация запланирована для запуска каждые 30 минут, и впереопределение, если мы перенаправим все хранилище в приемник 1, будет ли хранилище значения ключа дважды отправлено в приемник, поскольку 2 параллельные задачи совместно используют одно и то же хранилище ИЛИ каждая задача будет иметь свое собственное хранилище и будет публиковать только данные, соответствующиеразделы, которые им назначены и которые сохраняются в соответствующем хранилище?

    KeyValueIterator<String, House> keyValueIterator = houseStore.all();
    while (keyValueIterator.hasNext()) {
        KeyValue<String, House> next = keyValueIterator.next();
        context.forward(next.key, next.value);
    }
    keyValueIterator.close();
    
  • Сколько будет задач, если мы вместо этого будем использовать KTable (по одному для каждой ежедневной, ежемесячной и годовой агрегации) DSL высокого уровня?Могут ли две параллельные задачи обновлять один и тот же KTable (скажем, ежедневно)?

1 Ответ

0 голосов
/ 06 июня 2018

Kafka Streams создаст 6 задач, потому что в исходной теме 6 разделов.Состояние будет разделено на 6 осколков, по одному осколку для каждой задачи.Таким образом, локальное хранилище в задаче является эксклюзивным для задачи и содержит только данные соответствующего шарда.Если вы сканируете весь магазин по каждой задаче, вы не получите дубликаты данных в выходных темах, поскольку в каждом из них есть разные данные.

...