Část 14 z 16 · Den 2 · retry, DLQ, backpressure

Fronta roste a nikdo neví proč

Problém a zkušenost

Fronta roste a nikdo neví proč

Pomalá služba nebo špička a fronta roste. Odesílatel dál posílá. Bez metrik to zjistíme od klienta.

  1. Odesílatelrychle
  2. Frontabacklog roste
  3. Pomalá služba
  4. Klient čeká

Zkušenost z praxeJak se u vás dozvíte, že se něco hromadí, dřív než zavolá klient?

TakeawayBez pozorování zjistíme problém až ve chvíli, kdy ho vidí klient.

Více k tématu

Co to znamená

Backlog je počet zpráv, které čekají na zpracování. Backpressure je způsob, jak odesílateli říct, ať zpomalí.

Proč to používáme

Odesílatel nesmí donekonečna zahlcovat příjemce.

Kdy to dává smysl

U každého asynchronního spojení.

Kde se to láme

  • Neomezená fronta.
  • Zpracování staré zprávy bez kontroly, že je platná.
  • Žádná metrika stáří nejstarší zprávy.

Představme si

Disbursement je hodinu offline. Žádosti čekají ve frontě a nikdo o tom neví.

Co nevidíme, to neumíme opravit.

Princip, aplikace a cvičení

Retry, DLQ, backpressure a pozorovatelnost

Opakujeme s rostoucí pauzou, trvalé chyby odkládáme do DLQ a zátěž omezujeme. A vidíme, co se děje.

Odolnost

  1. Retrybackoff
  2. DLQpo vyčerpání
  3. Backpressurelimit fronty
  4. Timeoutu kroků procesu

Pozorovatelnost

  1. Délka fronty
  2. Stáří nejstarší zprávy
  3. Počet v DLQ
  4. Trasování podle correlationId

Trade-offRetry může službu přetížit (retry bouře), limity zvyšují latenci a metriky vyžadují péči a dashboardy, na které se někdo dívá.

TakeawayAsynchronní doručení výpadek přežije. Timeout, idempotence a metriky hlídají to, co z něj zbude.

Více k tématu

Co to znamená

Služba je offline, zprávy čekají. Po návratu je zpracuje. Process Manager po timeoutu požadavek zopakuje a idempotence zabrání dvojímu účinku.

Proč to používáme

Odesílatel nemusí o výpadku vědět. Provoz musí vědět.

Kdy to dává smysl

Kdykoli příjemce nemusí odpovědět okamžitě.

Kde se to láme

  • Retry bouře a chybějící jitter.
  • Timeout bez idempotence: dvojí výplata.
  • Nemonitorovaný backlog a DLQ.

Představme si

Disbursement je offline. Žádosti čekají, služba naběhne, zpracuje frontu a vyplatí každou hypotéku jednou.

Dobrý systém výpadek přežije. Ten nejlepší si ho ani nevšimne.

Školení pro váš tým

Chcete školení pro svůj tým?

Školení vedeme na vašem kódu a vašem doménovém problému. Domluvíme rozsah, termín a formu.

Probrat školení