Čá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.
- Odesílatelrychle
- Frontabacklog roste
- Pomalá služba
- 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
- Retrybackoff
- DLQpo vyčerpání
- Backpressurelimit fronty
- Timeoutu kroků procesu
Pozorovatelnost
- Délka fronty
- Stáří nejstarší zprávy
- Počet v DLQ
- 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í →