当存在大量节点或二进制数据时,本地Erlang消息会提供合理的性能吗?
案例1:有一个由大约50-200台机器组成的动态池, (erlang节点)。它是不断变化的,大约每10分钟增加或移除5到50台机器。
案例2:假设我们使用这个集群构建youtube-克隆并计划通过消息流视频数据。
通过合理的性能,我的意思是--比复杂Erlang代码可能达到的最高性能慢2-3倍是可以的,慢10倍是不好的。
发布于 2016-10-13 05:50:41
发送消息和二进制数据之间没有任何显著差异。使用term_to_binary
将消息转换为二进制数据包,并通过TCP发送,并对二进制数据进行同样的应用。(嗯,它比这要聪明一点,因为相同原子的文本形式不会像简单的term_to_binary
那样一次又一次地发送。)所以差别是可以忽略不计的。
发布于 2016-10-17 14:11:05
有一些重要的细节:
1)在超过100个节点的簇中,全连通簇中的平噪声将是网络流量的重要组成部分。更大的部署需要对Erlang和OS进行深刻的更改。
2)如果您想要传输视频或音频,则需要单个节点的计划容量:每个节点的客户端、tcp/udp数据包速率、网络带宽。
3)不同节点上的两个进程之间存在150-200K/s的性能限制。
https://stackoverflow.com/questions/40011429
复制相似问题