View Source partisan_client_server_peer_service_manager (partisan v5.0.0-beta.14)
This module realises the partisan_peer_service_manager
behaviour implementing client-server topology where clients communicate with a single server and servers form a full-mesh topology.
characteristics
Characteristics
- Uses TCP/IP.
- Client nodes communicate and maintain connections with server nodes. They refuse connections from other clients but refer them to a server node.
- Server nodes communicate and maintain connections with all other server nodes.
- Nodes periodically send hearbeat messages. The service considers a node "failed" when it misses X heartbeats.
- Point-to-point messaging through the server (server as relay).
- Eventually consistent membership maintained in a CRDT and replicated using gossip.
- Scalability limited to hundres of nodes (60-200 nodes).
Link to this section Summary
Functions
Cast a message to a remote gen_server.
Cast a message to a remote gen_server.
Decode state.
Gensym support for forwarding.
Gensym support for forwarding.
Forward message to registered process on the remote side.
Return local node's view of cluster membership.
Inject a partition.
Attempt to join a remote node.
Leave the cluster.
Remove another node from the cluster.
Return membership list.
Return membership list.
Return myself.
Trigger function on connection close for a given node.
Function
is a function object taking zero or a single argument, where the argument is the Node name.Trigger function on connection open for a given node.
Function
is a function object taking zero or a single argument, where the argument is the Node name.Return partitions.
Receive message from a remote manager.
Reserve a slot for the particular tag.
Resolve a partition.
Send message to a remote manager.
Same as start_link([]).
Attempt to join a remote node.
Update membership.
Link to this section Types
-type membership() :: sets:set(partisan:node_spec()).
-type on_change_fun() :: partisan_peer_service_manager:on_change_fun().
-type pending() :: sets:set(partisan:node_spec()).
-type state_t() :: #state{}.
-type tag() :: atom().
Link to this section Functions
-spec cast_message(Term :: partisan_remote_ref:p() | partisan_remote_ref:n() | pid(), MEssage :: partisan:message()) -> ok.
-spec init([]) -> {ok, state_t()}.
Function
is a function object taking zero or a single argument, where the argument is the Node name.
Function
is a function object taking zero or a single argument, where the argument is the Node name.
-spec start_link() -> {ok, pid()} | ignore | {error, term()}.
-spec supports_capability(Arg :: atom()) -> boolean().