我正在使用简单的主和多工作拓扑与Akka编写分布式研究应用程序,目的是部署到内部节点集群或企业云中。 (当Akka 2.1可用时,我将考虑使用群集支持)
我的问题: 将代码(以包含Akka微内核的文件夹形式)部署到每个节点上的最简单/最好的方法是什么,启动它,让它做它的事情,然后拆除并根据需要重复?
更新:发现Condor节点支持在整机模式下运行的作业。这应该支持将微内核作为一项工作运行,并且只需要确保工作人员在完成后正确退出。
更新2:有人提到Zookeeper可能非常适合这个。希望有经验的人提供意见。
答案 0 :(得分:2)
以下是一些想法。我没有Akka的经验,但我确实知道网格计算和部署。
使用现有的网格工具,例如http://www.gridgain.com(具有GPL版本)。我也听说有人用http://www.hazelcast.com/
使用云端邮箱,例如机身,http://www.pistoncloud.com/press-releases/piston-cloud-launches-free-openstack-distribution/。我确信必须有其他人。
我相信机身附带Cloud Foundry,但您可以直接使用它:https://micro.cloudfoundry.com/但不确定该版本如何扩展。
滚动您自己的系统,安装到一个VM映像中,然后将其克隆到其他节点上。
当谈到你自己的时候,你可以这样做,这与我已经开发并且运作良好的东西非常相似。
使用maven构建应用程序,使用您喜欢的库。
将内置的二进制文件推入Sonatype Nexus。
构建一个自定义启动器,给定模块的maven坐标可以运行它。我的laucher首先检查当地maven repo的罐子,如果它们不存在,那么它从nexus下载它们。然后它构造传递依赖树中所有jar的类路径。然后它使用新的类路径创建一个新的类加载器,并通过类加载器启动主类。
使用java-service-wrappe或类似方法编写服务,在启动时通过从config读取一些maven坐标和主类的名称来检查要运行的代码的版本。 Config可以是网络驱动器上的文件,预配置的URL,甚至是zookeeper。然后将其传递给下载并运行代码的启动器。
将此服务安装到许多计算机上,手动或通过克隆虚拟机。
利润!
我没有特别提到Akka,因为你的大多数问题似乎都是如何让代码在多个节点上运行。
自定义路由对我来说效果很好,但后来我只有几台服务器使用它,所有我正确的网格计算都是在数据突触中完成的。但我确实想知道如果其中一个开源PaaS很适合我是否重新开始。