View Source partisan_client_server_peer_service_manager (partisan v5.0.0-rc.8)
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
- 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 heartbeat 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).
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.
Trigger function on connection close for a given node.
Fun
is a function object taking zero or a single argument, where the argument is the Node name.Trigger function on connection close for a given node.
Fun
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.
Fun
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.
Fun
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.
Types
-type call() :: {on_up | on_down, node(), on_event_fun()} | {reserve, term()} | {leave, partisan:node_spec()} | {join, partisan:node_spec()} | {send_message, node(), term()} | {receive_message, partisan:channel(), term()} | members | members_for_orchestration | get_local_state.
-type cast() :: {join, partisan:node_spec()} | {kill_connections, [node()]}.
-type membership() :: sets:set(partisan:node_spec()).
-type on_event_fun() :: partisan_peer_service_manager:on_event_fun().
-type pending() :: sets:set(partisan:node_spec()).
-type state() :: #state{}.
-type tag() :: atom().
Functions
-spec cast_message(Term :: partisan:any_pid() | partisan:any_name(), MEssage :: partisan:message()) -> ok.
-spec handle_call(call(), {pid(), term()}, state()) -> {reply, term(), state()} | {reply, term(), state(), timeout()} | {reply, term(), state(), hibernate} | {reply, term(), state(), {continue, term()}} | {noreply, state()} | {noreply, state(), timeout()} | {noreply, state(), hibernate} | {noreply, state(), {continue, term()}} | {stop, term(), term(), state()} | {stop, term(), state()}.
-spec init([]) -> {ok, state()}.
Fun
is a function object taking zero or a single argument, where the argument is the Node name.
Fun
is a function object taking zero or a single argument, where the argument is the Node name.
Fun
is a function object taking zero or a single argument, where the argument is the Node name.
Fun
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().