Düyünlər arasında məlumat axını
(Bölmə: Ekosistem və Şəbəkə)
1) mahiyyəti və məqsədləri
Düyünlər arasında məlumat axını - ekosistem rolları (validatorlar/oxucular/indeksatorlar/körpülər/şlyuzlar/anbarlar/analitika) arasında hadisələrin, halların və artefaktların idarə olunan ötürülməsi kanallarıdır. Məqsədlər:- Proqnozlaşdırıla bilər: gecikmə/müvəffəqiyyət/təravət üçün sabit SLO.
- Etibarlılıq: itkilərə, dublikatlara, reorglara davamlılıq.
- Təhlükəsizlik və uyğunluq: şifrələmə, imzalar, rezidentlik.
- Miqyaslı: geo-paylama, partizan, QoS.
2) Axınların taksonomiyası
1. Control Plane: konfiqlər, fitness, marşrut/limit siyasəti.
2. Data Plane - hadisə: domen hadisələri ('deposit.', 'payout.', 'bridge.').
3. Data Plane - axın: siqnallar və canlı metrlər üçün uzun ömürlü axınlar (gRPC/WebSocket).
4. Batch/Backfill: tarixi kəsiklər, repleylər, snapshots download.
5. Replikasiya/anti-entropiya: state sync, merklizasiya, CRDT axınları.
6. Teleemetri/müşahidə: log/metrika/treys side-band, əsas UX mane deyil.
Hər bir növə QoS sinifləri və retraj/sifariş qaydaları uyğundur.
3) Topologiyalar və marşrutlaşdırma
Hub-and-Spoke: şinlər kimi regional hub; spouki - rol düyünləri.
Mesh/P2P: replikasiya/gossip üçün qismən hüceyrə.
Edge-Tiered: nazik edge-şlyuzlar (rate-limit/cache) → qalın regional klasterlər.
Geo-Routing: Anycast/Latency-Aware LB + rezidentlik qaydaları.
Açar - partizanlaşdırma: 'partition _ key = chainId' tenant 'topic' entityId 'proqnozlaşdırıla bilən sifariş və miqyas verir.
4) Nəqliyyat və formatlar
HTTP/2/3, gRPC/QUIC - aşağı gecikmə, multiplex, keepalive.
Kafka/Pulsar/NATS - persistentlik/partiyalar/konsumer qrupları ilə növbələr.
WebSocket - push-hadisələr və canlı kanallar.
Formatlar: Protobuf/Avro (təkamül sxemləri), xarici API üçün JSON.
Hash ünvanı və Merkle qəbzləri bütövlüyü yoxlamaq üçün.
5) Sifariş, çatdırılma və bitirmə
Çatdırılma modeli:- At-least-once (default; idempotentlik/dedup tələb olunur).
- Outbox/Inbox + idempotent konsumer vasitəsilə Exactly-once effekti.
- Sifariş: partiya daxilində zəmanət verilir; partiyalararası qaydaya zəmanət verilmir.
- Final: statuslar 'observed → confirmed (K) → finalized → invalidated (reorg)'; optimistic üçün - mübahisə pəncərəsi.
6) İdempotentlik və dedup
Hadisələr üçün idempotentlik açarı:- `idempotency_key = ${chainId}|${block}|${tx}|${logIndex}|${type}`
- Upsert açar, TTL pəncərə babasının ≥ 72 saat.
- Münaqişə payload - «həqiqət mənbəyi» siyasəti (prioritet, versiya, imza).
- HTTP sorğuları üçün - 'Idempotency-Key' başlığı + cavab jurnalı.
7) Növbələr, backpressure və kvotalar
Növbələr: açar partiyalar; «Zəhərli» mesajlar üçün DLQ.
Backpressure: kreditlər/tokenlər, max-inflight məhdudiyyəti, circuit-breaker.
Kvotalar/QoS: P0 (kritik), P1 (məhsul), P2 (bulk). Ayrı hovuzlar/RPS/bytes/s/abunə limitləri.
Admission control: «bahalı» sorğuların erkən imtinası, diapazonlar/ölçülər üzrə mühafizə.
8) Uyğunluq və data modelləri
Partiya/qovşaq daxilində Read-you-write.
Regionlar/partiyalar arasında Eventual Consistency.
CRDT bəzi dəstləri (sayğaclar, çoxluqları) konflikt-free replikasiya üçün.
Snapshots + sürətli bootstrap və determinated replay üçün jurnallar.
9) Təhlükəsizlik və etimad
mTLS knots arasında, pinning açarları, rotasiya.
Mesaj/webhook imzaları, vaxt işarəsi və anti-replay pəncərə.
Yolda/dinc şifrələmə; regional açarların bölünməsi.
PII-minimallaşdırma: etiketlərdə/metriklərdə tokenizasiya, şəxsi məlumatların qadağan edilməsi.
10) Səmərəliliyi: paket, kompres, cache
Batching: overhead azaltmaq üçün kiçik mesajlar qruplaşdırılması.
Compression: təhlükəsiz lüğətlərlə zstd/gzip.
Cache: mənfi cavablar və «isti» kataloqlar; TTL və hadisə əlillik.
11) Məlumat sxemləri (referensiyalar)
Axınlar/partiyalar reyestri
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)
);
Hadisə jurnalı (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) Siyasət (YAML)
QoS və Limitlər
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
Sonlandırma və pəncərələr
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) Müşahidə: SLI/SLO
SLI (nüvə):- Latency p95/p99 (ingress→egress, per-stream/QoS).
- Success Rate / Drop Rate.
- Queue Lag p95 və partiyalar üzrə consumer lag.
- Freshness p95 (ingest→consume).
- Reorg/Invalidated Rate (əgər onchain).
- Dedup Efficiency (idempotent udulmuş dubllar%).
- Geo-Hit Ratio (yerli xidmət).
- P0 latency p95 ≤ 400 ms; Success ≥ 99. 95%; Queue-lag p95 ≤ 2 с; Freshness p95 ≤ 60 с.
- Dedup efficiency ≥ 99%; DLQ ≤ 0. 1% trafik.
Dashboard: Streams Core/Lag & Freshness/QoS & Errors/Geo/Security (mTLS/imzalar).
14) İstehlakçı nümunələri
Outbox/Inbox: atom nəşr və idempotent tətbiqi.
Exactly-once effekt: Son tətbiq açar və versiyası saxlamaq.
Watermarks: gecikmiş hadisələrin işlənməsi (late data).
Idempotent Side-Effects: xarici sorğular yalnız açar və cavab jurnalı ilə.
15) Deqradasiya rejimləri
Finalized-only mode: Yalnız yekunlaşdırılmış hadisələr veririk.
Cache-only, ağır üsulları dondurmaq.
Throttle P2 və axınlar üçün «pəhriz rejimi» (aşağı yeniləmə tezliyi).
İkinci dərəcəli API üçün Read-only.
16) Relizlər və downtime olmadan miqrasiya
Blue-Green/Canary axınlar və konsumerlər.
Schema-first: yalnız sahələrin əlavə edilməsi; MAJOR - topiklərin paralel versiyaları.
Offset miqrasiyaları: shadow-konsumerlər, lag/uğur müqayisə, keçid.
17) Əməliyyat qaydaları
Gündəlik: SLO hesabatı (latency/success/lag/freshness), imza auditi, DLQ yoxlaması.
Həftəlik: partiya/kvota təftişi, DR testi (snapshot bootstrap), Dedup Efficiency analizi.
Aylıq: chaos-testlər (loss/jitter, brokerdən imtina, reorg-burst), finality-pəncərələrin yenidən baxılması.
Buraxılışdan əvvəl: kanarya ≥ 120 dəq, SLO geytaları, geri dönüş planı.
18) Playbook hadisələr
A. Partlayış Queue-Lag/Consumer-Lag
1. Konsumerləri/KEDA artırın; 2) partiyaları yenidən bölüşdürmək; 3) P2 və bulk jobları dondurun; 4) «isti» açarların analizi.
B. Böyümə p95 Latency P0
1. P2-throttle, P0 prioritetləşdirilməsi; 2) şlyuzları/brokerləri ölçmək; 3) yalnız referans üçün cache; 4) outlier-ejection.
C. yüksək DLQ/dublyaj
1. İdempotentlik açarını/TTL yoxlayın; 2) dedupu gücləndirmək; 3) səs-küylü prodüseri məhdudlaşdırmaq; 4) fiksdən sonra səslənmə.
D. Drift sxemləri/müqavilələri
1. strict-mode daxil edin (qeyri-sabit kəsmək); 2) prodüseri xəbərdar etmək; 3) adapter azad; 4) linterləri yeniləyin.
E. rezidentlik/imzaların pozulması
1. İxrac/kanal bloku; 2) açar/sertlərin rotasiyası; 3) audit və post-mortem; 4) siyasətin yenilənməsi.
19) Giriş çek siyahısı
1. Axın növlərini və partizan açarını təyin edin.
2. K/mübahisə pəncərələri ilə idempotentlik/dedup və finala daxil edin.
3. Növbələri, QoS, kvotaları və backpressure konfiqurasiya.
4. mTLS/imza və rezidentlik siyasətini işə salın.
5. Sxemləri/reyestrləri (streams, offsets, dlq) və SLI/SLO telemetriyasını daxil edin.
6. downtime olmadan canary/blue-green və miqrasiyası sxemləri təşkil edin.
7. Deqradasiya rejimlərini və hadisələrin playbuklarını işləyin.
20) Sözlük
Backpressure - giriş yükünə nəzarət (kreditlər/tokenlər/limitlər).
DLQ - problemli mesajlar üçün «ölü növbə».
CRDT - koordinasiya olmadan münaqişələrin həlli ilə məlumat strukturu.
Finality - hadisənin/vəziyyətin geri dönməzliyi.
Exactly-once effekti - at-least-once çatdırılma üzərində təkrar təhlükəsiz nəticə.
Watermark - sonrakı hadisələr üçün tərəqqi işarəsi.
Outlier-ejection - deqradasiyaya uğramış instansiyaların hovuzdan çıxarılması.
Nəticə: düyünlər arasında məlumat axını sadəcə «növbə və dinləyici» deyil, nizam-intizam, finallaşma, idempotentlik, təhlükəsizlik və müşahidə sistemidir. Standart partizan açarları, QoS/kvotalar, ciddi sxemlər və SLO, deqradasiya rejimləri və playbukları ilə birlikdə ekosistemə miqyasda və audit altında davamlı məlumat ötürülməsi kanalları verir.