首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Akka远程执行元服务器发现

Akka远程执行元服务器发现
EN

Stack Overflow用户
提问于 2011-06-10 19:43:45
回答 3查看 3.6K关注 0票数 11

我想在集群上部署一个用akka制作的远程演员软件。该系统由多个工作节点和一个主节点组成。问题是我不能预先知道集群节点的IP地址(但我知道它们都是同一子网的一部分)。因此,我需要一个很好的方法来发现每个人的IP地址在启动后,以创建每个节点上正确的演员引用。

我正在寻找一个轻量级的解决方案(我只需要它的初始设置)分发在任何自由软件许可证。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-10 22:42:25

不久前,我创建了一个旨在解决您的问题的 (请随意重用代码和/或贡献代码)。

关于它是如何工作的几句话。它为每个参与者注册表(=node)启动一个远程参与者。RegistryActor保存到分布式设置中运行的所有其他注册表的链接。当一个新节点被添加到系统中时,它需要知道至少一个其他节点(ActorRegistry)并通知它。然后,ActorRegistry让所有其他节点知道新的一个(因此,任何RegistryActor都有到所有其他RegistryActor的链接),并启动一个交换到actor的链接的过程-在它结束时,所有actor注册表都有到系统中运行的所有actor(无论是本地的还是远程的)的链接。

有关详细信息,请参阅此。

票数 7
EN

Stack Overflow用户

发布于 2011-06-12 05:25:47

看看jgroups吧。

http://jgroups.org/

它符合你所有的标准--它是轻量级的、开源的、非常成熟、稳定的产品。

您可以根据自己的要求轻松地将其配置为自动组管理和发现-它支持几乎任何网络配置-您可以使用组播、共享文件或单播来发现组成员。

票数 4
EN

Stack Overflow用户

发布于 2011-06-10 20:53:44

除非所有节点都共享一些常识,否则我认为您的解决方案将不得不依赖IP广播。广播被定义为向子网上的所有网络节点发送数据包,因此,如果您的主节点在所有工作节点都在侦听它时这样做,那么您应该能够在事先不知道IP地址的情况下连接所有这些节点。

我还没有用Scala对此进行编码,但这里有一个用java广播消息的相当易读的示例:http://download.oracle.com/javase/tutorial/networking/datagrams/broadcasting.html。使用相同的类将其改编为Scala应该很简单。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6305900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档