GH GambleHub

Habar brokerleri

1) Näme üçin habar dellallary

Broker öndürijileri we maslahatçylary wagt/tizlik/ygtybarlylyk boýunça açýar:
  • Iň ýokary nokatlary buferlemek we tekizlemek, bekpreser.
  • Okamak/ýazmak özbaşdak.
  • Wakalary synlamak we oýnamak (replay).
  • Binagärlik nusgalary: event-driven, CQRS, event sourcing, outbox/inbox.

2) Esasy modeller we adalgalar

2. 1 Kafka (log modeli)

Topik → partiýa (tertipli loglar) → konsumerlerde ofset.
"Consumer Group": okamagyň meňzeşligi, toparlaryň deňagramlylygy.
Wagt/göwrüm boýunça retenşn; açar kompaksiýasy.
Semantika: minimum - at-least-once, sazlamalarda - effectively exactly-once (idempotent öndürijiler + amallar).
Tertip: partiýanyň içinde kepillendirilýär.

2. 2 NATS (mowzuklar/subjects, pes gijikdirme)

Subject (tema) iýerarhiýasy we wildcarts ('foo.', 'foo. >`).
Usullar: pub/sub, queue-groups (iş paýlanyşy bilen janköýer), request-reply (çalt RPC).
Core NATS - efemer, aşa pes gizlinlik; JetStream - dowamlylygy/täzeden seredilmegi/gaýtalanmagy.
Tertip: iň gowy güýç, güýçli global kepillik bolmazdan; JetStream bilen - akymda tertipleşdirmek, ýöne şowsuzlyklarda seýrek tertipleşdirmeler bolup biler.

3) Eltip bermegiň semantikleri we ylalaşyklylygy

SemantikaKafkaNATS CoreNATS JetStream
At-most-onceseýrek (adatça gerek däl)Standart (tassyklamasyz)mümkin
At-least-oncestandart (işlenenden soň commit offset)ack syýasaty bilenstandart (ack policy, redelivery)
Exactly-once (täsirli)dempotent öndüriji + geleşik; idempotent sinksn/dsarp edijiniň derejesinde gazanylýar (idempotentlik), dellal Kafkadaky ýaly amallary bermeýär

Idempotentlik we dedup - Kafkadaky "exactly-once" -de-de programmanyň/synkyň jogapkärçiligi.

4) Tertip, partiýa ýerleşdirmek we açarlar

Kafka

Habar açaryny saýlamak partiýany kesgitleýär → güýçli ýerli tertip.
Ключи: `aggregate_id`, `tenant_id`, `order_id`. Gyzgyn açarlardan gaça duruň.
Balans: Partiýanyň N ≈ okamagyň paralellik derejesi.

NATS

"Core" -de balans queue-group tarapyndan amala aşyrylýar.
JetStream Stream subjects; az gijä galmak bilen giň janköýerlige/janköýerlige ünsi jemläň.

5) Retenşn, bellik we kompaksiýa

Kafka

Retention: `retention. ms/bytes`.
Compaction: "açar boýunça iň soňky bahany" saklaýar (snapshots/kaches/sag üçin amatly).
Replay: Islendik konsumer ofsetleri "yza çekip" biler.

JetStream

Streams: faýl/memory backends, wagt/baýt saklamak syýasaty/habar sany.
Ulanyjylar: pull/push, durable/ephemeral, subject-prefiksler boýunça süzgüç.
Replay: redelivery ýa-da başyndan okamak/offset-like (sequence).

6) Amallar, outbox we utgaşdyrmak

Kafka

Idempotent Producer (`enable. idempotence = true '): goşa gorag.
Transactions: birnäçe partiýanyň atom ýazgysy + kommit consumer-offsets → pattern read-process-write "deşiksiz".
Transactional Outbox: Bir DB-amalda iş wakasynyň we outbox-setiriň ýazgysy, worker Kafka-da çap edýär.

NATS

Kafkadaky ýaly "akym" amallary ýok; outbox/inbox we idempotent konsumerleri (açarlar, dedup-stor) ulanyň.

7) RPC we haýyş-jogap

Kafka RPC üçin amatsyz (ýokary ýokarky, tertibi/jogaplary has kyn). Asenkron buýruklary/wakalary ulanyň.
NATS: request-reply (milisaniyalar, korelýasiýa, wagtlar) üçin amatlydyr.

Mysal (Go, NATS request-reply):
go resp, err:= nc. Request("profile. get", []byte(`{"id":42}`), 200time. Millisecond)

8) Peýdalanmak we topologiýalar

8. 1 Kafka

Klaster: brokerler + ZooKeeper (köne wersiýalara çenli) ýa-da KRaft (täze metadata).
Replikasiýa: RF ≥ 3 zolaklar boýunça, ISR/gözegçiler.
Köp sebit: MirrorMaker 2/Cluster Linking; aktiw-passiw/konflikt-syýasatçylar bilen aktiw-aktiw.
Disk/Tor kuwwaty: 'throughput × retention × replicas' -dan hasaplamak.

8. 2 NATS

Cluster: Köp düwün, super-cluster (geo-display), periferiýa/edge üçin leafnodes.
JetStream: düwünler (placement), köpeltmek (R = 1.. 5).
WAN: garaşylýan pes gijikdirmeler, ýeňil federasiýa.

9) Howpsuzlyk

Kafka

TLS (mTLS), SASL: SCRAM, OAuthBearer.
Topikler/toplar/amallar üçin ACL.
"Ýeke-täk" şifrlemek (OS/diskler) + tor syýasaty.

NATS

nkey/JWT şahsyýet, operator-hasaplar, per-subject ACL.
mTLS düwünler bilen müşderileriň arasynda.
Kärendeçileriň izolýasiýasy (accounts) + çäklendirmeler.

10) Gözegçilik we ekspluatasiýa metrikleri

Kafka

Брокер: `BytesIn/Out`, `RequestQueue`, `UnderReplicatedPartitions`, GC/FS stats.
Topik/partiýa: 'logEndOffset', consumer lag (möhüm).
Prodýuser/konsumer: retrai, 'batch. size`, `linger. ms`, `fetch. min. bytes ', ýalňyşlyklar.
Gurallar: JMX, Cruise Control (re-balans), Schema Registry.

NATS/JetStream

Serwer: conn/msgs/sec, RTT, CPU/mem, slow consumer deteksiýasy.
JetStream: per stream/consumer — lag, redeliveries, acks, storage bytes.
Gözegçilik: gurlan endpoint, nsc/adm-CLI, dashbordlar.

11) Öndürijilik we sazlama

Kafka

Uly batçi we 'linger. ms 'throughput gowulaşýar we p99 gysylýar.
Gysyş (lz4/zstd) tory/diski tygşytlaýar.
num. partitions sarp edijileriň/ýadrolaryň sany boýunça, ýöne aşa geçmeli däl (overhead).
Diskler: 'noatime' bilen XFS/EXT4 NVMe has gowy.

NATS

Ownuk habarlar, köp baglanyşyklar - norma; queue groups "giň" saklaň.
JetStream: tune `max_ack_pending`, pull vs push, size of batches.
Backpressure: `FlowControl`, `IdleHeartbeat`, server-side limits.

12) Integrasiýa patternleri

Outbox/Inbox (Kafka we NATS).
SAGA: wakalar bilen orkestrlemek; 'saga _ id + step'.
Change Data Capture (CDC): Debezium → Kafka; NATS - "DB-triggerlerden/bloglardan publisher" patterni.
Stream processing: Kafka Streams/Flink/Spark; NATS - üçünji tarap prosessorlary/funksiýalary, JetStream ulanyjylary.
Dead Letter Queue (DLQ) we retry-syýasatlar (eksponensial backoff + jitter).

13) Konfigurasiýa mysallary

13. 1 Kafka: topik döretmek we prodýuser

bash kafka-topics. sh --create --topic orders \
--partitions 12 --replication-factor 3 \
--config cleanup. policy=delete \
--config retention. ms=604800000 # 7d
properties producer. properties bootstrap. servers=broker:9092 acks=all enable. idempotence=true batch. size=65536 linger. ms=10 compression. type=zstd

13. 2 Kafka Akymlar: Dempotent gaýtadan işlemek (eskiz)

java builder. <String, Order>stream("orders")
.groupByKey()
.aggregate(/... /)
.toStream()
.to("orders-agg");

13. 3 NATS JetStream: stream + consumer (nats CLI)

bash nats stream add ORDERS --subjects "orders. " --retention limits \
--storage file --max-bytes 100GB --replicas 3 --discard old

nats consumer add ORDERS ORDERS-WORKERS --filter "orders. created" \
--deliver pull --ack explicit --max-deliver 6 --backoff "1s,5s,30s,2m"

13. 4 NATS Request-Reply (Go)

go nc, _:= nats. Connect("tls://nats:4222", nats. Secure(tlsConf))
sub, _:= nc. QueueSubscribe("calc. sum", "workers", func(m nats. Msg) {
//... process...
m. Respond([]byte("42"))
})

14) Kafka vs NATS saýlamak: çalt görkeziji

Bize rap, uzyn retenşn, kompaksiýa, agyr akym prosesleri gerek → Kafka.
Çalt RPC, mikro patentli janköýer/janköýer, ýönekeý amal, edge/IoT → NATS (Core) gerek.
Bize durnuklylyk + janköýer gerek, ýöne agyr "logik" platformasyz → NATS JetStream.
Açar we geleşikler boýunça berk tertip → Kafka.

15) Kuwwaty meýilleşdirmek (ýönekeýleşdirilen)

Kafka

1. Geçiş: 'inbound _ MBps × RF × retention_days × 86400' → diskler.
2. Partiýa: 'target _ concurrency' × ätiýaçlyk 1. 5–2×.
3. Tor: p99 + köpeltmek + gysyş öndürijisi.

NATS/JetStream

1. Habar/sek we ortaça ululygy → throughput.
2. Retention×replicas → storage.
3. Serializasiýa üçin ulanyjylaryň (ack-pending, redeliveries), CPU çäkleri.

16) Howpsuz peýdalanmak: çek-sanawy

  • TLS/mTLS goşulýar, syrlar aýlanýar.
  • ACL/hasaplar/kwotalar (per-tenant).
  • Konsumerlerde, DLQ-de we jitter bilen retrada idempotentlik.
  • lag/throughput/ýalňyşlyklara gözegçilik etmek; URP (Kafka), redelivery-storm (NATS) üçin alertler.
  • Capacity dashboards: partiýa, storage, p99.
  • Düwünleriň/zonalaryň şowsuzlygyny barlamak üçin synaglar, game-days, replay/arka fil.
  • Partizasiýa we shema açarlary resminamalaşdyryldy (Schema Registry/JSON Schema).
  • Retenşn/kompaksiýa/TTL syýasaty ylalaşyk bilen ylalaşylýar.
  • Dellallaryň/müşderileriň wersiýalary yzygiderli täzelenýär; wire-protokolyň laýyklygy barlandy.

17) Anti-patternler

Gyzgyn açar (ähli wakalar bir şahsyýet) → bir "gaýnag" akym. Şard/bufer.
Idempotentliksiz retraýalar → goşa effektler.
Ullakan habarlar (MB-onlarça) → GC bölekleri/arakesmeleri. Obýekt üçin töleg goýuň, baglanyşyklary iberiň.
RPC we akymy Kafka → çylşyrymly durmuş sikli/tertibi garyşdyrmak.
JetStream "uzak möhletli DWH" → maksatlaýyn däl; obýekt/sütün daşlarynda uzak wagtlap saklaň.
Ýok DLQ → "zäherli" habarlar tükeniksiz aýlanýar.
Unudylan retenshn → diskler dolduryldy, klaster duralgasy.

18) FAQ

Q: "exactly-once" paýlaýjynyň ahyrynda edilip bilnermi?
A: Iş ýüzünde - täsirli hawa: Kafka (idempotent öndüriji + amallar) we idempotent sinki (açar, upsert). NATS-de - programmada idempotentlik/deadup arkaly.

Q: Bir million kiçi RPC/sek üçin näme saýlamaly?
A: NATS Core: mikrolatentlik, request-reply, ýeňil konnektler we queue-groups.

Q: Kompaksiýa we döwlet snapshotlary gerekmi?
A: Kafka с `cleanup. policy = compact ', açar = agregat/çeşme.

S: Laga garşy nähili göreşmeli?
A: Partiýa/ussalaryň sanyny köpeltmek, gaýtadan işlemek wagtyny azaltmak, batch we prefetch, deserializasiýany optimizirlemek, dellallary/diskleri dik güýçlendirmek.

Q: Köp sebit we DR?
A: Kafka - MirrorMaker 2/Cluster Linking, RPO bilen işjeň-passiw ≈ sekunt. NATS — supercluster/leafnodes; JetStream zolaklar boýunça aýna/göçürmeler.

19) Netijeler

Kafka we NATS dürli re regimeimleri ýapýarlar: Kafka - wakalaryň dowamly magazinesurnallary, ýokary throughput, amallar we bellikler; NATS - pes gijikdirmeler, RPC we JetStream bilen ýönekeý janköýer üçin aşa ýeňil teker. Eltip bermegiň semantikasyndan, tertibinden we retenşninden, gizlinliginden we amal çykdajylaryndan saýlaň. Açarlary/partiýalary, retenşn, DLQ we gözegçilik ukybyny düzüň - wakalaryň arhitekturasy öňünden aýdyp boljak, ulaldylyp bilinjek we ygtybarly bolar.

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.