Sign in

    moonbitstack/moonzero/shedder does not have a README file

    Shedder

    pub struct Shedder {
    core :
    Shedder

    clock :
    Clock

    usage : () -> Int64
    }

    Load shedding under pressure (← go-zero's load.AdaptiveShedder, wired from RestConf.CpuThreshold).

    A request is refused only when the server is hot, its CPU at or over threshold per-mille or recently so, and full, with more requests in flight than it has shown it can finish. The algorithm is moonward's Shedder; this binds it to a Clock and to usage, the CPU meter. Without a meter usage reads zero and nothing is shed, since no MoonBit backend can read one alone.

    Shedder::allow

    fn Shedder::allow(self : Shedder) -> Ticket?

    Ask to admit one request. Some ticket means go ahead, and the caller settles it when the request finishes; None means shed it.

    Shedder::new

    fn Shedder::new(clock :
    Clock
    , threshold? : Int64, usage? : () -> Int64) -> Shedder

    Shedder::usage

    fn Shedder::usage(self : Shedder) -> Int64

    The CPU usage the shedder is reading, per mille.

    Ticket

    An admitted request (← go-zero's load.Promise).

    Ticket::fail

    fn Ticket::fail(self : Ticket) -> Unit

    Ticket::pass

    fn Ticket::pass(self : Ticket) -> Unit

    The request succeeded; its duration counts towards the server's capacity.

    Source Files