Nanite:Ruby 程序的一个自我装配集群

阅读数:268 2008 年 12 月 23 日

话题:RubyErlang云计算DevOps语言 & 开发架构

Nanite(由 Ezra Zygmuntowicz 开发)是 Engine Yard 云计算策略的一个新兵:它是“Ruby 程序的一个自我装配集群”,用以构筑高度可伸缩的 Web 应用的后端(请查看Ezra 的声明)。

Nanite 包含两部分:代理(agents)和映射(mappers)。代理实现了应用的功能并由映射进行管理,而映射是系统的控制节点。代理周期性地向映射报告其状态和(默认情况下)平均负载,因此映射可以将任务分发到负载最小的代理上。请查看Nanite 的 Readme 文件以了解更多的信息和示例。

Nanite 构建在RabbitMQ之上,而后者是用 Erlang 构建的“一个完整且高度可靠的企业消息系统”。根据其博客上的一篇评论所述,它还可以与其他任何兼容于AMQP的消息中间件协同工作。

InfoQ:Ezra,你在 Engine Yard 使用 Nanite 么?

当然,Nanite 用作我们新的服务平台 engine yard 的后端。它在网络拥挤时会自动扩容 EC2 实例,同时它还是暴露给用户的服务的核心部分,因此用户可以将 Nanite 代理作为其应用的一部分而无需额外的工作。

InfoQ:除了 Web 以外,Nanite 还能用在什么地方?

我认为除了 Web 以外 Nanite 还有很多应用场景。无论什么时候,当你需要从 Ruby 中跨越多个服务器来控制多个资源时,Nanite 都是一个很棒的选择。

InfoQ:我们来谈谈 Vertebra 吧——下一代的云计算平台——几个月前提出的,Nanite 和 Vertebra 的关系是什么样的?

Nanite 和 Vertebra 最终将会借助于 rabbitmq/xmpp 桥来协同工作。Nanite 适合在云环境下扩展个人应用,而 Vertebra 则更适合于连接多个异构系统——系统中的每个代理都可以在不同的客户服务器上。
Rabbitmq 的安全模型基于 vhosts,因此同一个 vhost 中的内容之间可以互相通信。这样我们就可以在每个应用空间中都拥有一个 vhost 并使用这种方式来扩展应用。对于用户等待的应用负载来说,Nanite 还是一个高性能的消息。Vertebra 的优势在于联合多台机器同时又保持其彼此的安全。

Nanite 位于 GitHub 上,同时 Vertebra 会在圣诞节前(大约 12 月 15 日)以开源的形式发布。

查看英文原文:Nanite: A Self Assembling Cluster of Ruby Processes