Package io.atomix.cluster.discovery
Class BootstrapDiscoveryProvider
java.lang.Object
io.atomix.utils.event.AbstractListenerManager<NodeDiscoveryEvent,NodeDiscoveryEventListener>
io.atomix.cluster.discovery.BootstrapDiscoveryProvider
- All Implemented Interfaces:
NodeDiscoveryProvider,Configured<NodeDiscoveryConfig>,ListenerService<NodeDiscoveryEvent,NodeDiscoveryEventListener>
public final class BootstrapDiscoveryProvider
extends AbstractListenerManager<NodeDiscoveryEvent,NodeDiscoveryEventListener>
implements NodeDiscoveryProvider
Cluster membership provider that bootstraps membership from a pre-defined set of peers.
The bootstrap member provider takes a set of peer addresses and uses them to join the cluster. Using
the MessagingService, each node sends a heartbeat to its
configured bootstrap peers. Peers respond to each heartbeat message with a list of all known
peers, thus propagating membership information using a gossip style protocol.
A phi accrual failure detector is used to detect failures and remove peers from the
configuration. In order to avoid flapping of membership following a ClusterMembershipEvent.Type.MEMBER_ADDED event, the implementation attempts to
heartbeat all newly discovered peers before triggering a ClusterMembershipEvent.Type.MEMBER_REMOVED event.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classBootstrap member location provider type. -
Field Summary
FieldsFields inherited from class io.atomix.utils.event.AbstractListenerManager
listenerRegistry -
Constructor Summary
ConstructorsConstructorDescriptionBootstrapDiscoveryProvider(Node... bootstrapNodes) BootstrapDiscoveryProvider(Collection<Node> bootstrapNodes) -
Method Summary
Modifier and TypeMethodDescriptionstatic BootstrapDiscoveryBuilderbuilder()Creates a new bootstrap provider builder.config()getNodes()Returns the set of active nodes.join(BootstrapService bootstrap, Node localNode) Joins the cluster.Leaves the cluster.Methods inherited from class io.atomix.utils.event.AbstractListenerManager
addListener, post, removeListenerMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface io.atomix.utils.event.ListenerService
addListener, removeListener
-
Field Details
-
TYPE
-
-
Constructor Details
-
BootstrapDiscoveryProvider
-
BootstrapDiscoveryProvider
-
-
Method Details
-
builder
Creates a new bootstrap provider builder.- Returns:
- a new bootstrap provider builder
-
config
- Specified by:
configin interfaceConfigured<NodeDiscoveryConfig>
-
getNodes
Description copied from interface:NodeDiscoveryProviderReturns the set of active nodes.- Specified by:
getNodesin interfaceNodeDiscoveryProvider- Returns:
- the set of active nodes
-
join
Description copied from interface:NodeDiscoveryProviderJoins the cluster.- Specified by:
joinin interfaceNodeDiscoveryProvider- Parameters:
bootstrap- the bootstrap servicelocalNode- the local node info- Returns:
- a future to be completed once the join is complete
-
leave
Description copied from interface:NodeDiscoveryProviderLeaves the cluster.- Specified by:
leavein interfaceNodeDiscoveryProvider- Parameters:
localNode- the local node info- Returns:
- a future to be completed once the leave is complete
-