Erlang 关于进程间消息传递的问题

Erlang 关于进程间消息传递的问题,erlang,Erlang,嗨 我正在Erlang中实现一个类似IM服务器的应用程序。我为每个连接到服务器的客户端使用了一个代理进程,代理进程负责将消息发送到消息网关,消息网关又将消息发送到另一个代理进程。看起来erlang进程间消息传递是作为tcp连接实现的。因此,每个代理进程将有一个到网关的连接。这是否意味着由于端口号的限制,单机上的代理数永远不会超过65535 提前谢谢 Erlang通过网络连接Erlang节点,而不是Erlang进程。(每个Erlang节点都是一个操作系统进程) 因此,当一台机器上有几十个Ks的Er

嗨 我正在Erlang中实现一个类似IM服务器的应用程序。我为每个连接到服务器的客户端使用了一个代理进程,代理进程负责将消息发送到消息网关,消息网关又将消息发送到另一个代理进程。看起来erlang进程间消息传递是作为tcp连接实现的。因此,每个代理进程将有一个到网关的连接。这是否意味着由于端口号的限制,单机上的代理数永远不会超过65535


提前谢谢

Erlang通过网络连接Erlang节点,而不是Erlang进程。(每个Erlang节点都是一个操作系统进程)

因此,当一台机器上有几十个Ks的Erlang节点时(这是不合理的),TCP连接就会耗尽,而不是当一个Erlang节点上有几十个Ks的Erlang进程时


(我没有给出任何绝对值,因为每个Erlang节点还需要与产生另一个网络连接的epmd进行通信。但您可能不会在一台机器上拥有30+K的Erlang节点,即操作系统进程。)

Erlang通过网络连接Erlang节点,而不是Erlang进程。(每个Erlang节点都是一个操作系统进程)

因此,当一台机器上有几十个Ks的Erlang节点时(这是不合理的),TCP连接就会耗尽,而不是当一个Erlang节点上有几十个Ks的Erlang进程时

(我没有给出任何绝对值,因为每个Erlang节点还需要与产生另一个网络连接的epmd通信。但您可能不会在一台机器上拥有30+K的Erlang节点,即操作系统进程。)

Erlang的一些限制:

分布式节点 已知节点 如果X上存在来自Y的任何PID、端口、引用或FUN(Erlang数据类型),或者如果X和Y已连接,则节点X必须知道远程节点Y。节点同时/已知的远程节点的最大数量受节点名称可用原子的最大数量限制。除了节点名atom之外,所有与远程节点有关的数据都会被垃圾收集

连接节点 同时连接的节点的最大数量受同时已知的远程节点的最大数量、可用(Erlang)端口的最大数量或可用套接字的最大数量的限制

Erlang的一些限制:

分布式节点 已知节点 如果X上存在来自Y的任何PID、端口、引用或FUN(Erlang数据类型),或者如果X和Y已连接,则节点X必须知道远程节点Y。节点同时/已知的远程节点的最大数量受节点名称可用原子的最大数量限制。除了节点名atom之外,所有与远程节点有关的数据都会被垃圾收集

连接节点 同时连接的节点的最大数量受同时已知的远程节点的最大数量、可用(Erlang)端口的最大数量或可用套接字的最大数量的限制


Erlang节点以全网格连接,因此64K代表网络中所有连接的节点,而不是单个节点上的节点。拥有这么多的节点也是不合理的:)如果IM需要并且需要在64k以上的CPU核上运行…;-)谢谢!我发现,当进程通过不同的机器连接时,情况确实如此。但是,当它们在同一台机器上时,每个进程都会通过127.0.0.1使用tcp连接(可能是到epmd?)。这似乎不是什么大问题,因为环回地址非常丰富:)Erlang节点以全网状连接,因此64K表示网络中所有连接的节点,而不是单个节点上的节点。拥有这么多的节点也是不合理的:)如果IM需要并且需要在64k以上的CPU核上运行…;-)谢谢!我发现,当进程通过不同的机器连接时,情况确实如此。但是,当它们在同一台机器上时,每个进程都会通过127.0.0.1使用tcp连接(可能是到epmd?)。这似乎不是什么大问题,因为环回地址非常丰富:)