Apache nifi 在Apache Nifi中,从iot的多个URL接收数据的最佳方式是什么?

Apache nifi 在Apache Nifi中,从iot的多个URL接收数据的最佳方式是什么?,apache-nifi,real-time-data,Apache Nifi,Real Time Data,我想从多个url接收数据。你可以认为,每个url代表一个设备。我可以为每个设备创建从getHttp开始的流。但这种情况对我来说太糟糕了。另一个选项是,我可以创建从generateFlowFile(此处理器中定义的每个url)开始的流,然后拆分,并将此url发送到invokeHttp处理器。但每个url都将按顺序工作。所以,当我向一个url发送请求时,我可能会丢失其他人的数据 在这种情况下我能做什么 编辑: 对于我的用例,首先,我必须从多个url接收数据。然后,我将在应用一些转换后将这些数据发送给

我想从多个url接收数据。你可以认为,每个url代表一个设备。我可以为每个设备创建从getHttp开始的流。但这种情况对我来说太糟糕了。另一个选项是,我可以创建从generateFlowFile(此处理器中定义的每个url)开始的流,然后拆分,并将此url发送到invokeHttp处理器。但每个url都将按顺序工作。所以,当我向一个url发送请求时,我可能会丢失其他人的数据

在这种情况下我能做什么

编辑:
对于我的用例,首先,我必须从多个url接收数据。然后,我将在应用一些转换后将这些数据发送给卡夫卡。但我必须从将近50个或更多的URL获取数据。我需要在nifi集群中以可扩展的方式实时执行此操作。

使用问题中提到的相同流程:

所述流程有问题:

1.GenerateFlowFile
2.Split Text
3.Extract Text
然后将ExtractText processor的成功关系馈送到
RemoteProcessorGroup
(以在集群中分配负载)

然后获取分发的流文件,将其馈送到
调用EHTTP
处理器,并在调度选项卡中调度处理器以运行多个并发任务

然后使用PublishKafkarRecord
处理器并定义记录读取器/写入器架构,更改计划以运行多个并发任务

最终流量:

1.GenerateFlowFile
2.SplitText
3.ExtractText
4.RemoteProcessorGroup (or) ConnectionLoadBalance(Starting NiFi-1.8.0)
5.InvokeHTTP //more than one concurrent task
6.RemoteProcessorGroup (or) ConnectionLoadBalance(Starting NiFi-1.8.0) //optinal 
7.PublishKafkaRecord //more than one concurrent task
尝试使用上述流程,我相信Kafka处理器的可扩展性非常强,可以提供预期的良好性能:)

此外

1.GenerateFlowFile
2.Split Text
3.Extract Text
从NiFi-1.8版本开始,我们
不需要使用
RemoteProcessGroup
(分配负载),因为我们可以配置连接(关系)来分配负载平衡


有关NiFi-1.8版本中新增的
功能的更多详细信息,请参阅和链接。

您的
用例是什么?
它是否只是接收数据并存储到HDFS…等?请用更多详细信息更新您的问题。我已编辑了上面的问题。首先,非常感谢您的回答。现在我开始更好地理解了。如果我再次询问以确保我理解;当我在整个集群上使用多个并发任务运行invokeHttp和PublishKafkarRecord时,我可以从所有URL获得足够快且可伸缩的数据吗?(假设通过关系分配负载)。最后,假设我正在使用Nifi-1.8,RemoteProcessorGroup将被删除。@AdamJ。这完全取决于一次处理的数据量,分配负载不会影响任何性能,相反,它有助于更高效地处理数据,而且我们正在运行多个并发任务。在NiFi-1.8中,我们不必使用
RemoteProcessorGroup
,因为我们可以在关系中分配负载。请使用您的数据进行负载/性能测试,并调整处理器以充分利用NiFi。好的,再次谢谢你。我将创建这个流,然后应用负载/性能测试。此外,我将再次编辑此问题,并在应用测试后共享测试结果。@AdamJ。伟大的我忘了提到在调用EHTTP之后进行负载平衡会很好,同样,在调用EHTTP之后使用连接负载平衡测试性能
,而在调用EHTTP之后不使用连接负载平衡测试性能
,如果性能显著不同,则使用负载平衡。好的,我要试试这个。再次非常感谢你。