gpt4 book ai didi

java - 简单的节点发现方法

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:45:58 24 4
gpt4 key购买 nike

我开始在一个系统上工作,该系统需要发现集群中的节点并向这些节点发送作业以进行处理。我知道有无数的系统可以解决这个问题,但我不清楚每个系统的复杂性以及哪个系统最适合我的特定需求。

我们的要求是应用程序应该能够发送工作请求。每个请求都将指定要处理的多个数据段。集群中的节点应该得到这些作业请求,并弄清楚被请求的数据段是否“方便”。该应用程序将需要跟踪某个节点正在处理哪些段,然后如果有数据段需要强制某些节点处理(所有节点都可以访问所有数据),则可能会发出进一步的请求,但他们应该更愿意处理他们已经缓存的数据段)。

这是一个非常典型的 map/reduce 问题,但我们不想使用标准的 hadoop 解决方案,因为我们试图避免将初步结果写入文件的开销。这更像是一个流问题,我们希望节点对它们读取的数据执行过滤,然后通过网络套接字将其发送到应用程序,该应用程序将合并来自所有节点的结果。

我快速浏览了 akka、apache-spark(流媒体)、storm 和简单的 UPNP,但我不太确定哪一个最适合我的需求。至少对 spark 不利的一件事是它似乎需要在网络上设置 ZooKeeper,这是我们希望能够避免的复杂情况。

是否有任何简单的库可以执行类似于“通过网络多播自动发现节点”的操作,然后允许您简单地来回发送消息以协商哪个节点将处理哪个数据段? Akka 能在这里帮助我吗?如何在集群中添加/发现节点?同样,我们希望将配置开销保持在最低水平,这就是 UPNP/SSDP 看起来不错的原因。

非常感谢任何有关如何使用上述解决方案甚至其他库或解决方案的建议。

最佳答案

您可以使用 Akka 集群:http://doc.akka.io/docs/akka/current/java/cluster-usage.html .但是,它不使用多播,它使用 Gossip 协议(protocol)来处理节点上/下消息。您可以使用集群感知路由器(请参阅 Akka 集群文档和 http://doc.akka.io/docs/akka/current/java/routing.html )将您的消息路由到集群,根据您的需要和“方便”的含义,有几种不同类型的路由器。如果“方便”仅表示哪个 actor 当前空闲,则可以使用 Smallest Mailbox 路由器。如果它与消息的内容有关,您可以使用 Consistent Hashing 路由器。

关于java - 简单的节点发现方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24892962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com