我有一个包含 3 个节点的 nifi 集群。我在流程中使用 invokeHTTP 处理器。基本上,有一个 post 端点每天为我提供 1 - 2GB JSON 数据,我最终将其保存在 POSTGRES 中。该流程工作正常,但我不确定我是否有效地使用了整个三个节点的集群。
以下是我测试流程的两个场景,在这些场景中,我只需将 invokeHTTP 处理器的调度选项卡中存在的“执行”模式从“所有节点”更改为“主节点”
1- 在“所有节点”执行模式下,我看到 3 个请求从 invokeHTTP 传递到下一个处理器。因此,我看到的不仅仅是 2GB 的 json 响应,而是传递到下一个处理器的 6GB 响应,这意味着所有 3 个节点都在做同样的事情,给集群和数据库带来不必要的负载。
2- 使用执行模式“主节点”,我看到 1 个请求从 invokeHTTP 传递到下一个处理器。但我认为在这种情况下,只有一个节点正在使用,其他 2 个节点什么也不做,这不是集群的正确使用。
使用整个集群的正确方法是什么?
一般来说,NiFi 不会自动在节点之间移动数据,除非您设置数据流来这样做。在您的情况下,您只希望 InvokeHttp 在一个节点上执行,因此应仅将其设置为主节点。
之后,这取决于响应是否可以分解为单独的部分。如果 2GB JSON 可以分割成更小的流文件,那么您可以使用负载平衡连接将较小的部分分发到集群的其他节点,但如果不能,那么您必须在仅主节点。
https://blogs.apache.org/nifi/entry/load-balancing-across-the-cluster
| 归档时间: |
|
| 查看次数: |
1978 次 |
| 最近记录: |