群集方案中的流文件如何跨群集节点进行负载平衡/分布?例如,如果我有一个我指定为隔离的GetFile处理器,来自该处理器的流文件如何在集群节点上分布?是否需要添加其他工作/处理器?
在今天的Apache NiFi中,跨群集的负载平衡问题有两个主要答案.首先,您必须首先考虑数据如何到达集群.其次,一旦它在集群中,你需要重新平衡.
要将数据导入群集,请务必选择本身可扩展的协议.提供排队语义的协议对此有利,而不提供排队语义的协议是有问题的.作为具有排队语义的示例,可以考虑使用JMS队列或Kafka或某些HTTP API.这些很棒,因为一个或多个客户端可以以队列方式从中拉出它们,从而分散负载.不提供此类行为的协议示例将下注GetFile或GetSFTP等.这些都是有问题的,因为客户端必须共享关于他们看到哪些数据的状态.为了解决这些协议,我们已经转移到"ListSFTP"和"FetchSFTP"模型,其中ListSFTP发生在集群中的一个节点(主节点)上,然后它使用NiFi的站点到站点功能来加载平衡到然后,每个节点获得其工作份额,并使FetchSFTP实际提取数据.现在也为HDFS提供相同的模式.
在描述该模式时,我还提到了站点到站点.这就是两个nifi集群可以共享数据的方式,这对于站点间和Instra-Site分发需求非常有用.它也适用于在同一群集中传播负载.为此,您只需将数据发送到同一个集群,然后NiFi负责负载平衡和故障转移以及新节点和已删除节点的检测.
所以有很多选择.那说我们可以做得更多,将来我们计划为你提供一种连接方式,表明它应该是自动负载平衡的,然后它会在幕后做我所描述的.
谢谢乔
归档时间: |
|
查看次数: |
845 次 |
最近记录: |