nifi如何在不同节点之间分配数据?

时间:2019-10-02 10:12:12

标签: apache-nifi

我有一个带有3个节点的nifi集群。我在流中使用invokeHTTP处理器。基本上,有一个发布端点,每天为我提供1-2 GB的JSON数据,最终我将它们保存在POSTGRES中。 Flow工作正常,但是我不确定我是否有效地使用了三个节点的整个群集。

我在两种情况下测试了流程,在这些情况下,我只是将invokeHTTP处理器的调度选项卡中显示的“执行”模式从“所有节点”更改为“主要节点”

1-在执行模式“所有节点”下,我看到3个请求从invokeHTTP传递到下一个处理器。因此,我看到的不仅仅是6gb的json响应,而是看到6gb的响应传递到了下一个处理器,这意味着所有3个节点都在做相同的事情,这给群集和DB带来了不必要的负载。

2-在执行模式“主节点”下,我看到1个请求从invokeHTTP传递到下一个处理器。但是我认为在这种情况下,仅使用了一个节点,而其他2个节点却什么也不做,这不是对集群的正确使用。

使用整个集群的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

通常,除非您设置数据流,否则NiFi不会自动在节点之间移动数据。在您的情况下,您只希望InvokeHttp在一个节点上执行,因此应仅将其设置为主节点。

此后,取决于是否可以将响应分为几部分。如果可以将2GB JSON拆分成较小的流文件,则可以使用负载平衡连接将较小的块分发到集群的其他节点,但是如果不能,则必须在仅限主节点。

https://blogs.apache.org/nifi/entry/load-balancing-across-the-cluster