@Named public final class DefaultTopologyService extends java.lang.Object implements org.springframework.context.SmartLifecycle, TopologyService
Modifier and Type | Class and Description |
---|---|
private class |
DefaultTopologyService.DistributedMessageListener |
private static class |
DefaultTopologyService.Event
Events that can occur in the service.
|
private static class |
DefaultTopologyService.ExceptionHandler |
private static class |
DefaultTopologyService.State
States of the topology service.
|
private class |
DefaultTopologyService.TopologyTypeChangeListener |
Modifier and Type | Field and Description |
---|---|
private @Nullable org.jgrapht.Graph<java.lang.String,org.jgrapht.graph.DefaultEdge> |
cachedTopology |
private TopologyProcessor |
currentTopologyProcessor |
private DiscoveryService |
discoveryService |
private EventBus |
eventBus |
private ListeningScheduledExecutorService |
executorService |
private NodeIdentityService |
identityService |
private @Nullable java.lang.String |
listenerKey |
private static org.slf4j.Logger |
logger |
private boolean |
master |
private IMap<java.lang.String,java.lang.Object> |
runtimeConfig |
private StateMachineService<DefaultTopologyService.State,DefaultTopologyService.Event> |
service |
private ITopic<TopologyMessage> |
topic |
private java.util.List<TopologyProcessor> |
topologyProcessors |
Constructor and Description |
---|
DefaultTopologyService(DiscoveryService discoveryService,
NodeIdentityService identityService,
EventBus eventBus,
java.util.List<TopologyProcessor> topologyProcessors,
HazelcastInstance hazelcastInstance) |
Modifier and Type | Method and Description |
---|---|
private java.util.Set<NodeDescriptor> |
allNodes() |
private void |
electMaster(FSM<DefaultTopologyService.State,DefaultTopologyService.Event> fsm)
Simple master selection.
|
private @Nullable org.jgrapht.Graph<java.lang.String,org.jgrapht.graph.DefaultEdge> |
getCurrentTopologyGraph() |
int |
getPhase() |
private java.util.Optional<TopologyProcessor> |
getTopologyProcessorWithName(java.lang.String processorName) |
void |
handleNodeDestroyedEvent(NodeDestroyedEvent event) |
boolean |
hasTopology() |
private void |
internalStart(FSM<DefaultTopologyService.State,DefaultTopologyService.Event> fsm) |
private void |
internalStop(FSM<DefaultTopologyService.State,DefaultTopologyService.Event> fsm) |
boolean |
isAutoStartup() |
boolean |
isLocalNodeMaster() |
boolean |
isRunning() |
java.util.Optional<java.lang.String> |
masterId() |
void |
membershipChange(DiscoveryEvent event) |
java.util.Set<java.lang.String> |
neighbours()
Returns a set of neighbours of the current node.
|
void |
start() |
void |
stop() |
void |
stop(java.lang.Runnable callback) |
private void |
topologyChanged(FSM<DefaultTopologyService.State,DefaultTopologyService.Event> fsm)
Called when topology has changed: new member member removal type changed
|
private void |
topologyConfigured(FSM<DefaultTopologyService.State,DefaultTopologyService.Event> stateEventFSM)
Called on all nodes when the topology has been configured by master.
|
java.util.Optional<org.jgrapht.Graph<java.lang.String,org.jgrapht.graph.DefaultEdge>> |
topologyGraph()
Returns the current topology graph.
|
java.util.Optional<java.lang.String> |
topologyType() |
java.lang.String |
toString() |
private static final org.slf4j.Logger logger
private final ListeningScheduledExecutorService executorService
private final DiscoveryService discoveryService
private final NodeIdentityService identityService
private final EventBus eventBus
private final java.util.List<TopologyProcessor> topologyProcessors
private final IMap<java.lang.String,java.lang.Object> runtimeConfig
private final ITopic<TopologyMessage> topic
private final StateMachineService<DefaultTopologyService.State,DefaultTopologyService.Event> service
private TopologyProcessor currentTopologyProcessor
private boolean master
private @Nullable java.lang.String listenerKey
private @Nullable org.jgrapht.Graph<java.lang.String,org.jgrapht.graph.DefaultEdge> cachedTopology
@Inject public DefaultTopologyService(DiscoveryService discoveryService, NodeIdentityService identityService, EventBus eventBus, java.util.List<TopologyProcessor> topologyProcessors, HazelcastInstance hazelcastInstance)
public boolean isAutoStartup()
isAutoStartup
in interface org.springframework.context.SmartLifecycle
public void stop(java.lang.Runnable callback)
stop
in interface org.springframework.context.SmartLifecycle
public void start()
start
in interface org.springframework.context.Lifecycle
public void stop()
stop
in interface org.springframework.context.Lifecycle
public boolean isRunning()
isRunning
in interface org.springframework.context.Lifecycle
public int getPhase()
getPhase
in interface org.springframework.context.Phased
private void internalStart(FSM<DefaultTopologyService.State,DefaultTopologyService.Event> fsm)
private void internalStop(FSM<DefaultTopologyService.State,DefaultTopologyService.Event> fsm)
private void electMaster(FSM<DefaultTopologyService.State,DefaultTopologyService.Event> fsm)
Simple master selection. We rely on Hazelcast, so we just need to perform local, deterministic selection.
In this case we selects the node with the largest nodeId.
private void topologyChanged(FSM<DefaultTopologyService.State,DefaultTopologyService.Event> fsm)
Called when topology has changed:
Executed only on master.
private void topologyConfigured(FSM<DefaultTopologyService.State,DefaultTopologyService.Event> stateEventFSM)
Called on all nodes when the topology has been configured by master.
private java.util.Optional<TopologyProcessor> getTopologyProcessorWithName(java.lang.String processorName)
private @Nullable org.jgrapht.Graph<java.lang.String,org.jgrapht.graph.DefaultEdge> getCurrentTopologyGraph()
public java.util.Optional<java.lang.String> masterId()
masterId
in interface TopologyService
public boolean isLocalNodeMaster()
isLocalNodeMaster
in interface TopologyService
public boolean hasTopology()
hasTopology
in interface TopologyService
public java.util.Optional<org.jgrapht.Graph<java.lang.String,org.jgrapht.graph.DefaultEdge>> topologyGraph()
TopologyService
Returns the current topology graph.
topologyGraph
in interface TopologyService
public java.util.Optional<java.lang.String> topologyType()
topologyType
in interface TopologyService
public java.util.Set<java.lang.String> neighbours()
TopologyService
Returns a set of neighbours of the current node.
neighbours
in interface TopologyService
String
, possibly empty when there is no topology or the node has no neighbours.public void membershipChange(DiscoveryEvent event)
private java.util.Set<NodeDescriptor> allNodes()
public void handleNodeDestroyedEvent(NodeDestroyedEvent event)
public java.lang.String toString()
toString
in class java.lang.Object