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



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

在这种情况下我能做什么?

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

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

问题中描述的流程:

1.GenerateFlowFile
2.Split Text
3.Extract Text

然后将ExtractText处理器的成功关系馈送到RemoteProcessorGroup(以在集群中分配负载(。

然后获取分发的流程文件,将其提供给InvokeHTTP处理器,并在调度选项卡中调度处理器运行多个并发任务。

然后使用PublishKafkaRecord处理器并定义记录读写器模式,更改计划以运行多个并发任务。

最终流程:

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处理器是非常可扩展的,可以给你带来预期的良好性能:(

此外

从NiFi-1.8版本开始,我们的don't需要使用RemoteProcessGroup(分配负载(,因为我们可以配置Connections(关系(来分配负载平衡。

有关NiFi-1.8版本中这些new additions的更多详细信息,请参阅此链接和NiFi-5516链接。

最新更新