Предупреждение для новичков в Apache NiFi!
Любопытно понять (и прочитать соответствующий материал) аспекты масштабируемости пайплайна Apache NiFi в кластерной конфигурации.
Представьте, что есть кластер из 2 узлов Node 1 и Node 2.
Простой вариант использования в качестве примера:
Если конвейер запускается на узле 1 в кластере, означает ли это, что все 10 пакетов выполняются только на узле 1?
Есть ли в NiFi какой-нибудь рабочий дистрибутив «из коробки» для каждого уровня процессора? По строкам выполняется 5 пакетов для вызовов REST API на узел.
Распространена ли в природе встроенная очередь NiFi?
Или рекомендуемый способ масштабирования на уровне процессора — опубликовать выходные данные предыдущих процессоров в промежуточном программном обеспечении для обмена сообщениями (например, Kafka), а затем заставить последующий процессор NiFi использовать его?
Каков рекомендуемый способ масштабирования на каждом уровне процессора в NiFi?
каждая очередь имеет параметр стратегии балансировки нагрузки со следующими параметрами:
Do not load balance
: Не балансируйте нагрузку FlowFiles между узлами в кластере. Это значение по умолчанию.Partition by attribute
: определяет, на какой узел отправить данный FlowFile, на основе значения указанного пользователем атрибута FlowFile.Round robin
: FlowFiles будут распределяться по узлам в кластере по круговой схеме.Single node
: все FlowFiles будут отправлены на один узел в кластере.Подробности в документации:
https://nifi.apache.org/docs/nifi-docs/html/user-guide.html#Load_Balancing
собственная реализация на основе файлов, потому что потоковые файлы могут быть большими/массивными
Спасибо за ответ. Это было полезно. Могу ли я узнать, каковы основы очередей NiFi? Используют ли они существующий брокер сообщений как часть структуры? Или он использует собственные распределенные примитивы очереди?