Issue a backup request after a threshold time has elapsed, useful
for curtailing tail latencies in distributed systems. See [1] for details.
Several stats are exported through the given stats receiver exposing
the filter's operating behavior:
counter timeouts indicates the number of original requests
that timed out and subsequently caused a backup request to
be issued;
counter won indicates the number of original requests that won,
including those that didn't actually race with a backup;
counter lost indicates the number of original requests that lost
a race with their corresponding backup request, and finally
gauge cutoff_ms indicates the current backup request cutoff value
in milliseconds.
[1]: Dean, J. and Barroso, L.A. (2013), The Tail at Scale,
Communications of the ACM, Vol. 56 No. 2, Pages 74-80,
http://cacm.acm.org/magazines/2013/2/160173-the-tail-at-scale/fulltext
Note
A filter alone cannot guarantee that a request is dispatched
onto a different endpoint from the original. Eventually, this
should be implemented as a sort of queueing policy.
,
Care must be taken to ensure that application of this filter
preserves semantics since a request may be issued twice (ie. they
are idempotent).
Issue a backup request after a threshold time has elapsed, useful for curtailing tail latencies in distributed systems. See [1] for details.
Several stats are exported through the given stats receiver exposing the filter's operating behavior:
timeouts
indicates the number of original requests that timed out and subsequently caused a backup request to be issued;won
indicates the number of original requests that won, including those that didn't actually race with a backup;lost
indicates the number of original requests that lost a race with their corresponding backup request, and finallycutoff_ms
indicates the current backup request cutoff value in milliseconds.[1]: Dean, J. and Barroso, L.A. (2013), The Tail at Scale, Communications of the ACM, Vol. 56 No. 2, Pages 74-80, http://cacm.acm.org/magazines/2013/2/160173-the-tail-at-scale/fulltext
A filter alone cannot guarantee that a request is dispatched onto a different endpoint from the original. Eventually, this should be implemented as a sort of queueing policy.
,Care must be taken to ensure that application of this filter preserves semantics since a request may be issued twice (ie. they are idempotent).