Class LoadBalancer

java.lang.Object
com.tangosol.util.Base
com.tangosol.net.LoadBalancer
All Implemented Interfaces:
Runnable

public class LoadBalancer extends Base implements Runnable
A non-sticky HTTP load-balancer.
Version:
1.0, 2002-07-29
Author:
Cameron Purdy
  • Field Details

    • m_addrportHost

      protected LoadBalancer.AddressPort m_addrportHost
      The AddressPort combination that the load balancer will listen on.
    • m_aAddrPortDest

      protected LoadBalancer.AddressPort[] m_aAddrPortDest
      The AddressPort combinations that the load balancer will balance to.
    • m_propOptions

      protected Properties m_propOptions
      The optional settings that the load balancer will use.
    • m_threadRunning

      protected Thread m_threadRunning
      The Thread that the load balancer is started on.
    • m_queue

      protected LoadBalancer.Queue m_queue
      The queue of pending requests.
    • m_listHandler

      protected List m_listHandler
      The list of RequestHandler daemons.
    • m_fRoundRobin

      protected boolean m_fRoundRobin
      Toggles between random and round-robin load balancing.
    • m_random

      protected Random m_random
      Random number generator.
    • m_iNextDestination

      protected int m_iNextDestination
      Round-robin index.
  • Constructor Details

    • LoadBalancer

      public LoadBalancer(LoadBalancer.AddressPort addrportHost, LoadBalancer.AddressPort[] aAddrPortDest, Properties propOptions)
      Instantiate a LoadBalancer object that will listen on a host address/port and redirect requests to destination addresses/ports.
      Parameters:
      addrportHost - the AddressPort combination for this host
      aAddrPortDest - the array of AddressPort combinations that requests will be sent to
  • Method Details

    • main

      public static void main(String[] asArgs)
      Command-line capability to start the load balancer.
    • showInstructions

      public static void showInstructions()
      Display the instructions for the command-line utility.
    • run

      public void run()
      Start the LoadBalancer.
      Specified by:
      run in interface Runnable
    • getHost

      public LoadBalancer.AddressPort getHost()
      Determine the AddressPort that the load balancer listens on.
      Returns:
      the AddressPort that the load balancer listens on
    • getDestinationCount

      public int getDestinationCount()
      Determine the number of AddressPort combinations that the load balancer balances requests to.
    • getDestination

      public LoadBalancer.AddressPort getDestination(int i)
      Determine one of the AddressPort combinations that the load balancer balances requests to. (Indexed property "Destination".)
      Parameters:
      i - an index in the range 0 < i < getDesinationCount()
      Returns:
      the AddressPort that the load balancer listens on
    • getNextDestinationSocket

      public Socket getNextDestinationSocket()
      Open a socket to route to.
      Returns:
      the next available Socket to route a request to
    • getNextDestination

      protected LoadBalancer.AddressPort getNextDestination()
      Determine the next AddressPort combination to route to.
      Returns:
      the next AddressPort combination to route a request to
    • getRandomDestination

      protected LoadBalancer.AddressPort getRandomDestination()
      Determine a random AddressPort combination to route to.
      Returns:
      a random AddressPort combination to route a request to
    • getRoundRobinDestination

      protected LoadBalancer.AddressPort getRoundRobinDestination()
      Using a round-robin algorithm, determine the next AddressPort combination to route to.
      Returns:
      the next AddressPort combination to route a request to
    • getQueue

      protected LoadBalancer.Queue getQueue()
      Determine the Queue that Socket connections are placed into.
      Returns:
      the Queue of Socket objects that have been accepted
    • getProperty

      public String getProperty(String sName, String sDefault)
      Determine the value of a String option.
      Parameters:
      sName - the property name that specifies the option to look up
      sDefault - the default option value to use if the option is not set
      Returns:
      the value of the specified option, or the passed default value if the option is not set
    • getProperty

      public int getProperty(String sName, int nDefault)
      Determine the value of an integer option.
      Parameters:
      sName - the property name that specifies the option to look up
      nDefault - the default option value to use if the option is not set
      Returns:
      the value of the specified option, or the passed default value if the option is not set
    • getProperty

      public boolean getProperty(String sName, boolean fDefault)
      Determine the value of a boolean option.
      Parameters:
      sName - the property name that specifies the option to look up
      fDefault - the default option value to use if the option is not set
      Returns:
      the value of the specified option, or the passed default value if the option is not set
    • parseThreadExtension

      protected static String parseThreadExtension(Daemon daemon)
      Parse the extension glued onto the end of a daemon's thread's name.
      Parameters:
      daemon - a Daemon object
      Returns:
      the extension glued onto the end of a daemon's thread's name
    • instantiateQueue

      protected LoadBalancer.Queue instantiateQueue()
      Factory method: Create a queue.
      Returns:
      a Queue instance
    • instantiateRequestHandler

      protected LoadBalancer.RequestHandler instantiateRequestHandler(LoadBalancer.Queue queue)
      Factory method: Create a RequestHandler.
      Parameters:
      queue - a Queue of Socket objects
      Returns:
      a RequestHandler instance
    • instantiateResponseHandler

      protected LoadBalancer.ResponseHandler instantiateResponseHandler(LoadBalancer.RequestHandler daemonRequest)
      Factory method: Create a ResponseHandler.
      Parameters:
      daemonRequest - the RequestHandler that the ResponseHandler will belong to
      Returns:
      a ResponseHandler instance