Tugunlar orasidagi maʼlumotlar oqimi
(Bo’lim: Ekotizim va Tarmoq)
1) O’zbekiston Respublikasining
Uzellar orasidagi ma’lumotlar oqimi - bu ekotizim rollari (validatorlar/riderlar/indeksatorlar/ko’priklar/shlyuzlar/omborlar/tahlillar) o’rtasidagi voqealar, holatlar va artefaktlarni uzatishning boshqariladigan kanallari. Maqsadlar:- Oldindan aytish mumkin: kechikish/muvaffaqiyat/yangilik bo’yicha barqaror SLO.
- Ishonchlilik: yo’qotishlar, dublikatlar, reorglarga chidamlilik.
- Xavfsizlik va komplayens: shifrlash, imzolar, rezidentlik.
- Masshtablanishi: geo-taqsimlash, partiyalashtirish, QoS.
2) Oqimlar taksonomiyasi
1. Control Plane: konfigi, ficheflaglar, marshrutlash/limitlar siyosati.
2. Data Plane - hodisa: domen hodisalari (’deposit.’,’payout.’,’bridge.’).
3. Data Plane - oqim: signallar va live-metriklar uchun uzoq davom etadigan oqimlar (gRPC/WebSocket).
4. Batch/Backfill: tarixiy qismlar, repleylar, snapshotlar.
5. Replikatsiya/anti-entropiya: state sync, merklizatsiya, CRDT oqimlari.
6. Teleemetriya/kuzatuv: logi/metrika/treyslar side-band, asosiy UXga xalaqit bermaydi.
QoS sinflari va retraj/tartib qoidalari har bir turga mos keladi.
3) Topologiyalar va yo’nalishlar
Hub-and-Spoke: mintaqaviy xablar shina sifatida; spouki - rollar tugunlari.
Mesh/P2P: replikatsiya/davlat tipi uchun qisman kataklik.
Edge-Tiered: yupqa edge-shlyuzlar (rate-limit/kesh) → qalin mintaqaviy klasterlar.
Geo-Routing: Anycast/Latency-Aware LB + rezidentlik qoidalari.
"partition _ key = chainId’tenant’topic’entityId’ni partiyalashning asosiy usuli - oldindan aytib bo’ladigan tartib va ko’lamni beradi.
4) Transport va formatlar
HTTP/2/3, gRPC/QUIC - past latentlik, multiplekslash, keepalive.
Kafka/Pulsar/NATS - persistentlik/partiyalar/konsumer-guruhlar bilan navbatlar.
WebSocket - push-hodisalar va jonli kanallar.
Formatlar: Protobuf/Euro (evolyutsion sxemalar), tashqi API uchun JSON.
Xesh-manzil va Merkle-kvitansiyalari.
5) Tartib, yetkazib berish va yakunlash
Yetkazib berish modeli:- At-least-once (andoza; idempotentlik/dedup talab qilinadi).
- Exactly-once-effekt Outbox/Inbox + idempotent konsumer orqali.
- Tartib: partiya doirasida kafolatlanadi; partiyalararo tartib kafolatlanmaydi.
- Yakunlash:’observed → confirmed (K) → finalized → invalidated (reorg)’maqomlari; optimistic uchun - nizo oynasi.
6) Idempotentlik va dedup
Hodisa uchun idempotentlik kaliti:- `idempotency_key = ${chainId}|${block}|${tx}|${logIndex}|${type}`
- Kalit boʻyicha Upsert, TTL dedup oynalari ≥ 72 soat
- To’qnashuvga payload - «haqiqat manbai» siyosati (ustuvorlik, versiya, imzo).
- HTTP soʻrovlari uchun - «Idempotency-Key» sarlavhasi + javoblar jurnali.
7) Navbatlar, backpressure va kvotalar
Navbatlar: kalit bo’yicha partiyalar; «Zaharli» xabarlar uchun DLQ.
Backpressure: kreditlar/tokenlar, max-inflight cheklovi, circuit-breaker.
Kvotalar/QoS: P0 (kritik), P1 (mahsulot), P2 (bulk). Alohida pullar/RPS/bytes/s/obuna limitlari.
Admission control: «qimmat» soʻrovlarni barvaqt rad etish, diapazon/oʻlcham boʻyicha guard.
8) Ma’lumotlarning muvofiqligi va modellari
Partiya/tugun doirasida o’qish-you-write.
Mintaqalar/partiyalar o’rtasida Eventual Consistency.
Baʼzi toʻplamlar (hisoblagichlar, toʻplamlar) uchun CRDT.
Snapshotlar + tezkor bootstrap va aniqlangan replay uchun jurnallar.
9) Xavfsizlik va ishonch
tugunlar orasidagi mTLS, kalitlar pinning, rotatsiya.
Xabar/vebxuk imzolari, vaqt belgisi va anti-replay oynasi.
Yo’lda/tinchlikda shifrlash; mintaqaviy kalitlarni segregatsiya qilish.
PII-minimallashtirish: yorliqlar/metriklarda shaxsga doir ma’lumotlarni tokenlashtirish, taqiqlash.
10) Samaradorligi: paketlash, siqish, kesh
Batching: overhead qismini kamaytirish uchun kichik xabarlarni guruhlash.
Compression: zstd/gzip xavfsiz lugʻatlar bilan.
Kesh: salbiy javoblar va «issiq» ma’lumotnomalar; TTL va hodisa bo’yicha nogironlik.
11) Ma’lumotlar sxemalari (referensiyalar)
Oqimlar/partiyalar registri
sql
CREATE TABLE streams (
name TEXT PRIMARY KEY,
partitions INT,
qos TEXT, -- P0 P1 P2 retention_days INT,
schema_version TEXT
);
CREATE TABLE offsets (
stream TEXT, partition INT, consumer_group TEXT,
offset BIGINT, updated_at TIMESTAMPTZ,
PRIMARY KEY (stream, partition, consumer_group)
);
Voqealar jurnali (idempotent upsert)
sql
CREATE TABLE events_core (
id UUID PRIMARY KEY,
idempotency_key TEXT UNIQUE,
ts TIMESTAMPTZ,
partition_key TEXT,
type TEXT,
payload JSONB,
status TEXT, -- observed confirmed finalized invalidated signature TEXT
);
DLQ/karantin
sql
CREATE TABLE dlq (
id UUID PRIMARY KEY,
stream TEXT, partition INT, offset BIGINT,
reason TEXT, payload JSONB, ts TIMESTAMPTZ
);
12) Siyosat (YAML)
QoS va limitlar
yaml qos:
P0: { ack_timeout_ms: 2000, retries: 3, backoff_ms: [100,400,800], rps_per_org: 1500 }
P1: { ack_timeout_ms: 5000, retries: 2, rps_per_org: 800 }
P2: { best_effort: true, rps_per_org: 200 }
limits:
max_message_bytes: 1048576 max_stream_subscriptions_per_client: 20
Yakunlash va oynalar
yaml finality:
eth-mainnet: { k: 12 }
polygon: { k: 256 }
optimistic: { k: 0, challenge_minutes: 20 }
Routing/rezidentlik
yaml routing:
prefer_local_region: true fallback: [nearest_healthy, master_hub]
residency:
eu: ["eu"]
uk: ["uk"]
13) Kuzatish darajasi: SLI/SLO
SLI (yadro):- Latency p95/p99 (ingress→egress, per-stream/QoS).
- Success Rate / Drop Rate.
- Queue Lag p95 va partiyalar boʻyicha consumer lag.
- Freshness p95 (ingest→consume).
- Reorg/Invalidated Rate (agar oncheyn boʻlsa).
- Dedup Efficiency (idempotentda yutilgan dubllar%).
- Geo-Hit Ratio (mahalliy xizmat ko’rsatilgan).
- P0 latency p95 ≤ 400 ms; Success ≥ 99. 95%; Queue-lag p95 ≤ 2 с; Freshness p95 ≤ 60 с.
- Dedup efficiency ≥ 99%; DLQ ≤ 0. Trafikning 1%.
Dashbordlar: Streams Core/Lag & Freshness/QoS & Errors/Geo/Security (mTLS/imzolar).
14) Iste’molchilarning patternlari
Outbox/Inbox: atomik nashr va idempotent qo’llash.
Exactly-once effekt: oxirgi ishlatilgan kalit va versiyani saqlash.
Watermarks: kech hodisalarni qayta ishlash (late data).
Idempotent Side-Effects: tashqi soʻrovlar faqat kalit va javob daftariga ega.
15) Degradatsiya rejimlari
Finalized-only mode: Biz faqat yakunlangan voqealarni beramiz.
Ma’lumotnomalar uchun cache-only, og’ir usullarni muzlatish.
Throttle P2 va strimlar uchun «parhez rejimi» (yangilanish chastotasi pasaygan).
Ikkinchi darajali API uchun Read-only.
16) Relizlar va downtaymsiz migratsiyalar
Blue-Green/Canary oqimlar va konsumerlar bo’yicha.
Schema-first: faqat maydonlarni qoʻshish; MAJOR - topiklarning parallel versiyalari.
Offset’lar migratsiyasi: shadow-konsumerlar, lag/muvaffaqiyat taqqoslash, almashtirish.
17) Operatsion reglamentlar
Har kuni: SLO hisoboti (latency/success/lag/freshness), imzolar auditi, DLQ tekshiruvi.
Har hafta: partiyalar/kvotalarni taftish qilish, DR testi (snapshotdan bootstrap), Dedup Efficiency tahlili.
Har oyda: chaos-testlar (loss/jitter, brokerdan voz kechish, reorg-burst), finality-derazalarni qayta ko’rib chiqish.
Chiqarishdan oldin: kanareyka ≥ 120 daqiqa, SLO-geytlar, qaytish rejasi.
18) Hodisalar Playbook
A. Queue-Lag/Consumer-Lag portlashi
1. Konsumerlarni/KEDA ko’paytirish; 2) partiyalarni qayta taqsimlash; 3) P2 va bulk-joblarni muzlatish; 4) «issiq» kalitlarni tahlil qilish.
B. O’sish p95 Latency P0
1. P2-throttle, P0 ustuvorligi; 2) shlyuzlarni/brokyerlarni ko’paytirish; 3) faqat ma’lumotnomalar uchun kesh; 4) outlier-ejection.
C. Yuqori DLQ/dublyaj
1. Idempotentlik/TTL kalitini tekshirish; 2) dedupni kuchaytirish; 3) shovqinli prodyuserni cheklash; 4) fiksdan keyin takrorlash.
D. sxemalar/kontraktlar drifti
1. strict-mode ni yoqish (nolidlarni kesish); 2) prodyuserni xabardor qilish; 3) adapterni chiqarish; 4) linterlarni yangilash.
E. Rezidentlik/imzolar buzilishi
1. Eksport/kanal bloki; 2) kalitlar/sertlarni rotatsiya qilish; 3) audit va post-mortem; 4) siyosatni yangilash.
19) Joriy etish chek-varaqasi
1. Oqim turlarini va partiyalash kalitini aniqlang.
2. Idempotentlik/dedup va K/nizo oynalari bilan yakunlashni kiriting.
3. Navbatlar, QoS, kvotalar va backpressure.
4. mTLS/imzo va rezidentlik siyosatini ishga tushiring.
5. Sxemalar/reyestrlarni (streams, offsets, dlq) va SLI/SLO telemetriyasini kiriting.
6. Kanary/blue-green va sxemalarni to’xtatmasdan ko’chirishni tashkil qiling.
7. Degradatsiya rejimlari va hodisalar pleybuklarini ishlab chiqing.
20) Glossariy
Backpressure - kirish yuklamasini nazorat qilish (kreditlar/tokenlar/limitlar).
DLQ - muammoli xabarlar uchun «o’lik navbat».
CRDT - mojarolarni muvofiqlashtirmasdan hal qiluvchi maʼlumotlar tuzilishi.
Finality - voqea/holatning qaytarilmasligi.
Exactly-once-effekt - qayta-xavfsiz natija at-least-once yetkazib berish ustiga.
Watermark - keyingi hodisalar uchun ishlov berish jarayoni.
Outlier-ejection - buzilgan instansiyalarni hovuzdan chiqarish.
Xulosa: uzellar orasidagi ma’lumotlar oqimi shunchaki «navbat va tinglovchi» emas, balki tizimli tartib-intizom, yakunlanish, idempotentlik, xavfsizlik va kuzatuvdir. Partiyalashtirishning standart kalitlari, QoS/kvotalar, qat’iy sxemalar va SLOlar degradatsiya rejimlari va pleybuklar bilan birgalikda ekotizimga audit va masshtabda ma’lumotlarni uzatishning barqaror kanallarini beradi.