Package org.nustaq.kontraktor.services
Class ServiceRegistry
java.lang.Object
org.nustaq.kontraktor.Actors
org.nustaq.kontraktor.Actor<ServiceRegistry>
org.nustaq.kontraktor.services.ServiceRegistry
- All Implemented Interfaces:
java.io.Serializable,java.util.concurrent.Executor,org.nustaq.kontraktor.monitoring.Monitorable
- Direct Known Subclasses:
DynDataServiceRegistry
public class ServiceRegistry extends org.nustaq.kontraktor.Actor<ServiceRegistry>
Created by ruedi on 11.08.2015.
a simple service registry. Services can be registered by name.
They are expected to send cyclical heartbeats.
By registering a listener (callback) remote services can listen to
availability/unavailability of services
Rationale: in cluster of services managing connectivity gets complex
quickly. In order to simplify this, services are given a single point
of contact: the service registry (serviceRegistry). They register themself and
obtain address and availability from the central registry.
Note: Downside is, this is a SPOF.
- See Also:
- Serialized Form
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classServiceRegistry.RestApistatic classServiceRegistry.StatusEntry -
Field Summary
Fields Modifier and Type Field Description static java.lang.StringAVAILABLEprotected ClusterCfgconfigstatic java.lang.StringCONFIGUPDATEprotected java.util.List<org.nustaq.kontraktor.Callback>listenersstatic RegistryArgsoptionsstatic java.lang.StringSERVICEDUMPprotected java.util.HashMap<java.lang.String,java.util.List<org.nustaq.kontraktor.remoting.base.ServiceDescription>>servicesprotected java.util.Map<java.lang.String,ServiceRegistry.StatusEntry>statusMapstatic java.lang.StringTIMEOUTFields inherited from class org.nustaq.kontraktor.Actor
__cbQueue, __clientConnection, __connections, __currentDispatcher, __mailbox, __mailboxCapacity, __mbCapacity, __publishTarget, __remoteId, __scheduler, __self, __stopped, __ticketMachine, connection, sender, userData, zzRoutingGCEnabled, zzServerMsgCallback -
Constructor Summary
Constructors Constructor Description ServiceRegistry() -
Method Summary
Modifier and Type Method Description org.nustaq.kontraktor.IPromisebalanceDynShards()only valid on DynData cluster, rebalance data loadprotected voidbroadcastAvailable(org.nustaq.kontraktor.remoting.base.ServiceDescription desc)protected voidbroadCastTimeOut(org.nustaq.kontraktor.remoting.base.ServiceDescription desc)voidcheckTimeout()org.nustaq.kontraktor.IPromise<org.nustaq.reallive.server.dynamic.DynClusterDistribution>getActiveDynDataDistribution()only valid on DynData cluster, get distribution as assumed by registryorg.nustaq.kontraktor.IPromise<ClusterCfg>getConfig()org.nustaq.kontraktor.IPromise<org.nustaq.reallive.server.dynamic.DynClusterDistribution>getDynDataDistribution()only valid on DynData cluster, get distribution as reported by datanodesjava.util.function.Consumer<io.undertow.server.HttpServerExchange>getPrepareResponse()java.util.function.Function<io.undertow.util.HeaderMap,org.nustaq.kontraktor.IPromise>getReqAuth()protected org.nustaq.kontraktor.remoting.base.ServiceDescriptiongetService(java.lang.String name)protected java.util.List<org.nustaq.kontraktor.remoting.base.ServiceDescription>getServiceList(java.lang.String serviceName)org.nustaq.kontraktor.IPromise<java.util.Map<java.lang.String,org.nustaq.kontraktor.remoting.base.ServiceDescription>>getServiceMap()org.nustaq.kontraktor.IPromise<java.util.List<ServiceRegistry.StatusEntry>>getStati()voidinit(ClusterCfg cfg)static voidmain(java.lang.String[] args)static ServiceArgsparseCommandLine(java.lang.String[] args, java.lang.String[] concatArgs, ServiceArgs options)static ServiceArgsparseCommandLine(java.lang.String[] args, ServiceArgs options)voidreceiveHeartbeat(java.lang.String serviceName, java.lang.String uniqueKey)voidreceiveHeartbeatWithStatus(java.lang.String serviceName, java.lang.String uniqueKey, java.io.Serializable status)voidregisterService(org.nustaq.kontraktor.remoting.base.ServiceDescription desc)org.nustaq.kontraktor.IPromisereleaseDynShard(java.lang.String name)drop node, remove all data !!protected voidremoveStatus(java.lang.String key)voidserviceDumper()static ServiceRegistrystart(java.lang.String[] args)static ServiceRegistrystart(RegistryArgs options)static ServiceRegistrystart(RegistryArgs _options, ClusterCfg cfg, java.lang.Class<? extends ServiceRegistry> clazz)static voidstart(SingleProcessRLClusterArgs options, ClusterCfg cfg)voidsubscribe(org.nustaq.kontraktor.Callback<org.nustaq.kontraktor.util.Pair<java.lang.String,org.nustaq.kontraktor.remoting.base.ServiceDescription>> cb)protected voidupdateStatus(long now, org.nustaq.kontraktor.remoting.base.ServiceDescription td, java.lang.String key, java.io.Serializable status)Methods inherited from class org.nustaq.kontraktor.Actor
__addDeadLetter, __addRemoteConnection, __addStopHandler, __dispatchRemoteCall, __enqueueCall, __getCachedMethod, __removeRemoteConnection, __stop, __stopImpl, __submit, ask, askMsg, asyncstop, checkThread, close, closeCurrentClient, current, cyclic, debounce, delayed, execInThreadPool, execute, getActor, getActorRef, getCallbackSize, getConnections, getCurrentDispatcher, getFactory, getMailboxSize, getQSizes, getReport, getScheduler, getSubMonitorables, getUntypedRef, hasStopped, inside, inThread, isCallbackQPressured, isEmpty, isMailboxPressured, isProxy, isPublished, isRemote, isStopped, ping, router$clientPing, self, serialOn, setServerMsgCallback, stop, stopSafeClose, tell, tellMsg, unpublish, zzkrouterLostClient, zzRoutingRefGCMethods inherited from class org.nustaq.kontraktor.Actors
AddDeadLetter, all, all, all, allMapped, AsActor, AsActor, AsActor, AsActor, AsUntypedActor, awaitAll, awaitAll, awaitAll, awaitAll, complete, complete, DeadLetters, flow, InThread, isComplete, isCont, isError, isErrorOrComplete, isResult, isTimeout, kYield, kYield, promise, race, race, reject, resolve, resolve, stream, SubmitDelayed, yieldCallbacks
-
Field Details
-
CONFIGUPDATE
public static final java.lang.String CONFIGUPDATE- See Also:
- Constant Field Values
-
SERVICEDUMP
public static final java.lang.String SERVICEDUMP- See Also:
- Constant Field Values
-
AVAILABLE
public static final java.lang.String AVAILABLE- See Also:
- Constant Field Values
-
TIMEOUT
public static final java.lang.String TIMEOUT- See Also:
- Constant Field Values
-
services
protected java.util.HashMap<java.lang.String,java.util.List<org.nustaq.kontraktor.remoting.base.ServiceDescription>> services -
statusMap
-
listeners
protected java.util.List<org.nustaq.kontraktor.Callback> listeners -
config
-
options
-
-
Constructor Details
-
ServiceRegistry
public ServiceRegistry()
-
-
Method Details
-
init
-
serviceDumper
public void serviceDumper() -
registerService
public void registerService(org.nustaq.kontraktor.remoting.base.ServiceDescription desc) -
getServiceMap
public org.nustaq.kontraktor.IPromise<java.util.Map<java.lang.String,org.nustaq.kontraktor.remoting.base.ServiceDescription>> getServiceMap() -
getService
protected org.nustaq.kontraktor.remoting.base.ServiceDescription getService(java.lang.String name) -
subscribe
public void subscribe(org.nustaq.kontraktor.Callback<org.nustaq.kontraktor.util.Pair<java.lang.String,org.nustaq.kontraktor.remoting.base.ServiceDescription>> cb) -
broadcastAvailable
protected void broadcastAvailable(org.nustaq.kontraktor.remoting.base.ServiceDescription desc) -
broadCastTimeOut
protected void broadCastTimeOut(org.nustaq.kontraktor.remoting.base.ServiceDescription desc) -
getConfig
-
receiveHeartbeat
public void receiveHeartbeat(java.lang.String serviceName, java.lang.String uniqueKey) -
receiveHeartbeatWithStatus
public void receiveHeartbeatWithStatus(java.lang.String serviceName, java.lang.String uniqueKey, java.io.Serializable status) -
removeStatus
protected void removeStatus(java.lang.String key) -
updateStatus
protected void updateStatus(long now, org.nustaq.kontraktor.remoting.base.ServiceDescription td, java.lang.String key, java.io.Serializable status) -
checkTimeout
public void checkTimeout() -
getServiceList
protected java.util.List<org.nustaq.kontraktor.remoting.base.ServiceDescription> getServiceList(java.lang.String serviceName) -
parseCommandLine
public static ServiceArgs parseCommandLine(java.lang.String[] args, java.lang.String[] concatArgs, ServiceArgs options) -
parseCommandLine
-
getDynDataDistribution
public org.nustaq.kontraktor.IPromise<org.nustaq.reallive.server.dynamic.DynClusterDistribution> getDynDataDistribution()only valid on DynData cluster, get distribution as reported by datanodes- Returns:
-
getActiveDynDataDistribution
public org.nustaq.kontraktor.IPromise<org.nustaq.reallive.server.dynamic.DynClusterDistribution> getActiveDynDataDistribution()only valid on DynData cluster, get distribution as assumed by registry- Returns:
-
balanceDynShards
public org.nustaq.kontraktor.IPromise balanceDynShards()only valid on DynData cluster, rebalance data load- Returns:
-
releaseDynShard
public org.nustaq.kontraktor.IPromise releaseDynShard(java.lang.String name)drop node, remove all data !!not yet implemented!!- Parameters:
name-- Returns:
-
getStati
-
main
public static void main(java.lang.String[] args) -
start
-
start
-
start
-
start
public static ServiceRegistry start(RegistryArgs _options, ClusterCfg cfg, java.lang.Class<? extends ServiceRegistry> clazz) -
getPrepareResponse
public java.util.function.Consumer<io.undertow.server.HttpServerExchange> getPrepareResponse() -
getReqAuth
public java.util.function.Function<io.undertow.util.HeaderMap,org.nustaq.kontraktor.IPromise> getReqAuth()
-