AiHummer
Türkmençe
Gir
v1.0.x
{ }Swagger

Eltip bermek, outbox we dikeldiş

v1.0.x · täzelendi 2026-06-26

Turn tamamlananda, jogap entek geljek kanalyna ýetmeli — ygtybarly we dogry bir gezek. AiHummer muny tranzaksion outbox, idempotent gapdal täsirler we gaýtadan başlanyndan soň turn dikeldişi bilen çözýär. Has uly gurnamalar üçin islege görä NATS şinasy eltip bermegi göterip biler.

Kepillendirilen eltip bermek

Jogap turnyň ahyrynda göni iberilmeýär. Onuň ýerine ol ony öndüren işiň bir bölegi hökmünde outboxda nobata goýulýar, soňra eltip beriş işçisi ony alýar we geljek kanalyna iberýär. Jogap çykmazdan ozal durnukly ýazgy edilýändigi üçin, “jogap öndürildi” we “jogap iberildi” aralygyndaky döwülme ony ýitirip bilmeýär — gaýtadan başlanda outbox ýazgysy henizem bardyr we eltip bermek dowam edýär.

turn produces reply
   └─▶ enqueue in outbox (durable)
         └─▶ delivery worker ─▶ originating channel
               └─ acknowledged ─▶ marked delivered

Eltip bermek idempotentlik bilen jübütlenip, bu iň azyndan bir gezek işçisi dogry bir gezek daşky özüni alyp baryşy berýär: dikeldişe durnukly defter açary we gapdal täsir päsgelçiligi gaýtadan iberilen ýa-da gaýtadan oýnalan jogabyň kanala diňe bir gezek iberilmegini üpjün edýär (serediň Köp kärendeçilik we idempotentlik).

[!NOTE] Bu ýerde “dogry bir gezek” daşky görünýän netijäni suratlandyrýar: ulanyjy jogaby bir gezek alýar. Içerki taýdan işçi eltip bermegi birnäçe gezek synanyşyp biler; idempotentlik gatlagy bu synanyşyklary ýeke görünýän iberme çenli ýygnaýar.

Gaýtadan başlanyndan soň turn dikeldişi

Eger gateway turnyň ortasynda gaýtadan başlasa — deploý, döwülme, host gaýtadan ýüklemesi — iş taşlanmaýar. Turn dikeldişi bölünen turny gaýtadan oýnap, ony tamamlamaga mümkinçilik berýär. Bu diňe gapdal täsirler idempotent bolany üçin howpsuzdyr: gaýtadan başlamazdan ozal eýýäm bolan islendik poçta ýa-da kanal-iberme öz defter açary boýunça tanalýar we ötürilýär, ýüze çykmadyk bölekler bolsa tamamlanýança işleýär. Ulanyjy ýarym tamamlanan ýa-da gaýtalanan jogabyň ýerine ýeke, doly jogaby görýär.

Islege görä NATS şinasy

Adaty ýagdaýda eltip bermek doly PostgreSQL arkaly işleýär, bu bolsa minimal gurnamany bir gateway hem-de maglumat bazasy bilen saklaýar. Has uly ýa-da köp gateway gurnamalary üçin onuň URL-ny sazlap, eltip bermegi NATS şinasynda goýup bilersiňiz:

# gateway.env
AIHUMMER_NATS_URL=nats://127.0.0.1:4222

Şina hakykatdan-da islege görä — AIHUMMER_NATS_URL sazlanmadyk goýuň we outbox onsuz işleýär. Bar bolanda, NATS eltip beriş işiniň akýan transporty bolýar, bu bolsa proksiniň aňyrsynda gorizontal taýdan ölçeglendirilen gatewaýlara laýyk gelýär.

[!TIP] Nol-prostoý täzelemeler proksiniň aňyrsynda iki ýa-da has köp gateway işledýär. Meýilleşdiriji Postgres geňeşçi gulpy arkaly ýeke-lider bolup galýar, idempotent eltip bermek bolsa goşmaça gatewaýlaryň ýüki hiç zady iki gezek ibermän paýlaşyp bilmegini aňladýar.

Üns bermeli zatlar

Eltip bermek ygtybarlylyk meseleleriniň ilkinji bolup ýüze çykýan ýeridir, şonuň üçin ony gözegçilikde saklamalydyr. AiHummer telemetrini OTLP (AIHUMMER_OTEL_ENDPOINT) arkaly iberýär we Grafana panellerini üpjün edýär; gyrylyp alynýan Prometheus /metrics ahyrlygy ýokdur.

  • Eltip bermek netijeleri — her eltip bermek synanyşygynyň netijesi. Şowsuzlyklaryň artýan derejesi kanal ýa-da aşaky problema görkezýär.
  • Outbox çuňlugy — näçe jogap eltip berilmek üçin garaşýar. Durnukly ösüş eltip bermegiň yzda galýandygyny aňladýar.
  • DLQ çuňlugy — gaýtalama synanyşyklaryny gutaryp, ölü-hat nobatyna düşen ýazgylar. Islendik DLQ ösüşi derňewe mätäçdir.

[!WARNING] Bularyň hemmesini turn gijä galmasy we ýalňyşlyk derejesi bilen birlikde gözegçilikde saklaň. Ösýän outbox ýa-da DLQ, hatda turnlaryň özleri henizem üstünlikli bolanda-da, aşaky kanallaryň ýaramazlaşandygynyň irki duýduryşydyr.

Indiki ädim