在将erlang项目扩展到多个节点时,是否有任何开源项目或教程是最佳实践的示例?
例如,我想研究一个项目,我在一台机器上启动服务器,我可以通过简单地连接更多节点并使用net_adm:ping来连接其他机器来扩展Web应用程序。尽可能接近。我知道配员erlang书会稍微探讨一下这个话题。
答案 0 :(得分:4)
当谈到可扩展性时,有很多方法可以实现它,而Erlang / OTP只是提供了一组通用的工具和机制来简化它们,你可以简单地让你的Erlang运行时分布式节点,可以向其他节点的进程发送消息或调用它们的函数。
Erlang提供的机制如下:
使用Erlang / OTP工具和机制使其产品可扩展的着名项目包括Riak,RabbitMQ,Ejabberd,CouchDB和其他一些项目。让我们谈谈Riak和RabbitMQ。
Riak是一个高度可用的NoSQL数据库是基于Amazon Dynamo Paper实现的,this one是环状拓扑上的节点集群。 分区容忍,可用和最终一致的节点同时使用复制和分区风格,它需要大量的节点间通信。 Riak通过其八卦协议使用Erlang分发机制进行大多数节点间通信。 Riak使用Erlang Port Mapper Daemon将节点标识符解析为给定计算机上的TCP端口。
RabbitMQ是一个消息代理,用于实现消息的可靠性并扩展负载和吞吐量使用复制。这样,队列可以选择跨多个节点进行镜像。每个镜像队列由一个主服务器和一个或多个从服务器组成。 RabbitMQ使用Erlang / OTP提供的分发工具和机制,例如它将消息存储在Mnesia上并使用其功能来复制数据。
如果您正在寻找一个如何使用基本Erlang分发机制的简单教程,我建议使用{{3}}这是两个节点之间的乒乓。