我是Erlang的新手。在Erlang中,节点由一个原子表示,如'name @ host'。我想问一个节点如何与其他节点通信而不增加它的原子数?
我想构建一个可能包含数千个节点的分布式存储系统。 对于指定的节点A,它可以向/从集群中的任何其他节点发送/接收消息,例如:
rpc:call(Node, Module, Method, [])
但是,当节点加入和离开集群时,节点A可能已经与数千个节点通信, 这样,节点A的原子数将不断增加,最终达到极限。 如何避免这种情况发生? 如果我使用Pid代替Node进行通信,例如,
Pid ! Message
这样会增加节点A中的原子数吗?据说Pid包含远程节点的信息。
答案 0 :(得分:4)
最大原子数为1048576,您可以用+ t将其提高。见:erlang docs
你不可能通过erlang群集达到极限。如果你要扩展到数千到数百万的范围,你很可能会有几个独立的集群。
分布式Erlang通过节点之间的tcp心跳保持群集处于活动状态。您可能不希望单个群集超过几千个节点。