erlang - Erlang集群

标签 erlang cloud cluster-computing distributed-computing

我正在尝试使用Erlang作为将其全部粘合在一起的胶水来实现集群。我喜欢创建一个完全连接的节点图的想法,但是在网上阅读不同的文章时,这似乎无法很好地扩展(最多50至100个节点)。 OTP的开发人员是否有意施加此限制?我确实知道您可以将节点设置为仅具有显式连接以及具有隐藏的节点等。但是,似乎默认的即用即用设置不是很可伸缩。

因此,对于以下问题:


如果您有5个节点(A,B,C,D,E),它们都具有显式连接,例如A-B-C-D-E。是Erlang / OTP允许A直接与E对话,还是A必须从B通过D传递消息才能到达E,因此这就是图完全连接的原因吗?再说一次,这很有意义,但是从我所看到的来看,它的伸缩性不好。
如果要尝试使用可伸缩且容错的系统,您有什么选择?似乎,如果由于节点太多而无法创建完全连接的图,那么下一个最好的办法就是创建某种树。但是,这似乎不是很容错,因为如果根节点或子节点的任何父节点去世,您将损失很大一部分集群。
在研究主管和工作人员时,我所看到的所有示例都将其应用于单个节点上的流程。是否可以将其应用于节点集群以帮助实现容错?
节点可以成为几个集群的一部分吗?


感谢您的帮助,如果我错过了一个半新的网站或博客文章(大约1年之久),我将很高兴为您提供帮助。但是,我已经很好地搜寻了互联网。

最佳答案

是的,您可以将消息发送到集群中任何远程节点上的进程,例如,通过使用其进程标识符(pid)。这称为位置透明性。是的,它可以很好地扩展(请参阅Riak,CouchDB,RabbitMQ等)。
请注意,一个节点可以运行数十万个进程。事实证明,Erlang具有很好的可扩展性,并且为容错而构建。还有其他方法来扩大规模,例如CloudI的SOA方法(请参阅评论)。如果确实需要,您还可以构建使用hidden nodes的集群。
在节点级别,您将采用不同的方法,例如,构建相同的节点,如果它们发生故障并且工作由其余节点接管,则易于更换。查看Riak如何处理此问题(查看riak_core并查看博客文章Introducing Riak Core)。
节点可以离开并进入一个集群,但不能同时属于多个集群。连接的节点共享一个群集cookie,该群集cookie用于标识连接的节点。您可以在VM运行时设置cookie(请参见Distributed Erlang)。


阅读http://learnyousomeerlang.com/可获得更大的好处。

关于erlang - Erlang集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13212007/

相关文章:

Erlang和运行时记录限制

erlang - erlang 中的截断错误报告

erlang - 具有相同合约的平台特定模块的 Erlang 习语是什么

java - Google Cloud 端点存储桶下载器

java - 从 weblogic 集群获取实例 ip

java - quartz 调度器 : Trigger some jobs on every cluster node and some only once per cluster

amazon-ec2 - 在 Amazon EC2 上运行 Erlang 项目

docker - 如何使用 Jenkins 在远程 docker 主机中运行容器

android - 您如何开始使用 Google Cloud SQL?

linux - 以用户身份维护软件(在集群上)