GH GambleHub

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.
Giriş/söwda:
  • Hökmany bellikler: 'message _ id', 'entity _ id', 'tenant _ id', 'attempt', 'reason', 'redrive _ batch _ id'.
  • "DLQ şahasy": çeşmeden täzeden üstünlik gazanmak.
SLO:
  • Ü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.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Telegram
@Gamble_GC
Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.