org.apache.synapse.endpoints.algorithms
Class WeightedRRLCAlgorithm

java.lang.Object
  extended by org.apache.synapse.endpoints.algorithms.WeightedRRLCAlgorithm
All Implemented Interfaces:
Cloneable, LoadbalanceAlgorithm, ManagedLifecycle

public class WeightedRRLCAlgorithm
extends Object
implements LoadbalanceAlgorithm, ManagedLifecycle

This is a Weighted Round Robin Least Connection algorithm.

This algorithm is similar to WeightedRoundRobin algorithm except it takes the active connections made by the endpoints in to account. Weights assinged to each endpoint and these are static weights. But depending on the active connections these weights are changed dynamically during the execution.

Algorithm assumes that the endpoint connections to total connection ratio should be eqault to endpoint weight to total weights ratio. If the ratios are different it tries to align them by changing the weights dynamically.


Field Summary
static String LB_WEIGHTED_RRLC_ROUNDS_PER_RECAL
           
static String LB_WEIGHTED_RRLC_WEIGHT
           
static String LB_WEIGHTED_RRLC_WEIGHT_MAX
           
static String LB_WEIGHTED_RRLC_WEIGHT_MIN
           
static int LB_WEIGHTED_RRLC_WEIGHT_SKEW
           
 
Constructor Summary
WeightedRRLCAlgorithm()
           
 
Method Summary
 LoadbalanceAlgorithm clone()
           
 void destroy()
          This method should implement the destroying of the implemented parts of the configuration.
 int getCurrentRound()
           
 int getEndpointCursor()
           
 String getName()
          Return the name of the load balancing algorithm
 Member getNextApplicationMember(AlgorithmContext algorithmContext)
          This method returns the next member to which the request has been sent to, according to the algorithm implementation.
 Endpoint getNextEndpoint(MessageContext messageContext, AlgorithmContext algorithmContext)
          This method returns the next node according to the algorithm implementation.
 int getRoundsPerRecalculation()
           
 int getTotalConnections()
           
 int getTotalWeight()
           
 void init(SynapseEnvironment se)
          This method should implement the initialization of the implemented parts of the configuration.
 void reset(AlgorithmContext algorithmContext)
          Resets the algorithm to its initial position.
 void setApplicationMembers(List<Member> members)
          Set the application members
 void setEndpoints(List<Endpoint> endpoints)
          Set the endpoints
 void setLoadBalanceEndpoint(Endpoint endpoint)
          Set the loadbalance endpoint
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LB_WEIGHTED_RRLC_ROUNDS_PER_RECAL

public static final String LB_WEIGHTED_RRLC_ROUNDS_PER_RECAL
See Also:
Constant Field Values

LB_WEIGHTED_RRLC_WEIGHT

public static final String LB_WEIGHTED_RRLC_WEIGHT
See Also:
Constant Field Values

LB_WEIGHTED_RRLC_WEIGHT_MIN

public static final String LB_WEIGHTED_RRLC_WEIGHT_MIN
See Also:
Constant Field Values

LB_WEIGHTED_RRLC_WEIGHT_MAX

public static final String LB_WEIGHTED_RRLC_WEIGHT_MAX
See Also:
Constant Field Values

LB_WEIGHTED_RRLC_WEIGHT_SKEW

public static final int LB_WEIGHTED_RRLC_WEIGHT_SKEW
See Also:
Constant Field Values
Constructor Detail

WeightedRRLCAlgorithm

public WeightedRRLCAlgorithm()
Method Detail

setApplicationMembers

public void setApplicationMembers(List<Member> members)
Description copied from interface: LoadbalanceAlgorithm
Set the application members

Specified by:
setApplicationMembers in interface LoadbalanceAlgorithm
Parameters:
members - The application members

setEndpoints

public void setEndpoints(List<Endpoint> endpoints)
Description copied from interface: LoadbalanceAlgorithm
Set the endpoints

Specified by:
setEndpoints in interface LoadbalanceAlgorithm
Parameters:
endpoints - The endpoints

setLoadBalanceEndpoint

public void setLoadBalanceEndpoint(Endpoint endpoint)
Description copied from interface: LoadbalanceAlgorithm
Set the loadbalance endpoint

Specified by:
setLoadBalanceEndpoint in interface LoadbalanceAlgorithm
Parameters:
endpoint - the endpoint which uses this algorithm

getNextEndpoint

public Endpoint getNextEndpoint(MessageContext messageContext,
                                AlgorithmContext algorithmContext)
Description copied from interface: LoadbalanceAlgorithm
This method returns the next node according to the algorithm implementation.

Specified by:
getNextEndpoint in interface LoadbalanceAlgorithm
Parameters:
messageContext - SynapseMessageContext of the current message
algorithmContext - The context in which holds run time states related to the algorithm
Returns:
Next node for directing the message

getNextApplicationMember

public Member getNextApplicationMember(AlgorithmContext algorithmContext)
Description copied from interface: LoadbalanceAlgorithm
This method returns the next member to which the request has been sent to, according to the algorithm implementation.

Specified by:
getNextApplicationMember in interface LoadbalanceAlgorithm
Parameters:
algorithmContext - The context in which holds run time states related to the algorithm
Returns:
Next application member to which the request has to be sent to

reset

public void reset(AlgorithmContext algorithmContext)
Description copied from interface: LoadbalanceAlgorithm
Resets the algorithm to its initial position. Initial position depends on the implementation.

Specified by:
reset in interface LoadbalanceAlgorithm
Parameters:
algorithmContext - The context in which holds run time states related to the algorithm

getName

public String getName()
Description copied from interface: LoadbalanceAlgorithm
Return the name of the load balancing algorithm

Specified by:
getName in interface LoadbalanceAlgorithm
Returns:
the name of the algorithm implemented

clone

public LoadbalanceAlgorithm clone()
Specified by:
clone in interface LoadbalanceAlgorithm
Overrides:
clone in class Object

getEndpointCursor

public int getEndpointCursor()

getRoundsPerRecalculation

public int getRoundsPerRecalculation()

getCurrentRound

public int getCurrentRound()

getTotalWeight

public int getTotalWeight()

getTotalConnections

public int getTotalConnections()

init

public void init(SynapseEnvironment se)
Description copied from interface: ManagedLifecycle
This method should implement the initialization of the implemented parts of the configuration.

Specified by:
init in interface ManagedLifecycle
Parameters:
se - SynapseEnvironment to be used for initialization

destroy

public void destroy()
Description copied from interface: ManagedLifecycle
This method should implement the destroying of the implemented parts of the configuration.

Specified by:
destroy in interface ManagedLifecycle


Copyright © 2005-2012 Apache Software Foundation. All Rights Reserved.