Struct tower::load::peak_ewma::PeakEwma[][src]

pub struct PeakEwma<S, C = CompleteOnResponse> { /* fields omitted */ }
This is supported on crate feature 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

impl<S, C> PeakEwma<S, C>[src]

pub fn new(
    service: S,
    default_rtt: Duration,
    decay_ns: f64,
    completion: C
) -> Self
[src]

Wraps an S-typed service so that its load is tracked by the EWMA of its peak latency.

Trait Implementations

impl<S: Debug, C: Debug> Debug for PeakEwma<S, C>[src]

fn fmt(&self, f: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. Read more

impl<S, C> Load for PeakEwma<S, C>[src]

type Metric = Cost

A comparable load metric. Read more

fn load(&self) -> Self::Metric[src]

Estimate the service’s current load.

impl<S, C, Request> Service<Request> for PeakEwma<S, C> where
    S: Service<Request>,
    C: TrackCompletion<Handle, S::Response>, 
[src]

type Response = C::Output

Responses given by the service.

type Error = S::Error

Errors produced by the service.

type Future = TrackCompletionFuture<S::Future, C, Handle>

The future response value.

fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>>[src]

Returns Poll::Ready(Ok(())) when the service is able to process requests. Read more

fn call(&mut self, req: Request) -> Self::Future[src]

Process the request and return the response asynchronously. Read more

Auto Trait Implementations

impl<S, C> RefUnwindSafe for PeakEwma<S, C> where
    C: RefUnwindSafe,
    S: RefUnwindSafe

impl<S, C> Send for PeakEwma<S, C> where
    C: Send,
    S: Send

impl<S, C> Sync for PeakEwma<S, C> where
    C: Sync,
    S: Sync

impl<S, C> Unpin for PeakEwma<S, C> where
    C: Unpin,
    S: Unpin

impl<S, C> UnwindSafe for PeakEwma<S, C> where
    C: UnwindSafe,
    S: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T> Instrument for T[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]

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T, Request> ServiceExt<Request> for T where
    T: Service<Request> + ?Sized
[src]

fn ready(&mut self) -> Ready<'_, Self, Request>

Notable traits for Ready<'a, T, Request>

impl<'a, T, Request> Future for Ready<'a, T, Request> where
    T: Service<Request>, 
type Output = Result<&'a mut T, T::Error>;
where
    Self: Sized
[src]

This is supported on crate feature 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]

👎 Deprecated since 0.4.6:

please use the ServiceExt::ready method instead

This is supported on crate feature 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]

This is supported on crate feature util only.

Yields the service when it is ready to accept a request.

fn oneshot(self, req: Request) -> Oneshot<Self, Request>

Notable traits for Oneshot<S, Req>

impl<S, Req> Future for Oneshot<S, Req> where
    S: Service<Req>, 
type Output = Result<S::Response, S::Error>;
where
    Self: Sized
[src]

This is supported on crate feature 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]

This is supported on crate feature util only.

Process all requests from the given Stream, and produce a Stream of their responses. Read more

fn and_then<F>(self, f: F) -> AndThen<Self, F> where
    Self: Sized,
    F: Clone
[src]

This is supported on crate feature 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]

This is supported on crate feature 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]

This is supported on crate feature 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]

This is supported on crate feature 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]

This is supported on crate feature 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]

This is supported on crate features util and filter only.

Composes this service with a Filter that conditionally accepts or rejects requests based on a predicate. Read more

fn filter_async<F, NewRequest>(self, filter: F) -> AsyncFilter<Self, F> where
    Self: Sized,
    F: AsyncPredicate<NewRequest>, 
[src]

This is supported on crate features 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]

This is supported on crate feature 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]

This is supported on crate feature util only.

Composes a function that transforms futures produced by the service. Read more

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 

pub fn vzip(self) -> V