NiFi如何将流量数据存入内存或磁盘

NiFi how to store flow data in memory or disks

当下一个处理器无法接收或处理任何数据时,有人可以详细解释像 GetFile 或 QueryDatabaseTable 这样的 NiFi 处理器如何存储行吗?当大小超过某个阈值时,数据是否会通过管道传输到内存中然后交换到磁盘?它可能会存在 运行 内存不足或丢失数据的风险吗?

我建议阅读 Apache NiFi 文档,特别是 "Apache NiFi in Depth" 文档以了解如何通过 NiFi 存储和传递数据:

https://nifi.apache.org/docs/nifi-docs/html/nifi-in-depth.html

简短的回答是数据总是写入 NiFi 内部存储库中的磁盘。流文件具有持久保存到流文件存储库的属性和持久保存到内容存储库的内容。除非处理器选择将整个内容读入内存以执行某些处理,否则内容不会保存在内存中。

当流文件在队列中时,none 的内容保存在内存中,只有知道内容在磁盘上的位置的流文件对象。当队列达到一定大小时,这些流文件对象将被交换到磁盘,这允许您拥有一个包含数百万个流文件的队列,而无需实际拥有一百万个流文件对象。

还有一个背压的概念,可以根据流文件的数量或队列中所有流文件的大小来控制队列的最大大小。