MarkLogic версия 9.0-6.1
Мы реализовали два шаблона для пакетного приема.
Шаблон 1: MLCP
Шаблон 2: Informatica (или NiFi) читает NDJSONфайл и выполнение запросов MarkTogic REST API PUT для каждого JSON в файле NDJSON
Наш производственный блок представляет собой кластер из 3 узлов с 72 ядрами.
Наши задания MLCP работают довольно хорошо с количеством потоков по умолчанию, равным4 и максимум у нас есть 3 параллельных задания MLCP, обеспечивающих доступность как минимум 60 ядер для обработки в реальном времени (или почти в реальном времени) в любой момент времени.
Однако я не уверен, как пакетные задания Informatica / NiFi используют ядра. Как и в случае с MLCP, существует ли способ ограничения ядер, используемых заданиями Informatica / NiFi, чтобы обеспечить достаточное количество ядер / потоков, доступных для обработки в реальном времени?
По мере того, как мы добавляем все больше и больше процессов в производство, мы видим, чтоЗначительно увеличилось количество ошибок времени ожидания для вызовов PUT / GET API REST в реальном времени. Эти вызовы, как правило, занимают всего несколько миллисекунд (когда мы запускаем их по отдельности), поэтому я предполагаю, что конкуренция за ресурсы вызывает тайм-ауты.
У нас есть возможность масштабировать узлы в кластере, но эта ситуация заставила меня думать, что MLCP - лучшая конструкция, чем вызовы REST PUT для пакетного приема, поскольку мы лучше контролируем ограничение ядер / потоковиспользуется каждым пакетным процессом, обеспечивая достаточное количество ядер, доступных для обработки в реальном времени. Есть ли способ, которым мы можем контролировать / ограничивать ресурсы, используемые NiFi, если они используются для пакетного приема?
Пожалуйста, предложите. Заранее спасибо!