MarkLogic-高效批处理的设计建议

问题描述 投票:0回答:1

MarkLogic版本9.0-6.1

我们已经实现了两种用于批量摄取的模式。

模式1:MLCP

模式2:Informatica(或NiFi)读取NDJSON文件并为NDJSON文件中的每个JSON进行MarkLogic REST API PUT调用

我们的生产盒是一个具有72个核心的3节点集群。

我们的MLCP作业在默认线程数为4的情况下运行得很好,并且最多有3个并行运行的MLCP作业,确保在任何时间点至少有60个内核可用于实时(或近实时)处理。

但是,我不确定Informatica / NiFi批处理作业如何用尽内核。与MLCP一样,是否有一种方法可以限制Informatica / NiFi作业使用的核心,以确保有足够的核心/线程可用于实时处理?

随着我们向生产中添加越来越多的流程,我们发现实时REST API PUT / GET调用的超时错误大大增加。这些调用通常只需要几毫秒的时间(当我们单独运行它们时),因此我猜想对资源的争用会导致超时。

我们可以选择扩展集群中的节点,但是这种情况使我认为,MLCP是一种比REST PUT调用批量提取更好的设计,因为我们可以更好地控制每个批处理所使用的内核/线程。流程,确保有足够的内核可用于实时处理。如果用于批量摄取,有没有办法可以控制/限制NiFi使用的资源?

请提出建议。预先感谢!

marklogic marklogic-9 marklogic-dhf
1个回答
0
投票
但是,NiFi具有本机MarkLogic连接器,该连接器使用Java DM SDK而不是REST API调用来提取数据。我们可以看到,这在性能和可伸缩性方面都更加有效。

适用于Informatica客户的解决方案似乎正在为MarkLogic提供本机连接器(就像MongoDB,SalesForce等一样。

© www.soinside.com 2019 - 2024. All rights reserved.