akka.cluster

AccrualFailureDetector

class AccrualFailureDetector extends FailureDetector

Implementation of 'The Phi Accrual Failure Detector' by Hayashibara et al. as defined in their paper: [http://ddg.jaist.ac.jp/pub/HDY+04.pdf]

The suspicion level of failure is given by a value called φ (phi). The basic idea of the φ failure detector is to express the value of φ on a scale that is dynamically adjusted to reflect current network conditions. A configurable threshold is used to decide if φ is considered to be a failure.

The value of φ is calculated as:

? = -log10(1 - F(timeSinceLastHeartbeat)

where F is the cumulative distribution function of a normal distribution with mean and standard deviation estimated from historical heartbeat inter-arrival times.

Linear Supertypes
FailureDetector, AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. AccrualFailureDetector
  2. FailureDetector
  3. AnyRef
  4. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Instance Constructors

  1. new AccrualFailureDetector(system: ActorSystem, settings: ClusterSettings)

    Constructor that picks configuration from the settings.

  2. new AccrualFailureDetector(system: ActorSystem, threshold: Double, maxSampleSize: Int, minStdDeviation: Duration, acceptableHeartbeatPause: Duration, firstHeartbeatEstimate: Duration, clock: () ⇒ Long = AccrualFailureDetector.realClock)

    system

    Belongs to the akka.actor.ActorSystem. Used for logging.

    threshold

    A low threshold is prone to generate many wrong suspicions but ensures a quick detection in the event of a real crash. Conversely, a high threshold generates fewer mistakes but needs more time to detect actual crashes

    maxSampleSize

    Number of samples to use for calculation of mean and standard deviation of inter-arrival times.

    minStdDeviation

    Minimum standard deviation to use for the normal distribution used when calculating phi. Too low standard deviation might result in too much sensitivity for sudden, but normal, deviations in heartbeat inter arrival times.

    acceptableHeartbeatPause

    Duration corresponding to number of potentially lost/delayed heartbeats that will be accepted before considering it to be an anomaly. This margin is important to be able to survive sudden, occasional, pauses in heartbeat arrivals, due to for example garbage collect or network drop.

    firstHeartbeatEstimate

    Bootstrap the stats with heartbeats that corresponds to to this duration, with a with rather high standard deviation (since environment is unknown in the beginning)

    clock

    The clock, returning current time in milliseconds, but can be faked for testing purposes. It is only used for measuring intervals (duration).

Value Members

  1. final def !=(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  2. final def !=(arg0: Any): Boolean

    Definition Classes
    Any
  3. final def ##(): Int

    Definition Classes
    AnyRef → Any
  4. final def ==(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  5. final def ==(arg0: Any): Boolean

    Definition Classes
    Any
  6. val acceptableHeartbeatPause: Duration

    Duration corresponding to number of potentially lost/delayed heartbeats that will be accepted before considering it to be an anomaly.

    Duration corresponding to number of potentially lost/delayed heartbeats that will be accepted before considering it to be an anomaly. This margin is important to be able to survive sudden, occasional, pauses in heartbeat arrivals, due to for example garbage collect or network drop.

  7. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  8. val clock: () ⇒ Long

    The clock, returning current time in milliseconds, but can be faked for testing purposes.

    The clock, returning current time in milliseconds, but can be faked for testing purposes. It is only used for measuring intervals (duration).

  9. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  10. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  11. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  12. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  13. val firstHeartbeatEstimate: Duration

    Bootstrap the stats with heartbeats that corresponds to to this duration, with a with rather high standard deviation (since environment is unknown in the beginning)

  14. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  15. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  16. final def heartbeat(connection: Address): Unit

    Records a heartbeat for a connection.

    Records a heartbeat for a connection.

    Definition Classes
    AccrualFailureDetectorFailureDetector
    Annotations
    @tailrec()
  17. def isAvailable(connection: Address): Boolean

    Returns true if the connection is considered to be up and healthy and returns false otherwise.

    Returns true if the connection is considered to be up and healthy and returns false otherwise.

    Definition Classes
    AccrualFailureDetectorFailureDetector
  18. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  19. def isMonitoring(connection: Address): Boolean

    Returns true if the failure detector has received any heartbeats and started monitoring of the resource.

    Returns true if the failure detector has received any heartbeats and started monitoring of the resource.

    Definition Classes
    AccrualFailureDetectorFailureDetector
  20. val maxSampleSize: Int

    Number of samples to use for calculation of mean and standard deviation of inter-arrival times.

  21. val minStdDeviation: Duration

    Minimum standard deviation to use for the normal distribution used when calculating phi.

    Minimum standard deviation to use for the normal distribution used when calculating phi. Too low standard deviation might result in too much sensitivity for sudden, but normal, deviations in heartbeat inter arrival times.

  22. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  23. final def notify(): Unit

    Definition Classes
    AnyRef
  24. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  25. def phi(connection: Address): Double

    The suspicion level of the accrual failure detector.

    The suspicion level of the accrual failure detector.

    If a connection does not have any records in failure detector then it is considered healthy.

  26. final def remove(connection: Address): Unit

    Removes the heartbeat management for a connection.

    Removes the heartbeat management for a connection.

    Definition Classes
    AccrualFailureDetectorFailureDetector
    Annotations
    @tailrec()
  27. def reset(): Unit

    Removes all connections and starts over.

    Removes all connections and starts over.

    Definition Classes
    AccrualFailureDetectorFailureDetector
  28. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  29. val system: ActorSystem

    Belongs to the akka.actor.ActorSystem.

    Belongs to the akka.actor.ActorSystem. Used for logging.

  30. val threshold: Double

    A low threshold is prone to generate many wrong suspicions but ensures a quick detection in the event of a real crash.

    A low threshold is prone to generate many wrong suspicions but ensures a quick detection in the event of a real crash. Conversely, a high threshold generates fewer mistakes but needs more time to detect actual crashes

  31. def toString(): String

    Definition Classes
    AnyRef → Any
  32. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws()
  33. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws()
  34. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws()

Inherited from FailureDetector

Inherited from AnyRef

Inherited from Any

Ungrouped