Package com.tangosol.net
Class LoadBalancer
- java.lang.Object
-
- com.tangosol.util.Base
-
- com.tangosol.net.LoadBalancer
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classLoadBalancer.AddressPortAn AddressPort is an immutable combination of an IP address and a port number.static classLoadBalancer.QueueA Queue is used to effeciently queue up items for daemon threads to work on.classLoadBalancer.RequestHandlerA RequestHandler is a daemon thread that processes a request from a queue.classLoadBalancer.ResponseHandlerA ResponseHandler is a daemon thread that processes an outgoing response from a destination server.static classLoadBalancer.SocketHandlerA SocketHandler is an abstract daemon thread.-
Nested classes/interfaces inherited from class com.tangosol.util.Base
Base.LoggingWriter
-
-
Field Summary
Fields Modifier and Type Field Description protected LoadBalancer.AddressPort[]m_aAddrPortDestThe AddressPort combinations that the load balancer will balance to.protected LoadBalancer.AddressPortm_addrportHostThe AddressPort combination that the load balancer will listen on.protected booleanm_fRoundRobinToggles between random and round-robin load balancing.protected intm_iNextDestinationRound-robin index.protected Listm_listHandlerThe list of RequestHandler daemons.protected Propertiesm_propOptionsThe optional settings that the load balancer will use.protected LoadBalancer.Queuem_queueThe queue of pending requests.protected Randomm_randomRandom number generator.protected Threadm_threadRunningThe Thread that the load balancer is started on.
-
Constructor Summary
Constructors Constructor Description 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.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description LoadBalancer.AddressPortgetDestination(int i)Determine one of the AddressPort combinations that the load balancer balances requests to.intgetDestinationCount()Determine the number of AddressPort combinations that the load balancer balances requests to.LoadBalancer.AddressPortgetHost()Determine the AddressPort that the load balancer listens on.protected LoadBalancer.AddressPortgetNextDestination()Determine the next AddressPort combination to route to.SocketgetNextDestinationSocket()Open a socket to route to.booleangetProperty(String sName, boolean fDefault)Determine the value of a boolean option.intgetProperty(String sName, int nDefault)Determine the value of an integer option.StringgetProperty(String sName, String sDefault)Determine the value of a String option.protected LoadBalancer.QueuegetQueue()Determine the Queue that Socket connections are placed into.protected LoadBalancer.AddressPortgetRandomDestination()Determine a random AddressPort combination to route to.protected LoadBalancer.AddressPortgetRoundRobinDestination()Using a round-robin algorithm, determine the next AddressPort combination to route to.protected LoadBalancer.QueueinstantiateQueue()Factory method: Create a queue.protected LoadBalancer.RequestHandlerinstantiateRequestHandler(LoadBalancer.Queue queue)Factory method: Create a RequestHandler.protected LoadBalancer.ResponseHandlerinstantiateResponseHandler(LoadBalancer.RequestHandler daemonRequest)Factory method: Create a ResponseHandler.static voidmain(String[] asArgs)Command-line capability to start the load balancer.protected static StringparseThreadExtension(Daemon daemon)Parse the extension glued onto the end of a daemon's thread's name.voidrun()Start the LoadBalancer.static voidshowInstructions()Display the instructions for the command-line utility.-
Methods inherited from class com.tangosol.util.Base
azzert, azzert, azzert, azzertFailed, breakLines, breakLines, capitalize, checkNotEmpty, checkNotNull, checkRange, computeSafeWaitTime, decimalValue, dup, dup, ensureBigDecimal, ensureClassLoader, ensureRuntimeException, ensureRuntimeException, equals, equalsDeep, err, err, err, err, err, escape, formatDateTime, getCallerStackFrame, getCommonMonitor, getCommonMonitor, getCommonMonitor, getContextClassLoader, getContextClassLoader, getDeepMessage, getErr, getLastSafeTimeMillis, getLog, getMaxDecDigits, getMaxHexDigits, getOriginalException, getOut, getProcessRandom, getRandom, getRandomBinary, getRandomBinary, getRandomString, getSafeTimeMillis, getStackFrame, getStackFrames, getStackTrace, getStackTrace, getStackTrace, getThreadFactory, getTimeZone, getUpTimeMillis, hashCode, hexValue, indentString, indentString, isDecimal, isHex, isLogEcho, isOctal, log, log, log, log, log, makeInteger, makeLong, makeThread, mergeArray, mergeBooleanArray, mergeByteArray, mergeCharArray, mergeDoubleArray, mergeFloatArray, mergeIntArray, mergeLongArray, mod, mod, newHashMap, newHashMap, newHashSet, newHashSet, octalValue, out, out, out, out, out, pad, parseBandwidth, parseBandwidth, parseDelimitedString, parseHex, parseHex, parseMemorySize, parseMemorySize, parsePercentage, parseTime, parseTime, parseTimeNanos, parseTimeNanos, printStackTrace, randomize, randomize, randomize, randomize, read, read, read, read, read, read, read, replace, setErr, setLog, setLogEcho, setOut, sleep, toBandwidthString, toBandwidthString, toCharEscape, toCrc, toCrc, toCrc, toCrc, toCrc, toDecString, toDelimitedString, toDelimitedString, toDelimitedString, toDelimitedString, toHex, toHex, toHexDump, toHexEscape, toHexEscape, toHexEscape, toHexEscape, toHexString, toMemorySizeString, toMemorySizeString, toQuotedCharEscape, toQuotedStringEscape, toSqlString, toString, toString, toStringEscape, toUnicodeEscape, trace, trace, trace, trace, trace, trace, trace, trace, trace, truncateString, truncateString, wait
-
-
-
-
Field Detail
-
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 Detail
-
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 hostaAddrPortDest- the array of AddressPort combinations that requests will be sent to
-
-
Method Detail
-
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.
-
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 upsDefault- 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 upnDefault- 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 upfDefault- 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
-
-