【问题标题】:Short term Akka deployment on multiple nodes在多个节点上的短期 Akka 部署
【发布时间】:2012-05-22 09:21:00
【问题描述】:

我正在使用 Akka 编写一个分布式研究应用程序,使用一个简单的主节点和多个工作节点拓扑,目的是部署到内部节点集群或企业云中。 (当 Akka 2.1 可用时,我会考虑使用集群支持)

我的问题: 将我的代码(以包含 Akka 微内核的文件夹的形式)部署到每个节点上,启动它,让它做它的事情,然后拆除并根据需要重复的最简单/最好的方法是什么?

  • 每个工作节点的微内核目录和可执行文件都是相同的,并且只有几 MB。 Config 包含他们将连接到的 master 的 IP。
  • 我打算手动启动master。
  • 弹性不是问题,因为这不是关键业务应用程序,而是私有 研究问题。
  • 没有重要数据存储在本地给工作人员。
  • 应用程序完成后,我可能想重新部署一个不同的应用程序,而不需要拆除节点(例如优化代码库)。

更新:发现 Condor 节点支持以全机模式运行的作业。这应该支持将微内核作为作业运行,并且只需要确保工作人员在完成后正确退出。

更新 2: 有人提到 Zookeeper 可能很适合这个。希望有经验的人提供意见。

【问题讨论】:

    标签: cloud cluster-computing akka apache-zookeeper grid-computing


    【解决方案1】:

    这里有一些想法。我没有使用 Akka 的经验,但我知道网格计算和部署。

    1. 使用现有的网格工具,例如 http://www.gridgain.com(具有 GPL 版本)。另外我听说有人用http://www.hazelcast.com/构建网格

    2. 使用内置云,例如 Airframe,http://www.pistoncloud.com/press-releases/piston-cloud-launches-free-openstack-distribution/。我确定肯定还有其他人。

    3. 我相信 Airframe 带有 Cloud Foundry,但您可以直接使用它:https://micro.cloudfoundry.com/ 但不确定该版本如何扩展。

    4. 滚动您自己的系统,安装到一个 VM 映像中,然后将其克隆到您的其他节点上。

    当涉及到你自己的滚动时,你可以这样做,这与我已经开发并且运行良好的东西非常相似。

    • 使用 maven 构建您的应用程序,使用您喜欢的任何库。

    • 将内置二进制文件推送到 Sonatype Nexus。

    • 构建一个自定义启动器,给定模块的 maven 坐标可以运行它。我的 laucher 首先检查本地 maven 存储库中的 jar,如果它们不存在,那么它会从 nexus 下载它们。然后它构造传递依赖树中所有 jar 的类路径。然后它使用新的类路径创建一个新的类加载器,并通过类加载器启动主类。

    • 使用 java-service-wrappe 或类似方法编写一个服务,在启动时通过读取一些 maven 坐标和从配置中读取主类的名称来检查要运行的代码版本。 Config 可以是网络驱动器上的文件、预配置的 URL,甚至是 zookeeper。然后它将它传递给下载并运行代码的启动器。

    • 手动或通过克隆虚拟机将此服务安装到多台机器上。

    • 利润!

    我没有特别提到 Akka,因为您的大部分问题似乎是如何让代码在多个节点上运行。

    自定义路由对我来说效果很好,但是我只有几台服务器使用它,我所有的适当网格计算都是在数据突触中完成的。但我确实想知道我是否要重新开始这些开源 PaaS 中的一个是否适合。

    【讨论】:

    • 感谢您的赏金。你最后做了什么?
    猜你喜欢
    • 1970-01-01
    • 2014-10-24
    • 2019-10-13
    • 2020-06-18
    • 2017-12-09
    • 1970-01-01
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多