Using :rpc.call or :rpc.multicall - which is better for performance and speed?

suppose i have 1000 nodes connected in a ring, connect_all set false and manually connected in a ring. each node have 1 genserver means 1000 genserver. if one genserver fail and registered with new pid.

now tell me which approch is better for performance and speed.
1 after registering new pid it send new pid to all 999 nodes by using :rpc.multicall.

2 or remaining 999 nodes use rpc.call to get new pid (suppose i have a library which inform all remote node about pid failure).

Registered with what process? On which node?

When you’re running in a network where nodes aren’t connected to every other node, “where does this happen” becomes a really important question.

A process running on one of the nodes in the ring is only going to be able to communicate with its neighbors, so is there a centralized “directory” node here? That’s where a 999-node :rpc.multicall would need to be sent from…

An approach that avoids a centralized server would be for the GenServer on node #X to reach out to node #X-1 and node #X+1 when it boots up to “announce” its presence. Those nodes could pass this information along to their neighbors, etc (search “gossip protocols”)


Not directly related to the above, but an interesting comment about efficiency from :rpc.multicall:

2 Likes

thank you