Class ServiceRegistry

java.lang.Object
org.nustaq.kontraktor.Actors
org.nustaq.kontraktor.Actor<ServiceRegistry>
org.nustaq.kontraktor.services.ServiceRegistry
All Implemented Interfaces:
Serializable, 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:
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
     
    static class 
     

    Nested classes/interfaces inherited from class org.nustaq.kontraktor.Actor

    org.nustaq.kontraktor.Actor.ActorReport
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
     
    protected ClusterCfg
     
    static final String
     
    protected List<org.nustaq.kontraktor.Callback>
     
     
    static final String
     
    protected HashMap<String,List<org.nustaq.kontraktor.remoting.base.ServiceDescription>>
     
     
    static final String
     

    Fields 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

    Fields inherited from class org.nustaq.kontraktor.Actors

    CONT, DEFAULT_TIMOUT, defaultScheduler, delayedCalls, exec, instance, MAX_EXTERNAL_THREADS_POOL_SIZE, version
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    org.nustaq.kontraktor.IPromise
    only valid on DynData cluster, rebalance data load
    protected void
    broadcastAvailable(org.nustaq.kontraktor.remoting.base.ServiceDescription desc)
     
    protected void
    broadCastTimeOut(org.nustaq.kontraktor.remoting.base.ServiceDescription desc)
     
    void
     
    org.nustaq.kontraktor.IPromise<org.nustaq.reallive.server.dynamic.DynClusterDistribution>
    only valid on DynData cluster, get distribution as assumed by registry
    org.nustaq.kontraktor.IPromise<ClusterCfg>
     
    org.nustaq.kontraktor.IPromise<org.nustaq.reallive.server.dynamic.DynClusterDistribution>
    only valid on DynData cluster, get distribution as reported by datanodes
    Consumer<io.undertow.server.HttpServerExchange>
     
    Function<io.undertow.util.HeaderMap,org.nustaq.kontraktor.IPromise>
     
    protected org.nustaq.kontraktor.remoting.base.ServiceDescription
     
    protected List<org.nustaq.kontraktor.remoting.base.ServiceDescription>
    getServiceList(String serviceName)
     
    org.nustaq.kontraktor.IPromise<Map<String,org.nustaq.kontraktor.remoting.base.ServiceDescription>>
     
    org.nustaq.kontraktor.IPromise<List<ServiceRegistry.StatusEntry>>
     
    void
     
    org.nustaq.kontraktor.IPromise<Boolean>
     
    static void
    main(String[] args)
     
    static <T extends ServiceArgs>
    T
    parseCommandLine(String[] args, String[] concatArgs, T options)
     
    void
    receiveHeartbeat(String serviceName, String uniqueKey)
     
    void
    receiveHeartbeatWithStatus(String serviceName, String uniqueKey, Serializable status)
     
    void
    registerService(org.nustaq.kontraktor.remoting.base.ServiceDescription desc)
     
    org.nustaq.kontraktor.IPromise
    drop node, remove all data !!
    protected void
     
    void
     
    void
     
    start(String[] args)
     
     
    start(RegistryArgs _options, ClusterCfg cfg, Class<? extends ServiceRegistry> clazz)
     
    static void
     
    void
    subscribe(org.nustaq.kontraktor.Callback<org.nustaq.kontraktor.util.Pair<String,org.nustaq.kontraktor.remoting.base.ServiceDescription>> cb)
     
    protected void
    updateStatus(long now, org.nustaq.kontraktor.remoting.base.ServiceDescription td, String key, 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, zzRoutingRefGC

    Methods 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

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Constructor Details

    • ServiceRegistry

      public ServiceRegistry()
  • Method Details

    • init

      public void init(ClusterCfg cfg)
    • serviceDumper

      public void serviceDumper()
    • registerService

      public void registerService(org.nustaq.kontraktor.remoting.base.ServiceDescription desc)
    • getServiceMap

      public org.nustaq.kontraktor.IPromise<Map<String,org.nustaq.kontraktor.remoting.base.ServiceDescription>> getServiceMap()
    • getService

      protected org.nustaq.kontraktor.remoting.base.ServiceDescription getService(String name)
    • subscribe

      public void subscribe(org.nustaq.kontraktor.Callback<org.nustaq.kontraktor.util.Pair<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)
    • sendServiceBroadcast

      public void sendServiceBroadcast(String messageId, Serializable message)
    • getConfig

      public org.nustaq.kontraktor.IPromise<ClusterCfg> getConfig()
    • receiveHeartbeat

      public void receiveHeartbeat(String serviceName, String uniqueKey)
    • receiveHeartbeatWithStatus

      public void receiveHeartbeatWithStatus(String serviceName, String uniqueKey, Serializable status)
    • removeStatus

      protected void removeStatus(String key)
    • updateStatus

      protected void updateStatus(long now, org.nustaq.kontraktor.remoting.base.ServiceDescription td, String key, Serializable status)
    • checkTimeout

      public void checkTimeout()
    • getServiceList

      protected List<org.nustaq.kontraktor.remoting.base.ServiceDescription> getServiceList(String serviceName)
    • parseCommandLine

      public static <T extends ServiceArgs> T parseCommandLine(String[] args, String[] concatArgs, T options)
    • 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(String name)
      drop node, remove all data !!not yet implemented!!
      Parameters:
      name -
      Returns:
    • getStati

      public org.nustaq.kontraktor.IPromise<List<ServiceRegistry.StatusEntry>> getStati()
    • main

      public static void main(String[] args)
    • start

      public static ServiceRegistry start(String[] args)
    • start

      public static ServiceRegistry start(RegistryArgs options)
    • start

      public static void start(SingleProcessRLClusterArgs options, ClusterCfg cfg)
    • start

      public static ServiceRegistry start(RegistryArgs _options, ClusterCfg cfg, Class<? extends ServiceRegistry> clazz)
    • isDynamic

      public org.nustaq.kontraktor.IPromise<Boolean> isDynamic()
    • getPrepareResponse

      public Consumer<io.undertow.server.HttpServerExchange> getPrepareResponse()
    • getReqAuth

      public Function<io.undertow.util.HeaderMap,org.nustaq.kontraktor.IPromise> getReqAuth()