存在大量节点或二进制数据时的Erlang消息
当存在大量节点或二进制数据时,本机Erlang消息是否能提供合理的性能 案例1:有一个大约50-200台机器的动态池(erlang节点)。它不断变化,大约每10分钟添加或删除5-50台机器 案例2:假设我们正在使用这个集群构建youtube克隆,并计划通过消息流传输视频数据存在大量节点或二进制数据时的Erlang消息,erlang,elixir,otp,Erlang,Elixir,Otp,当存在大量节点或二进制数据时,本机Erlang消息是否能提供合理的性能 案例1:有一个大约50-200台机器的动态池(erlang节点)。它不断变化,大约每10分钟添加或删除5-50台机器 案例2:假设我们正在使用这个集群构建youtube克隆,并计划通过消息流传输视频数据 所谓合理的性能,我的意思是-比复杂的Erlang代码可能达到的最高性能慢2-3倍是可以的,慢10倍是不可以的发送消息和二进制数据之间没有任何显著差异。消息只是使用术语\u to \u binary转换为二进制数据包,并通过T
所谓合理的性能,我的意思是-比复杂的Erlang代码可能达到的最高性能慢2-3倍是可以的,慢10倍是不可以的发送消息和二进制数据之间没有任何显著差异。消息只是使用
术语\u to \u binary
转换为二进制数据包,并通过TCP发送,同样适用于二进制数据。(好吧,它比这稍微聪明一点,因为相同原子的文本形式不会像简单的term_to_binary
那样一次又一次地发送。)因此差异可以忽略不计。有一些重要的细节:
1) 在超过100个节点的集群中,全连接集群中的ping噪声将是网络流量的重要部分。更大的部署需要对Erlang虚拟机和操作系统进行深刻的更改
2) 若要流式传输视频或音频,需要规划单个节点的容量:每个节点的客户端、tcp/udp数据包速率、网络带宽
3) 不同节点上的两个进程之间存在150-200K/s消息的性能限制