Apache nifi Apache NiFi通过远程进程组的不规则数据流

Apache nifi Apache NiFi通过远程进程组的不规则数据流,apache-nifi,Apache Nifi,我正在评估ApacheNIFI在项目中的使用情况。我有四个NiFi v1.1.2的实例在Ubuntu14系统的云中运行。其中三个实例充当远程进程组(R1,R2&R3),其余实例(M1)用于管理RPG之间的流。 M1生成一个流文件,通过由三个RPG组成的管道传递流文件,并在末尾记录流文件。 每个RPG只是将R{id}附加到FlowFile中的ProcessedBy属性,这样就可以很容易地看到数据处理的顺序 我的问题是订单没有100%按预期完成。我使用了两条管道(P1和P2),分别按照R1->R2-

我正在评估ApacheNIFI在项目中的使用情况。我有四个NiFi v1.1.2的实例在Ubuntu14系统的云中运行。其中三个实例充当远程进程组(
R1
R2
&
R3
),其余实例(
M1
)用于管理RPG之间的流。
M1
生成一个流文件,通过由三个RPG组成的管道传递流文件,并在末尾记录流文件。 每个RPG只是将
R{id}
附加到FlowFile中的ProcessedBy属性,这样就可以很容易地看到数据处理的顺序

我的问题是订单没有100%按预期完成。我使用了两条管道(
P1
P2
),分别按照
R1->R2->R3
R2->R1->R3
的顺序遍历RPG。 我所看到的是,
P1
中的流文件大约有50%的时间不是由
R2
处理的,而在
P2
中,它实际上会反转方向,由
R2
处理两次,因此流顺序变为
R2->R1->R2->R3

编辑:


这是我在
M1

中的流程图,我不相信远程进程组的行为符合您所期望的“函数语义”。奇怪的流文件流量模式正在发生,因为源于流左侧的流文件从右侧的RPG输出中出现(反之亦然),但这对于RPG输出端口来说是正确的行为

从一个输入端口向远程流发送流文件并不保证它将通过同一RPG图节点上的输出端口“返回”。远程输出端口的多个侦听器将各自接收一部分输出。可视化地将RPG输入与其输出连接起来是典型的、推荐的,并且可以说是组织流程的最不言自明的方式。但这不是必须的

您可以在远程NIFI上创建不同的命名端口,以提供更多的远程输入/输出选项

我仅使用两个NiFi创建了一个样本流,其中node1.NiFi向node2.NiFi上的远程进程组发送数据,并从中接收数据。 我组织这个流程是为了强调RPG输入端口和输出端口之间潜在的断开关系


三个RPG图形节点都引用node2.nifi上的相同RPG,但输入和输出是分开的。输出在两个位置接收,这导致了略微不均匀的分布

你能分享一个流的图像吗?如何区分P1和P2的流量?您是否查看了示例流文件中的源事件以查看它们的路径?@James to隔离
P1
&
P2
的流量,我要么运行一个,要么运行另一个。我正在查看数据来源事件,但它实际上没有给我任何关于原因的信息。我可以看到流文件在管道中移动的路径,但我看不到导致错误流的原因。感谢@James,我没有意识到输入/输出是以这种方式工作的,我看到的结果现在完全有意义了。我试图实现的是一个RPG,可以重复使用,无需修改,也就是说,它可以同时在多个管道中使用,并且每次都会将处理后的数据返回到发送管道。是否有一种“最佳实践”方法来实现这一点?一种方法是在客户端使用InvokeHttp,在服务器上使用HandleHttpRequest…HandleHttpResponse的HTTP服务。这将最适合调用和响应模式。使用RPG,我认为您必须添加自己的逻辑来跟踪流文件的来源,并将其发送回原始服务器。如果数量很小,您可以使用多个输入和输出端口来明确哪个流量是哪个流量。