Düğümler arasındaki veri akışları
(Bölüm: Ekosistem ve Ağ)
1) Öz ve hedefler
Düğümler arasındaki veri akışları, ekosistem rolleri arasındaki olayların, durumların ve eserlerin yönetilen kanallarıdır (doğrulayıcılar/okuyucular/endeksleyiciler/köprüler/ağ geçitleri/depolar/analizler). Hedefler:- Öngörülebilirlik: Gecikme/başarı/tazelik ile kararlı SLO'lar.
- Güvenilirlik: kayıplara, kopyalara, reorglara karşı direnç.
- Güvenlik ve uyumluluk: şifreleme, imzalar, oturum izni.
- Ölçeklenebilirlik: coğrafi dağıtım, bölümleme, QoS.
2) Akış taksonomisi
1. Kontrol Düzlemi: yapılandırmalar, phicheflags, yönlendirme/limit politikaları.
2. Veri Düzlemi - olay: etki alanı olayları ('deposit. ',' ödeme. ',' köprü. ').
3. Veri Düzlemi - akış: sinyaller ve canlı metrikler için uzun ömürlü akışlar (gRPC/WebSocket).
4. Batch/Backfill: geçmiş dilimlerin, tekrarların, anlık görüntülerin indirilmesi.
5. Çoğaltma/anti-entropi: durum senkronizasyonu, merclizasyon, CRDT akışları.
6. Telemetri/gözlemlenebilirlik: günlükleri/metrikleri/izleri yan bant, ana UX ile müdahale etmeyin.
Her türün QoS sınıfları ve kendi retray/sipariş kuralları vardır.
3) Topolojiler ve yönlendirme
Hub-and-Spoke: Lastik olarak bölgesel merkezler; Oynar - rol düğümleri.
Mesh/P2P: çoğaltma/dedikodu için kısmi ağ.
Kenar Katmanlı: ince kenar ağ geçitleri (hız sınırı/önbellek) - kalın bölgesel kümeler.
Geo-Routing: Anycast/Latency-Aware LB + ikamet kuralları.
Anahtar - bölümleme: 'partition _ key = chainId' kiracı 'konu' entityId 'öngörülebilir düzen ve ölçek verir.
4) Taşıma ve formatlar
HTTP/2/3, gRPC/QUIC - düşük gecikme, çoğullama, keepalive.
Kafka/Pulsar/NATS - sebat/partiler/tüketici grupları ile kuyruklar.
WebSocket - itme olayları ve canlı yayınlar.
Biçimler: Protobuf/Avro (evrimli şemalar), harici API'ler için JSON.
Bütünlük doğrulaması için hash adresleme ve Merkle makbuzları.
5) Sipariş, teslimat ve sonuçlandırma
Teslimat modeli:- En az bir kez (varsayılan; Idempotency/deadup gerekli).
- Outbox/Inbox + idempotent tüketici ile tam bir kez etkisi.
- Düzen: parti içinde garanti; Partiler arası düzen garanti değildir.
- Sonlandırma: durumlar 'gözlemlendi - doğrulandı (K) - kesinleşti - geçersiz (reorg)'; iyimser için - anlaşmazlık penceresi.
6) Idempotence ve dedup
Olaylar için idempotence anahtarı:- 'bağımsızlık _ anahtarı = $ {chainId} | $ {block} | $ {tx} | $ {logIndex} | $ {type}'
- Upsert by key, veri tekilleştirme penceresinin TTL'si 72 saat ≥.
- Bir çatışma için, yük "gerçeğin kaynağı" politikasıdır (öncelik, sürüm, imza).
- HTTP istekleri için, başlık 'Idempotency-Key' + yanıt günlüğüdür.
7) Kuyruklar, geri dönüş ve kotalar
Kuyruklar: anahtarla partiler; "Zehirli" mesajlar için DLQ.
Backpressure: krediler/belirteçler, maksimum uçuş limiti, devre kesici.
Kotalar/QoS: P0 (kritik), P1 (ürün), P2 (toplu). Bölünmüş havuzlar/RPS limitleri/bayt/s/abonelikler.
Kabul kontrolü: "Pahalı" taleplerin erken reddi, aralık/boyuta göre koruma.
8) Tutarlılık ve veri modelleri
Parti/düğüm içinde oku-yaz.
Bölgeler/taraflar arasında Nihai Tutarlılık.
Bazı kümelerin (sayaçlar, kümeler) çatışmasız çoğaltılması için CRDT.
Anlık görüntüler + hızlı önyükleme ve deterministik yeniden oynatma için günlükler.
9) Güvenlik ve güven
Düğümler arasında mTLS, anahtar sabitleme, rotasyon.
Mesaj/webhook imzaları, zaman damgası ve yeniden oynatma karşıtı pencereler.
Hareket halindeyken/dinlenirken şifreleme; Bölgesel anahtarların ayrımı.
PII-minimization: tokenization, etiketlerde/metriklerde kişisel verilerin yasaklanması.
10) Verimlilik: paketleme, sıkıştırma, önbellek
Gruplama: Genel yükü azaltmak için küçük mesajların gruplandırılması.
Sıkıştırma: Güvenli sözlüklerle zstd/gzip.
Nakit: olumsuz cevaplar ve "sıcak" dizinler; TTL ve olayla maluliyet.
11) Veri diyagramları (referanslar)
Akış/lot kaydı
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)
);
Olay günlüğü (idempotent uppert)
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/Karantina
sql
CREATE TABLE dlq (
id UUID PRIMARY KEY,
stream TEXT, partition INT, offset BIGINT,
reason TEXT, payload JSONB, ts TIMESTAMPTZ
);
12) Politikalar (YAML)
QoS ve Limitler
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 ve pencereler
yaml finality:
eth-mainnet: { k: 12 }
polygon: { k: 256 }
optimistic: { k: 0, challenge_minutes: 20 }
Yönlendirme/İkamet
yaml routing:
prefer_local_region: true fallback: [nearest_healthy, master_hub]
residency:
eu: ["eu"]
uk: ["uk"]
13) Gözlemlenebilirlik: SLI/SLO
SLI (çekirdek):- Gecikme süresi p95/p99 (giriş, çıkış, akış başına/QoS).
- Başarı oranı/düşme oranı.
- Queue Lag p95 ve taraflara göre tüketici gecikmesi.
- Tazelik p95 (yutmak - tüketmek).
- Reorg/Invalid Rate (eğer onchain ise).
- Dedup Verimliliği (% alır idempotently emilir).
- Geo-Hit Oranı (yerel olarak servis verilir).
- P0 gecikme süresi p95 ≤ 400 ms; Başarı ≥ 99. 95%; Kuyruk-lag p95 ≤ 2 с; Tazelik p95 ≤ 60 с.
- Dedup verimliliği ≥ %99; DLQ ≤ 0. Trafiğin %1'i.
Panolar: Akışlar Çekirdek/Gecikme ve Tazelik/QoS ve Hatalar/Coğrafi/Güvenlik (mTLS/imzalar).
14) Tüketici kalıpları
Giden Kutusu/Gelen Kutusu: atomik yayınlama ve idempotent uygulama.
Tam olarak bir kez etkisi: Son uygulanan anahtarı ve sürümü saklayın.
Filigranlar: geç veriler.
Idempotent Yan Etkileri: Yalnızca anahtar ve yanıt günlüğü içeren harici sorgular.
15) Bozma modları
Sadece kesinleşmiş mod: Sadece kesinleşmiş olaylar yayınlıyoruz.
Sadece referans kitapları için önbellek, ağır yöntemleri dondurmak.
Akışlar için gaz P2 ve "diyet modu" (azaltılmış yenileme hızı).
İkincil API'ler için salt okunur.
16) Kesinti süresiz sürümler ve geçişler
Akışlar ve Tüketiciler tarafından Mavi-Yeşil/Kanarya.
Şema-ilk: yalnızca alan ekle; MAJOR - konuların paralel versiyonları.
Ofset geçişler: gölge tüketiciler, gecikme/başarı karşılaştırması, anahtarlama.
17) Çalışma Yönetmelikleri
Günlük: SLO raporu (gecikme/başarı/gecikme/tazelik), imza denetimi, DLQ kontrolü.
Haftalık: partilerin/kotaların gözden geçirilmesi, DR testi (anlık görüntüden önyükleme), Dedup Verimliliği analizi.
Aylık: kaos testleri (kayıp/jitter, broker hatası, reorg-burst), kesinlik pencerelerinin revizyonu.
Serbest bırakılmadan önce: kanarya ≥120 dakika, SLO kapıları, geri alma planı.
18) Playbook olayları
A. Kuyruk-Gecikme/Tüketici-Gecikme patlaması
1. Tüketicileri/KEDA'yı artırmak; 2) partilerin yeniden dağıtılması; 3) P2 ve toplu işleri dondurun; 4) "sıcak" anahtarların analizi.
B. p95 Gecikme P0 Büyüme
1. P2-throttle, P0 önceliklendirme; 2) ölçekli ağ geçitleri/brokerler; 3) sadece referans kitapları için önbellek; 4) aykırı-çıkarma.
C. yüksek DLQ/dublaj
1. Idempotence anahtarını kontrol edin/TTL; 2) dedup güçlendirmek; 3) gürültülü üreticiyi sınırlayın; 4) düzeltmeden sonra tekrar oynatın.
D. Drift şemaları/sözleşmeleri
1. Katı modu etkinleştir (geçersiz olanları kes); 2) Üreticiyi bilgilendirmek; 3) adaptörü serbest bırakın; 4) astarları güncelleyin.
E. İkamet/imza ihlali
1. İhracat/kanal birimi; 2) anahtarların/setlerin dönüşü; 3) denetim ve ölüm sonrası; 4) politikaları güncellemek.
19) Uygulama kontrol listesi
1. Akış türlerini ve bölümleme anahtarını tanımlayın.
2. K/anlaşmazlık pencereleri ile idempotence/dedup ve sonuçlandırmayı etkinleştirin.
3. Kuyrukları, QoS'u, kotaları ve geri çıkışı yapılandırın.
4. mTLS/İmzalar ve İkamet Politikası'nı çalıştırın.
5. Şemaları/kayıtları (akışlar, ofsetler, dlq) ve SLI/SLO telemetrisini girin.
6. Kanarya/mavi-yeşil ve kesintisiz devre geçişlerini organize edin.
7. Bozulma modları ve olay oyun kitapları üzerinde çalışın.
20) Sözlük
Geri baskı - giriş yük kontrolü (krediler/belirteçler/limitler).
DLQ - sorunlu mesajlar için "ölü kuyruk".
CRDT - koordinasyon olmadan çatışma çözümü olan veri yapıları.
Kesinlik - olayın/durumun geri döndürülemezliği.
Tam olarak bir kez etkisi - en az bir kez teslimat üzerinde tekrar güvenli sonuç.
Filigran - Geç olaylar için ilerleme işareti.
Outlier-ejection - havuzdan bozulmuş örneklerin dışlanması.
Alt satır: Düğümler arasındaki veri akışları sadece bir "kuyruk ve dinleyici'değil, sistemik bir düzen, sonuçlandırma, idempotency, güvenlik ve gözlemlenebilirlik disiplinidir. Standart bölümleme anahtarları, QoS/kotalar, katı şemalar ve SLO'lar, bozulma modları ve oyun kitaplarıyla birlikte, ekosisteme ölçek ve denetim altında istikrarlı veri iletim kanalları sağlar.