com.netflix.loadbalancer
Class LoadBalancerStats

java.lang.Object
  extended by com.netflix.loadbalancer.LoadBalancerStats

public class LoadBalancerStats
extends java.lang.Object

Class that acts as a repository of operational charateristics and statistics of every Node/Server in the LaodBalancer. This information can be used to just observe and understand the runtime behavior of the loadbalancer or more importantly for the basis that determines the loadbalacing strategy


Constructor Summary
LoadBalancerStats(java.lang.String name)
           
 
Method Summary
 void addServer(Server server)
           
 void clearSuccessiveConnectionFailureCount(Server server)
           
 void decrementActiveRequestsCount(Server server)
           
 int getActiveRequestsCount(java.lang.String zone)
           
 double getActiveRequestsPerServer(java.lang.String zone)
           
 java.util.Set<java.lang.String> getAvailableZones()
           
 int getCircuitBreakerTrippedCount()
           
 int getCircuitBreakerTrippedCount(java.lang.String zone)
           
 int getCongestionRatePercentage(java.lang.String zone)
           
 int getInstanceCount(java.lang.String zone)
           
 long getMeasuredZoneHits(java.lang.String zone)
           
 java.lang.String getName()
           
 java.util.Map<Server,ServerStats> getServerStats()
          returns map of Stats for all servers
 ServerStats getSingleServerStat(Server server)
           
 ZoneSnapshot getZoneSnapshot(java.util.List<? extends Server> servers)
          This is the core function to get zone stats.
 ZoneSnapshot getZoneSnapshot(java.lang.String zone)
           
 java.util.Map<java.lang.String,ZoneStats> getZoneStats()
           
 void incrementActiveRequestsCount(Server server)
           
 void incrementNumRequests(Server server)
           
 void incrementSuccessiveConnectionFailureCount(Server server)
           
 void incrementZoneCounter(Server server)
           
 boolean isCircuitBreakerTripped(Server server)
           
 void noteResponseTime(Server server, double msecs)
          Method that updates the internal stats of Response times maintained on a per Server basis
 void setName(java.lang.String name)
           
 java.lang.String toString()
           
 void updateServerList(java.util.List<Server> servers)
          The caller o this class is tasked to call this method every so often if the servers participating in the LoadBalancer changes
 void updateZoneServerMapping(java.util.Map<java.lang.String,java.util.List<Server>> map)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

LoadBalancerStats

public LoadBalancerStats(java.lang.String name)
Method Detail

getName

public java.lang.String getName()

setName

public void setName(java.lang.String name)

updateServerList

public void updateServerList(java.util.List<Server> servers)
The caller o this class is tasked to call this method every so often if the servers participating in the LoadBalancer changes

Parameters:
servers -

addServer

public void addServer(Server server)

noteResponseTime

public void noteResponseTime(Server server,
                             double msecs)
Method that updates the internal stats of Response times maintained on a per Server basis

Parameters:
server -
msecs -

incrementActiveRequestsCount

public void incrementActiveRequestsCount(Server server)

decrementActiveRequestsCount

public void decrementActiveRequestsCount(Server server)

isCircuitBreakerTripped

public boolean isCircuitBreakerTripped(Server server)

incrementSuccessiveConnectionFailureCount

public void incrementSuccessiveConnectionFailureCount(Server server)

clearSuccessiveConnectionFailureCount

public void clearSuccessiveConnectionFailureCount(Server server)

incrementNumRequests

public void incrementNumRequests(Server server)

incrementZoneCounter

public void incrementZoneCounter(Server server)

updateZoneServerMapping

public void updateZoneServerMapping(java.util.Map<java.lang.String,java.util.List<Server>> map)

getInstanceCount

public int getInstanceCount(java.lang.String zone)

getActiveRequestsCount

public int getActiveRequestsCount(java.lang.String zone)

getActiveRequestsPerServer

public double getActiveRequestsPerServer(java.lang.String zone)

getZoneSnapshot

public ZoneSnapshot getZoneSnapshot(java.lang.String zone)

getZoneSnapshot

public ZoneSnapshot getZoneSnapshot(java.util.List<? extends Server> servers)
This is the core function to get zone stats. All stats are reported to avoid going over the list again for a different stat.

Parameters:
servers -
Returns:

getCircuitBreakerTrippedCount

public int getCircuitBreakerTrippedCount(java.lang.String zone)

getCircuitBreakerTrippedCount

@Monitor(name="LBStats_CircuitBreakerTrippedCount",
         type=GAUGE)
public int getCircuitBreakerTrippedCount()

getMeasuredZoneHits

public long getMeasuredZoneHits(java.lang.String zone)

getCongestionRatePercentage

public int getCongestionRatePercentage(java.lang.String zone)

getAvailableZones

@Monitor(name="LBStats_AvailableZones",
         type=INFORMATIONAL)
public java.util.Set<java.lang.String> getAvailableZones()

getSingleServerStat

public ServerStats getSingleServerStat(Server server)

getServerStats

public java.util.Map<Server,ServerStats> getServerStats()
returns map of Stats for all servers

Returns:

getZoneStats

public java.util.Map<java.lang.String,ZoneStats> getZoneStats()

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object