DLQ we zäherli habarlary gaýtadan işlemek
"Dead Letter Queue" (DLQ) - bellenen synanyşyklardan soň ýa-da anyk tehniki/iş sebäpleri (galyp däl shema, wagt, wersiýalaryň gapma-garşylygy we ş.m.) sebäpli işgärler tarapyndan gaýtadan işlenip bilinmeýän habarlar üçin izolirlenen nobat/topik. Zäherli habar (poison message) - gaýtadan işlenmegi yzygiderli ýalňyşlyk bilen tamamlanýan we paýlaýnyň durnuklylygyna howp salýan ýazgy.
DLQ-nyň maksady: SLO-ny saklamak, şowsuzlygy lokallaşdyrmak, esasy akymyň petiklenmeginiň öňüni almak we derňewi we howpsuz gaýtadan oýnamak mümkinçiligini kepillendirmek.
1) Zäherli habarlar nireden gelýär
Shemalar/şertnamalar: gabat gelmeýän üýtgeşmeler, hökmany meýdanlar ýok, nädogry görnüşler.
Işewürlik tassyklamalary: dublikatlar, bozulan üýtgeşmeler, möhleti geçen wakalar.
Tertibi we sebäpleri: "Update" "Create" -den öň geldi, sypdyrylan korrelýasiýa, out-of-order.
Idempotentlik: gaýtadan işlemek zyýanly täsirleri döredýär.
Daşarky garaşlylyk: çäkli çäkler/wagtlar, API elýeterliligi.
Maglumatlar: peýdaly ýüküň korrupsiýasy, nädogry kodlaşdyrma, ululykdan artyk.
2) DLQ-e ibermegiň ölçegleri
Bir ýa-da birnäçe şert ýerine ýetirilen halatynda habar DLQ-e düşýär:- Konsumerde/workerde maxAttempts gaýtadan işlenildi.
- Ýalňyşlyk düzedip bolmajak (retryable) hökmünde klassifikasiýa edildi: galid däl shema, möhüm çeşmäniň ýoklugy, iş gadaganlygy.
- Habar satuwy gutardy (TTL/expiration).
- Bu açar/tenant üçin circuit breaker ýa-da admission control syýasaty işledi.
- Operatoryň aýdyň çözgüdi (esasy akymdan "eject" el bilen).
3) DLQ topologiýalary we patternleri
Per-queue DLQ: her nobatyň/topikanyň öz DLQ bar. Ýönekeý we aç-açan.
Central DLQ (parking lot): çylşyrymly ýagdaýlar üçin umumy "awtoulag duralgasy", ýeke-täk derňew gurallary üçin amatly.
DLT (Dead Letter Topic): log-ugrukdyrylan tekerler üçin (event log) - şowsuzlygyň sebäpleriniň meta-maglumatlary bolan aýratyn topik.
Quarantine: gaty elýeterli we el bilen seljermek üçin PII arassalaýjy karantin buferi.
Shadow-stream: problemaly habarlary "kölege" -e goşmak.
4) DLQ-ni ugratmaga borçly meta-maglumatlar
Iň az toplumy:- Şowsuzlygyň sebäbi: kod/ýalňyşlyk synpy, stack/trace id.
- Retraýlaryň mazmuny: 'attempt', 'maxAttempts', 'first _ seen _ ts', 'last _ attempt _ ts'.
- Baglanyşyk: 'trace _ id', 'span _ id', 'tenant _ id', 'entity _ id', partilýasiýa açary.
- Asyl offset/partition/sequence (log tekerleri üçin) ýa-da message-id.
- Peýdaly ýüküň şertnamasy/shemasy/görnüşi.
- Idempotency-key/Request-id (bar bolsa).
- Ugrukdyryş çeşmesi: nobatyň/topikanyň ady, konsumer topary.
5) DLQ çenli retraý syýasaty
DLQ-e ibermezden ozal dogry synanyşyklary ulanyň:- Gysga retralar: 'maxAttempts' 2-5, exponential backoff + jitter, caps on concurrency.
- Kooperatiw backpressure: ýalňyşlyklar köpelende bäsdeşligi azaltmak.
- Hatalaryň klassifikasiýasy: retryable ('5xx', wagt) vs non-retryable (валидация, shema mismatch).
- Gijikdirilen nobatlar (delay queue): 5s → 30s → 2m wagtlaýyn şowsuzlyklar üçin.
- Per-key izolýasiýa: belli bir açar "şowhunly" bolsa, ähli partiýany blokirlemäň.
6) Howpsuz redaktirleme (DLQ-den gaýtadan eltip bermek)
Redrave - bu DLQ-den gaýtadan işlemäge iberilen habarlaryň gözegçilik astynda yzyna gaýtarylmagy.
Ýörelgeler:1. Fiks barlagy: diňe kod/konfigurasiýa/shema düzedilenden ýa-da daşarky garaşlylyk dikeldilenden soň redrave.
2. Idempotentlik: prosessorlar gaýtalanmaga çydamly bolmaly (upsert, effekt-tolurant amallary).
3. Göçürme: 'idempotency _ key '/' message _ id '/' business _ key'.
4. Doza we penjireler: N habar boýunça batches, redrave boýunça rate-limit, wagt/partiýa boýunça "penjireler".
5. Lokal tassyklama: okalmazdan ozal shemany çalt barlamak (irki galid däl ýagdaýlary).
6. Prioritet: redrave azyk traffigini çalyşmaly däldir (workerleriň pes prioriteti/aýratyn howuz).
7. Syn edilişi: redrave üçin aýratyn metrikler we treýslar; netijeler barada hasabat (üstünlik/gaýtalanýan DLQ/ýitgi).
7) Eltip bermegiň semantikasy we tertibi
At-least-once - iň köp ýaýran re modeim: idempotentlik we duplikasiýa zerur.
At-most-once - DLQ öçürilip bilner; ýitirmek töwekgelçiligi. Diňe ýol berlen ýitgiler üçin ulanyň.
Exactly-once (täsirli): amallar we işewürlik ammary bilen gazanylýar; gymmat we aýratyn.
Tertip: DLQ, adatça, belli bir açar/partiýa üçin tertibi bozýar. Eger tertip möhüm bolsa, açar boýunça we yzygiderli redaktirläň.
8) Shemalar, şertnamalar we tassyklama
Schema registry/kontraktlar: anyk wersiýa, backward/forward-gabat gelmek bilen ewolýusiýa.
Giriş tassyklamasy: JSON Schema/Protobuf/Euro arkaly kyn ädimlerden öň arzan barlag.
Gabat gelmezlik syýasaty: "döwýän" meýdanda - derrew 'SCHEMA _ INCOMPATIBLE' kody bilen DLQ-de.
Redaction PII: DLQ-de diňe zerur zatlary saklaň; duýgur meýdanlary gizläň.
9) Idempotentlik we de-duplikasiýa
Idempotency-key: prodýuserde "iş manysyndan" (tenant + entity + operation + ts-bucket) emele getiriň.
Dap magazinesurnallary: TTL bilen iň soňky 'N' açarlaryny saklaň; amalyň "täsirini" ýatda saklaň.
Upsert/merge: çäklendirmesiz "insert-only" -dan gaça duruň.
Side effektleri: daşarky jaňlar üçin - jaň etmezden ozal "gaýtalanmagy" ýazga alyň we barlaň.
10) Synlamak we SLO
Metrikler (/tenant/açar):- DLQ rate (msg/s), habarlaryň paýy, DLQ-de orta/orta "ýaş".
- Redrave üstünligi (%), gaýtalanýan DLQ paýy.
- Sebäpleriň klassifikasiýasy: schema, validation, timeout, dependency, unknown.
- p95/p99 esasy akymy gaýtadan işlemegiň gizlinligi.
- DLQ möçberi, aşa köp bolmagy töwekgelçiligi.
- Hökmany bellikler: 'message _ id', 'entity _ id', 'tenant _ id', 'attempt', 'reason', 'redrive _ batch _ id'.
- "DLQ şahasy": çeşmeden täzeden üstünlik gazanmak.
- Üstünlikli işlenilen habarlaryň paýy ≥ T minutda X%.
- DLQ-kazyýet üçin derňewiň we düzedişiň wagty ≤ Y sagat.
- Habaryň iň ýokary "ýaşy" DLQ ≤ Z sagatda (alert bilen).
11) Howpsuzlyk we laýyklyk
Iň az artykmaçlyklar ýörelgesi boýunça elýeterlilik: redrave - diňe operatorlara/playbuklara.
Audit: meta-maglumatlary kim we haçan redaktirledi/aýyrdy/redaktirledi.
Arassalamak: merkezi DLQ-e geçirilende goşmaça PII/syrlary aýyryň.
Retention: DLQ üçin aýratyn saklamak möhletleri we aýyrmak syýasaty.
12) Köp tenantlyk
Tags 'tenant _ id/plan': limitleri, redrave ileri tutulýan ugurlary, hasabatlary tapawutlandyryň.
Per-tenant DLQ ýa-da partiýa: "şowhunly" müşderi umumy DLQ-ni gol salmazlygy üçin.
Billing/kwotalar: DLQ-iň mukdaryny we ulanyşdaky gaýtadan ýazmagyň bahasyny göz öňünde tutuň.
13) Konfigurasiýa şablonlary (mysal)
yaml consumer:
max_attempts: 4 backoff:
strategy: exponential_full_jitter initial_ms: 200 max_ms: 5000 classify_errors:
retryable: [TIMEOUT, DEP_UNAVAILABLE, 5xx]
nonretryable:[SCHEMA_INCOMPATIBLE, VALIDATION_FAILED, DUPLICATE]
concurrency_caps:
per_partition: 8 per_tenant: 50
dlq:
type: topic name: myapp. events. dlq metadata:
include: [reason, stack, attempt, first_seen_ts, last_attempt_ts, schema_version,
tenant_id, entity_id, trace_id, source_topic, partition, offset]
retention_hours: 168 pii_redaction: true
redrive:
mode: batch batch_size: 500 rate_limit_per_sec: 50 priority: low validate_schema_before_redrive: true idempotency:
dedup_ttl_hours: 24 ordering:
by_key: true
14) Iş pleýboklary (runbooks)
1. DLQ-iň anomal ösüşi: mahabat konsumerini açmak, esasy sebäpleri seljermek, goýberilişleri/shemalary barlamak.
2. Shema mismatch: shemanyň yza çekilmegi/düzedilmegi, adapteriň göçmegi, barlagdan soň redrive.
3. Daşarky garaşlylyk elýeterli däl: retraýlary duruzmak, dikeldilenden soň delay-nobaty, redrive açmak.
4. Täzeden ýazylandan soň gaýtalanýan DLQ: "kölegeli" işläp taýýarlaýjyny/simulýatory açmak, idempotentligi barlamak, batch daratmak.
5. DLQ-iň aşa köp bolmagy: arhiw-storage-a ewakuasiýa, açarlar/sebäpler boýunça saýlama redaktirlemegi öz içine alýar.
15) Synag we bulam-bujarlyk
Ýalňyşlyklary sanjym etmek: schema-break, walidasiýa, wagt, 1-on-N "ýelmeşýän" ýalňyşlyklar.
Köpçülikleýin redaktirleme: dozany we önüme täsirini barlamak.
Out-of-order yzygiderliligi: ensure açarlary boýunça dogry gaýtadan işlemek.
Peýdaly ýüküň korrupsiýasy: tassyklama we ygtybarly şowsuzlyk.
Redrave worker ýykylandan soň dikeldiş: batch amallarynyň idempotentligi.
16) Adaty ýalňyşlyklar
DLQ → -da meta-maglumatlaryň ýoklugy sebäpleri toplamak we howpsuz aýyrmak mümkin däl.
Çäklendirmesiz köpçülikleýin redaktirleme → önümçiligiň gaýtadan pese gaçmagy.
Biperwaýlyk/dadup → goşa we zyýanly täsirleri ýok.
PII-ni arassalamazdan merkezi DLQ-e garyşdyrmak.
Shemalaryň/şertnamalaryň ýoklugy → Habarlaryň ewolýusiýasynda "garaşylmadyk ýagdaýlar".
Tenantlar/açarlar boýunça partiýa goýmazdan ýeke-täk DLQ.
Nädogry ýalňyşlyklar üçin irki DLQ-iň ýerine tükeniksiz retrailer.
17) Çalt reseptler
Adaty iş akymy: 3-4 synanyşyk, jitter bilen eksponensial backoff, ýalňyşlyklaryň irki klassifikasiýasy, doly meta-maglumatlar bilen DLQ.
Möhüm wakalar (töleg): berk idempotentlik, gysga wagt, iň az synanyşyk, çalt DLQ we el bilen seljerme.
Fiksden soň köpçülikleýin redaktirleme: small batches (100-500), rate-limit, aýratyn worker howzy, tizligi ýokarlandyrmazdan ozal 95% üstünlige gözegçilik.
Multi-tenant: redrave üçin per-tenant çäkleri, DLQ-iň top-müşderileri-generatorlary boýunça hasabat.
Netije
DLQ "zibil sebedi" däl-de, gözegçilik edilýän ygtybarlylyk konturydyr. Urmagyň aç-açan düzgünleri, baý meta maglumatlar, idempotentlik we de-duplikasiýa, howpsuz dozaly redrave, shemalaryň tertibi we syn edilmegi zäherli habarlary SLO üçin howpdan dolandyrylýan in engineeringenerçilik prosesine öwürýär - düşnükli pleýbuklar, çak edilýän çykdajylar we ulanyjylara iň az täsir.