关于在实际(非理论)水平上erlang系统中有多少节点的问题,我看到的答案从大多数情况下的100到一个答案,其中说“最大150-200”。
我很惊讶看到这一点,因为为了实现电信网络,电话交换机等而不是为了大规模的并发和分发而设计的erlang?如果是这样,你不会假设(我知道我这样做)这将需要一个系统中超过100个节点(我总是假设数百个,可能是数千个)?
我想我的问题是:当这些老电信使用erlang时,什么被认为是“大规模并发/分发”?他们通常连接多少台机器,运行erlang并进行并发?
好奇,谢谢你的回答。
答案 0 :(得分:2)
你得到了答案,对于一个节点集群,采用当前技术,实际限制是100到200个节点:因为我们说的是几乎透明的分布。文档中解释了这种限制的原因,并且很少是由于每个节点的相互调查,因此可用于应用程序的带宽和资源越来越快。
要拥有更多节点,必须对群集和/或单个节点之间的协作进行编程。图书馆提供了一些设施,但当然它不透明,而不是特定的erlang。
出于安全原因,还建议避免使用大型群集:今天在erlang群集中,您可以无限制地在任何其他节点中执行您想要的操作。
答案 1 :(得分:1)
这取决于。这取决于你没有指定或定义的很多东西,我怀疑如果你指定了足够的“真实”答案,你会感到失望,因为它没有用。这就是为什么通常不鼓励这些问题的原因。
你没有说“当这些老电信使用Erlang”时你的日期范围是什么。他们仍然使用它(它从来没有在爱立信以外的地方牵引过,而且从来没有一次爱立信使用它的时间远远超过现在)。以下是他们在SGSN-MME上讨论使用Erlang的视频:http://vimeo.com/44718243
你没有说“Erlang系统”是什么意思。那是一台机器吗? Erlang在启动时没有SMP支持(这是你问的时间框架吗?)。你的意思是并发进程吗?
这是使用net_kernel:connect_node/1
的单个群集吗?你是如何定义一个集群的?默认情况下,Erlang集群是一个完整的网格。这会根据网络和机器接口的性能限制来限制最大大小。但是您可以连接链中的节点,然后没有限制。但是,如果将其视为一个集群,为什么不在使用自己的TCP连接而不仅仅是net_kernel时计算它。互联网上使用了很多爱立信路由器,因此我们可以将互联网视为一个“系统”,其中许多组件路由器都在使用Erlang。
在我链接的视频中,您可以看到,在21世纪初,爱立信的SGSN产品是一个单独的盒子(包含多台机器),可以同时为几千部手机提供服务。我们可以假设每个连接的手机都有一个Erlang进程管理它,加上可忽略不计的系统进程数。