View Source partisan_pluggable_peer_service_manager (partisan v5.0.0-rc.8)
This module realises the partisan_peer_service_manager
behaviour implementing a peer sampling service with a pluggable overlay topology by delegating the topology definition to a callback module implementing the {partisan_peer_service_strategy} behaviour.
Characteristics
- Uses TCP/IP.
- All nodes communicate and maintain connections with all other nodes.
- Nodes periodically send heartbeat messages. The service considers a node "failed" when it misses X heartbeats.
- Point-to-point messaging with a single network hop.
- 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.
Returns true if node
Node
is a member in the membership list. Otherwise returns false
.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 peer service manager.
Same as start_link([]).
Attempt to join a remote node.
Update membership.
Types
-type channel_subs() :: #{{'_' | node(), partisan:channel()} => on_event_fun()}.
-type from() :: {pid(), atom()}.
-type info() :: connections | retransmit | periodic | instrumentation | distance | tree_refresh | {'EXIT', partisan:any_pid(), any()} | {connected, partisan:node_spec(), partisan:channel(), tag(), t()}.
-type interpos_arg() :: {receive_message, node(), any()} | {forward_message, node(), any()}.
-type interpos_fun() :: fun((interpos_arg()) -> interpos_arg()).
-type interposition_map(T) :: #{any() => T}.
-type node_subs() :: #{'_' | node() => on_event_fun()}.
-type on_event_fun() :: partisan_peer_service_manager:on_event_fun().
-type t() :: #state{}.
-type tag() :: atom().
-type x_interpos_fun() :: fun((interpos_arg()) -> ok).
Functions
-spec add_interposition_fun(any(), interpos_fun()) -> ok.
-spec add_post_interposition_fun(any(), x_interpos_fun()) -> ok.
-spec add_pre_interposition_fun(any(), x_interpos_fun()) -> ok.
-spec cast_message(Term :: partisan:any_pid() | partisan:any_name(), Message :: partisan:message()) -> ok.
-spec get_interposition_funs() -> interposition_map(interpos_fun()).
-spec get_pre_interposition_funs() -> interposition_map(x_interpos_fun()).
-spec init([]) -> {ok, t()}.
Node
is a member in the membership list. Otherwise returns false
.
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 remove_interposition_fun(any()) -> ok.
-spec remove_post_interposition_fun(any()) -> ok.
-spec remove_pre_interposition_fun(any()) -> ok.
-spec start_link() -> {ok, pid()} | ignore | {error, term()}.
-spec supports_capability(Arg :: atom()) -> boolean().
-spec terminate(term(), t()) -> term().