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 class
LoadBalancer.AddressPort
An AddressPort is an immutable combination of an IP address and a port number.static class
LoadBalancer.Queue
A Queue is used to effeciently queue up items for daemon threads to work on.class
LoadBalancer.RequestHandler
A RequestHandler is a daemon thread that processes a request from a queue.class
LoadBalancer.ResponseHandler
A ResponseHandler is a daemon thread that processes an outgoing response from a destination server.static class
LoadBalancer.SocketHandler
A 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_aAddrPortDest
The AddressPort combinations that the load balancer will balance to.protected LoadBalancer.AddressPort
m_addrportHost
The AddressPort combination that the load balancer will listen on.protected boolean
m_fRoundRobin
Toggles between random and round-robin load balancing.protected int
m_iNextDestination
Round-robin index.protected List
m_listHandler
The list of RequestHandler daemons.protected Properties
m_propOptions
The optional settings that the load balancer will use.protected LoadBalancer.Queue
m_queue
The queue of pending requests.protected Random
m_random
Random number generator.protected Thread
m_threadRunning
The 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.AddressPort
getDestination(int i)
Determine one of the AddressPort combinations that the load balancer balances requests to.int
getDestinationCount()
Determine the number of AddressPort combinations that the load balancer balances requests to.LoadBalancer.AddressPort
getHost()
Determine the AddressPort that the load balancer listens on.protected LoadBalancer.AddressPort
getNextDestination()
Determine the next AddressPort combination to route to.Socket
getNextDestinationSocket()
Open a socket to route to.boolean
getProperty(String sName, boolean fDefault)
Determine the value of a boolean option.int
getProperty(String sName, int nDefault)
Determine the value of an integer option.String
getProperty(String sName, String sDefault)
Determine the value of a String option.protected LoadBalancer.Queue
getQueue()
Determine the Queue that Socket connections are placed into.protected LoadBalancer.AddressPort
getRandomDestination()
Determine a random AddressPort combination to route to.protected LoadBalancer.AddressPort
getRoundRobinDestination()
Using a round-robin algorithm, determine the next AddressPort combination to route to.protected LoadBalancer.Queue
instantiateQueue()
Factory method: Create a queue.protected LoadBalancer.RequestHandler
instantiateRequestHandler(LoadBalancer.Queue queue)
Factory method: Create a RequestHandler.protected LoadBalancer.ResponseHandler
instantiateResponseHandler(LoadBalancer.RequestHandler daemonRequest)
Factory method: Create a ResponseHandler.static void
main(String[] asArgs)
Command-line capability to start the load balancer.protected static String
parseThreadExtension(Daemon daemon)
Parse the extension glued onto the end of a daemon's thread's name.void
run()
Start the LoadBalancer.static void
showInstructions()
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, 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
-
-