Struct tower::load::peak_ewma::PeakEwma [−][src]
pub struct PeakEwma<S, C = CompleteOnResponse> { /* fields omitted */ }
load
only.Expand description
Measures the load of the underlying service using Peak-EWMA load measurement.
PeakEwma
implements Load
with the Cost
metric that estimates the amount of
pending work to an endpoint. Work is calculated by multiplying the
exponentially-weighted moving average (EWMA) of response latencies by the number of
pending requests. The Peak-EWMA algorithm is designed to be especially sensitive to
worst-case latencies. Over time, the peak latency value decays towards the moving
average of latencies to the endpoint.
When no latency information has been measured for an endpoint, an arbitrary default RTT of 1 second is used to prevent the endpoint from being overloaded before a meaningful baseline can be established..
Note
This is derived from Finagle, which is distributed under the Apache V2 license. Copyright 2017, Twitter Inc.
Implementations
Trait Implementations
impl<S, C, Request> Service<Request> for PeakEwma<S, C> where
S: Service<Request>,
C: TrackCompletion<Handle, S::Response>,
[src]
impl<S, C, Request> Service<Request> for PeakEwma<S, C> where
S: Service<Request>,
C: TrackCompletion<Handle, S::Response>,
[src]Auto Trait Implementations
impl<S, C> RefUnwindSafe for PeakEwma<S, C> where
C: RefUnwindSafe,
S: RefUnwindSafe,
C: RefUnwindSafe,
S: RefUnwindSafe,
impl<S, C> Send for PeakEwma<S, C> where
C: Send,
S: Send,
C: Send,
S: Send,
impl<S, C> Sync for PeakEwma<S, C> where
C: Sync,
S: Sync,
C: Sync,
S: Sync,
impl<S, C> Unpin for PeakEwma<S, C> where
C: Unpin,
S: Unpin,
C: Unpin,
S: Unpin,
impl<S, C> UnwindSafe for PeakEwma<S, C> where
C: UnwindSafe,
S: UnwindSafe,
C: UnwindSafe,
S: UnwindSafe,
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]pub fn borrow_mut(&mut self) -> &mut T
[src]
pub fn borrow_mut(&mut self) -> &mut T
[src]Mutably borrows from an owned value. Read more
impl<T> Instrument for T
[src]
impl<T> Instrument for T
[src]fn instrument(self, span: Span) -> Instrumented<Self>
[src]
fn instrument(self, span: Span) -> Instrumented<Self>
[src]Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
fn in_current_span(self) -> Instrumented<Self>
[src]
fn in_current_span(self) -> Instrumented<Self>
[src]impl<T, Request> ServiceExt<Request> for T where
T: Service<Request> + ?Sized,
[src]
impl<T, Request> ServiceExt<Request> for T where
T: Service<Request> + ?Sized,
[src]fn ready(&mut self) -> Ready<'_, Self, Request>ⓘ where
Self: Sized,
[src]
fn ready(&mut self) -> Ready<'_, Self, Request>ⓘ where
Self: Sized,
[src]util
only.Yields a mutable reference to the service when it is ready to accept a request.
fn ready_and(&mut self) -> ReadyAnd<'_, Self, Request> where
Self: Sized,
[src]
fn ready_and(&mut self) -> ReadyAnd<'_, Self, Request> where
Self: Sized,
[src]please use the ServiceExt::ready
method instead
util
only.Yields a mutable reference to the service when it is ready to accept a request.
fn ready_oneshot(self) -> ReadyOneshot<Self, Request>ⓘNotable traits for ReadyOneshot<T, Request>
impl<T, Request> Future for ReadyOneshot<T, Request> where
T: Service<Request>, type Output = Result<T, T::Error>;
where
Self: Sized,
[src]
fn ready_oneshot(self) -> ReadyOneshot<Self, Request>ⓘNotable traits for ReadyOneshot<T, Request>
impl<T, Request> Future for ReadyOneshot<T, Request> where
T: Service<Request>, type Output = Result<T, T::Error>;
where
Self: Sized,
[src]util
only.Yields the service when it is ready to accept a request.
fn oneshot(self, req: Request) -> Oneshot<Self, Request>ⓘ where
Self: Sized,
[src]
fn oneshot(self, req: Request) -> Oneshot<Self, Request>ⓘ where
Self: Sized,
[src]util
only.Consume this Service
, calling with the providing request once it is ready.
fn call_all<S>(self, reqs: S) -> CallAll<Self, S> where
Self: Sized,
Self::Error: Into<BoxError>,
S: Stream<Item = Request>,
[src]
fn call_all<S>(self, reqs: S) -> CallAll<Self, S> where
Self: Sized,
Self::Error: Into<BoxError>,
S: Stream<Item = Request>,
[src]util
only.fn and_then<F>(self, f: F) -> AndThen<Self, F> where
Self: Sized,
F: Clone,
[src]
fn and_then<F>(self, f: F) -> AndThen<Self, F> where
Self: Sized,
F: Clone,
[src]util
only.Executes a new future after this service’s future resolves. This does
not alter the behaviour of the poll_ready
method. Read more
fn map_response<F, Response>(self, f: F) -> MapResponse<Self, F> where
Self: Sized,
F: FnOnce(Self::Response) -> Response + Clone,
[src]
fn map_response<F, Response>(self, f: F) -> MapResponse<Self, F> where
Self: Sized,
F: FnOnce(Self::Response) -> Response + Clone,
[src]util
only.Maps this service’s response value to a different value. This does not
alter the behaviour of the poll_ready
method. Read more
fn map_err<F, Error>(self, f: F) -> MapErr<Self, F> where
Self: Sized,
F: FnOnce(Self::Error) -> Error + Clone,
[src]
fn map_err<F, Error>(self, f: F) -> MapErr<Self, F> where
Self: Sized,
F: FnOnce(Self::Error) -> Error + Clone,
[src]util
only.Maps this service’s error value to a different value. This does not
alter the behaviour of the poll_ready
method. Read more
fn map_result<F, Response, Error>(self, f: F) -> MapResult<Self, F> where
Self: Sized,
Error: From<Self::Error>,
F: FnOnce(Result<Self::Response, Self::Error>) -> Result<Response, Error> + Clone,
[src]
fn map_result<F, Response, Error>(self, f: F) -> MapResult<Self, F> where
Self: Sized,
Error: From<Self::Error>,
F: FnOnce(Result<Self::Response, Self::Error>) -> Result<Response, Error> + Clone,
[src]util
only.Maps this service’s result type (Result<Self::Response, Self::Error>
)
to a different value, regardless of whether the future succeeds or
fails. Read more
fn map_request<F, NewRequest>(self, f: F) -> MapRequest<Self, F> where
Self: Sized,
F: FnMut(NewRequest) -> Request + Clone,
[src]
fn map_request<F, NewRequest>(self, f: F) -> MapRequest<Self, F> where
Self: Sized,
F: FnMut(NewRequest) -> Request + Clone,
[src]util
only.Composes a function in front of the service. Read more
fn filter<F, NewRequest>(self, filter: F) -> Filter<Self, F> where
Self: Sized,
F: Predicate<NewRequest>,
[src]
fn filter<F, NewRequest>(self, filter: F) -> Filter<Self, F> where
Self: Sized,
F: Predicate<NewRequest>,
[src]util
and filter
only.fn filter_async<F, NewRequest>(self, filter: F) -> AsyncFilter<Self, F> where
Self: Sized,
F: AsyncPredicate<NewRequest>,
[src]
fn filter_async<F, NewRequest>(self, filter: F) -> AsyncFilter<Self, F> where
Self: Sized,
F: AsyncPredicate<NewRequest>,
[src]util
and filter
only.Composes this service with an AsyncFilter
that conditionally accepts or
rejects requests based on an [async predicate]. Read more
fn then<F, Response, Error, Fut>(self, f: F) -> Then<Self, F> where
Self: Sized,
Error: From<Self::Error>,
F: FnOnce(Result<Self::Response, Self::Error>) -> Fut + Clone,
Fut: Future<Output = Result<Response, Error>>,
[src]
fn then<F, Response, Error, Fut>(self, f: F) -> Then<Self, F> where
Self: Sized,
Error: From<Self::Error>,
F: FnOnce(Result<Self::Response, Self::Error>) -> Fut + Clone,
Fut: Future<Output = Result<Response, Error>>,
[src]util
only.Composes an asynchronous function after this service. Read more
fn map_future<F, Fut, Response, Error>(self, f: F) -> MapFuture<Self, F> where
Self: Sized,
F: FnMut(Self::Future) -> Fut,
Error: From<Self::Error>,
Fut: Future<Output = Result<Response, Error>>,
[src]
fn map_future<F, Fut, Response, Error>(self, f: F) -> MapFuture<Self, F> where
Self: Sized,
F: FnMut(Self::Future) -> Fut,
Error: From<Self::Error>,
Fut: Future<Output = Result<Response, Error>>,
[src]util
only.Composes a function that transforms futures produced by the service. Read more
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,