Package com.tangosol.net
Class SimpleServiceLoadBalancer<S extends Service,T extends ServiceLoad>
- java.lang.Object
-
- com.tangosol.util.Base
-
- com.tangosol.net.AbstractServiceLoadBalancer<S,T>
-
- com.tangosol.net.SimpleServiceLoadBalancer<S,T>
-
- All Implemented Interfaces:
ServiceLoadBalancer<S,T>
,Comparator<T>
- Direct Known Subclasses:
DefaultProxyServiceLoadBalancer
public class SimpleServiceLoadBalancer<S extends Service,T extends ServiceLoad> extends AbstractServiceLoadBalancer<S,T>
A simple ServiceLoadBalancer implementation.- Author:
- jh 2010.12.07
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.tangosol.util.Base
Base.LoggingWriter
-
-
Field Summary
Fields Modifier and Type Field Description protected Map<Member,T>
m_mapLoad
A Map of ServiceLoad objects keyed by their associated Member.protected SortedMap<T,List<Member>>
m_mapMember
A SortedMap of List of Member objects keyed by their associated ServiceLoad.-
Fields inherited from class com.tangosol.net.AbstractServiceLoadBalancer
m_service
-
-
Constructor Summary
Constructors Constructor Description SimpleServiceLoadBalancer()
Default constructor.SimpleServiceLoadBalancer(Comparator<T> comparator)
Create a new SimpleServiceLoadBalancer that will order ServiceLoad objects using the specified Comparator.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
compare(T load1, T load2)
Compare to ServerLoad objects.List<Member>
getMemberList(Member client)
Called by the Service when a new client connects to obtain an ordered list of Members to which the new client should be redirected.void
update(Member member, T load)
Update the load balancing strategy in response to a change in a Service utilization.-
Methods inherited from class com.tangosol.net.AbstractServiceLoadBalancer
getLocalMember, getService, init, isLocalMember
-
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
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.util.Comparator
equals, reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong
-
-
-
-
Field Detail
-
m_mapLoad
protected final Map<Member,T extends ServiceLoad> m_mapLoad
A Map of ServiceLoad objects keyed by their associated Member.
-
m_mapMember
protected final SortedMap<T extends ServiceLoad,List<Member>> m_mapMember
A SortedMap of List of Member objects keyed by their associated ServiceLoad.
-
-
Constructor Detail
-
SimpleServiceLoadBalancer
public SimpleServiceLoadBalancer()
Default constructor.
-
SimpleServiceLoadBalancer
public SimpleServiceLoadBalancer(Comparator<T> comparator)
Create a new SimpleServiceLoadBalancer that will order ServiceLoad objects using the specified Comparator. If null, the natural ordering of the ServiceLoad objects will be used.- Parameters:
comparator
- the Comparator used to order ServiceLoad objects
-
-
Method Detail
-
update
public void update(Member member, T load)
Update the load balancing strategy in response to a change in a Service utilization.- Parameters:
member
- the Member for which the utilization changedload
- the updated ServiceLoad; if null, the utilization for the specified Member is unknown (e.g. when the Service on the specified Member leaves the cluster)
-
getMemberList
public List<Member> getMemberList(Member client)
Called by the Service when a new client connects to obtain an ordered list of Members to which the new client should be redirected. If the returned list is null, empty, or contains a single Member that is the "local" Member, the client will remain connected to the calling Service.- Parameters:
client
- the Member object that represents the remote client- Returns:
- the ordered list of Member objects to which the client should be redirected
-
compare
public int compare(T load1, T load2)
Description copied from interface:ServiceLoadBalancer
Compare to ServerLoad objects.- Parameters:
load1
- the first ServiceLoadload2
- the second ServiceLoad- Returns:
- a negative integer, zero, or a positive integer indicating if load1 is less then, equal, or greater then load2
-
-