Ağ düğümlerini ölçekleme
(Bölüm: Ekosistem ve Ağ)
1) Düğüm rolleri ve trafik döngüleri
Doğrulama/üretim (consensus/block/rollup-sequencer): kritik bir sonuçlandırma yolu.
Okuyucu/indeksleyici (salt okunur/API/arşiv): uygulama ve analiz isteklerine hizmet eder.
Röle/köprü (çapraz etki alanı): etki alanları arasında iletileri/varlıkları aktarma.
Ağ geçidi/kenar (giriş/gRPC/WebSocket/QUIC): istemci isteklerini alma, hız sınırı, önbellek.
Tele metrik/gözlemlenebilirlik: metriklerin/günlüklerin/izlerin toplanması, sentetik örnekler.
Her rolün kendi SLO'su, hata bütçesi ve ölçeklendirme politikası vardır.
2) Modelleri ölçeklendirme
2. 1 Büyütme
CPU/RAM/SSD/NIC artırın. Zirveler için hızlı, ancak demir ile sınırlı ve birim trafik başına maliyeti artırabilir.
2. 2 Ölçeklendirme
Dengeleyicilerin/kuyrukların arkasına kopyalar ekleme. Idempotence, yapışkan politikalar, quorum ve tutarlı önbellekler (veya sakatlıkları) gerektirir.
2. 3 Fonksiyonel çeşitlilik
Görevlerin ayrılması: konsensüs düğümleri izole edilir; RPC/API - ayrı ayrı; İndeksleyici/arşiv - ayrı ayrı; bridge/relayer - ayrı ayrı.
2. 4 Coğrafi ölçek
Bölgesel kümeler (AB/ABD/AP) + anycast/GeoDNS/Gecikme Farkında LB; Sonlandırma/gecikme süresi ve yerel önbellekler ile çoğaltma
2. 5 Parçalama/bölümleme
Kuyruklar/dizinleyiciler ve sütun depoları için anahtarlara göre ayırma (chainId, shard, topic).
3) İstek yolu: dengeleme, önbelleğe alma, QoS
L4/L7 dengeleme: sağlık kontrolleri, token/trace-id ile yapışkan, devre kesici, outlier-ejection.
Önbellekler:- Kenarda (sık okunan RPC'ler için kısa TTL);
- İşlemcinin içinde (okuma-yazma, dizinler için yazma);
- Negatif önbellekler (bulunamadı).
- QoS sınıfları: P0 (sonuçlandırma/köprü/ödemeler), P1 (ürün), P2 (toplu/arşiv).
- Backpressure: belirteçler/krediler, concur isteklerinin kısıtlanması, DLQ'lu kuyruklar.
- Kabul: Ön filtre (auth, limitler, coğrafi/yaptırımlar), "pahalı" taleplerin erken reddi.
4) Durum yönetimi: anlık görüntüler, budama, arşiv
Tam/Budanmış: RPC için budanmış düğümler; Arşiv - ayrı bir havuzda geriye dönük sorgular için.
Anlık görüntüler/hızlı senkronizasyon: düzenli anlık görüntüler, yeni kopyaların hızlı önyüklemesi.
Sıcak/Sıcak/Soğuk depolama: NVMe'de sıcak durum, tarihsel bloklar - indeksli S3/object.
Garbadge-collect/compaction: zamanlanmış pencereler, zirveler sırasında değil.
DA/Toplu tamponlar (L2/köprüler için): teslimat garantileri ve kanıt makbuzları ile temizleme süresi.
5) Kuyruklar ve akış
Giriş: Kafka/Pulsar/NATS с partition-key = 'chainId' shard 'topik'.
Tüketici grupları: taraflara göre ölçeklendirme, idempotent işleyici (giden kutusu/gelen kutusu).
DLQ ve retrai: üstel geri çekilme, zehirli mesaj karantinası.
Kararlaştırılmış düzen: determinizm için parti içinde.
6) Ulaşım ve ağ optimizasyonları
QUIC/HTTP/2: çoğullama, satır başı düzeltme.
TCP ayarı: BBR/CUBIC, artırılmış tamponlar, 'SO _ REUSEPORT'.
Çekirdek/eBPF: hızlandırılmış ağ yığını, dengeleme için tutarlı karma.
NIC boşaltma и IRQ к NUMA'yı sabitleme.
gRPC: keepalive/ping parametreleri, maksimum uçuş kısıtlamaları.
WebSocket: bağlantı havuzları, ping/pong, müşteri başına sınırlı abonelikler.
7) Güvenilirlik: Kuorumlar, bozulma, kaos testleri
Okuma/yazma nisabı (varsa), lider eskrim.
Degradation modes: readonly, "only finalised", kapalı ağır yöntemler.
Kaos mühendisliği: gecikmeler/kayıplar, yeniden başlatmalar, disk/ağ arızası, "yüksek hızlı reorg" senaryoları.
8) SLI/SLO ve hedefler
SLI (örnek):- Yöntem sınıfına göre p95 RPC gecikmesi;
- Başarı oranı; Kuyruk-lag p95;
- Zaman-sonluluk p95 (raylar/köprüler için);
- Snapshot önyükleme süresi;
- Devlet büyüme/gün; CPU/IO doygunluğu.
- P0 RPC p95 ≤ 400 ms; Kullanılabilirlik ≥ 99. 95%;
- Son röle p95 ≤ 3 dk;
- Kuyruk-lag P0 p95 ≤ 2 с;
- Bootstrap yeni okuyucu ≤ 30 мин (hızlı senkronizasyon + anlık görüntü);
- 2 saatlik pencerede bütçe yanması hatası ≤ 2 ×.
9) Gözlemlenebilirlik ve uyarı
Metrikler: gecikme (histogram), RPS, hatalar (sınıfa göre), kuyruk gecikmesi, GC/yığın, disk-io, p2p eşleri, dedikodu oranı.
İzler: Uçtan uca 'trace _ id' kenardan içeri RPC, indeksator, khraneniye, en çok.
Günlükler: yapılandırılmış, 'request _ id'ile korelasyon.
Uyarılar: Burn-rate P0, queue-lag, eşik değerin altında peer-count, reorg-spikes, snapshot-drift.
10) Otomatik ölçekleme desenleri
HPA/VPA (K8s): по CPU/gecikme/RPS/kuyruk gecikmesi; Topiaries uzunluğu KEDA.
Adım ölçekleme: gün tepe profilleri; ML/mevsimsellik tarafından öngörülebilir.
Isınma yedekleri: trafik olmadan ısınma kopyaları (zarif teşvik).
Güvenli kullanıma sunma: kanarya + outlier-ejection + SLO- гейты.
11) Güvenlik ve izolasyon
mTLS/anahtar sabitleme; Yöntemler başına RBAC/ABAC; Kuruluş/kiracı başına QoS sınırları.
Rate-limit ve DoS-shield: belirteçler, halka açık RPC'ler için captchalar, anomali algılama.
Gizli yönetim: kısa ömürlü belirteçler, rotasyon.
Sandboxes: Arşiv/Genel Müşteriler için Ayrı Poules.
12) Referans yapılandırmaları
12. 1 K8s: RPC Ağ Geçidi (Ölçek Çıkışı)
yaml apiVersion: apps/v1 kind: Deployment metadata: { name: rpc-gateway }
spec:
replicas: 6 strategy: { type: RollingUpdate, rollingUpdate: { maxSurge: 2, maxUnavailable: 0 } }
selector: { matchLabels: { app: rpc-gateway } }
template:
metadata: { labels: { app: rpc-gateway, qos: P0 } }
spec:
containers:
- name: gateway image: org/rpc-gateway:2. 4. 1 ports: [{ containerPort: 443 }]
resources:
requests: { cpu: "1", memory: "2Gi" }
limits: { cpu: "4", memory: "6Gi" }
env:
- { name: MAX_CONCURRENCY, value: "400" }
- { name: CACHE_TTL_MS, value: "200" }
readinessProbe: { httpGet: { path: /healthz, port: 443 }, initialDelaySeconds: 5, periodSeconds: 5 }
livenessProbe: { httpGet: { path: /livez, port: 443 }, initialDelaySeconds: 10, periodSeconds: 10 }
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: { name: rpc-gateway-hpa }
spec:
scaleTargetRef: { apiVersion: apps/v1, kind: Deployment, name: rpc-gateway }
minReplicas: 6 maxReplicas: 36 metrics:
- type: Pods pods:
metric:
name: request_latency_p95_ms target:
type: AverageValue averageValue: 350m # 350 мс
12. 2 Elçi: Önceliklendirme ve aykırı-çıkarma
yaml clusters:
- name: readers type: EDS lb_policy: LEAST_REQUEST outlier_detection:
consecutive_5xx: 5 interval: 2s base_ejection_time: 30s circuit_breakers:
thresholds:
- priority: DEFAULT max_connections: 20000 max_pending_requests: 5000 max_requests: 20000 health_checks:
- timeout: 1s interval: 3s http_health_check: { path: /healthz }
route_config:
request_headers_to_add:
- header: { key: x-trace-id, value: "%REQ(X-TRACE-ID)%" }
weighted_clusters:
clusters:
- name: readers weight: 100
12. 3 Kafka: etki alanına göre bölümleme
yaml topic: "rpc. events"
partitions: 48 replicationFactor: 3 config:
retention. ms: 604800000 # 7 days max. message. bytes: 1048576 min. insync. replicas: 2 cleanup. policy: delete
12. 4 QoS ve Limitler Politikası
yaml qos:
P0:
rps_limit_per_org: 1500 queue_lag_p95_ms: 2000 retry: { attempts: 3, backoff_ms: [100,400,800] }
P1:
rps_limit_per_org: 800
P2:
rps_limit_per_org: 200 admissions:
denylist_methods: ["eth_getLogs(>10k blocks)"]
heavy_query_guard: { max_range_blocks: 5000, require_token: true }
13) Veri şemaları ve örnek sorgular
13. 1 Düğüm metrikleri (dizin)
sql
CREATE TABLE node_metrics (
ts TIMESTAMPTZ,
node_id TEXT, role TEXT, region TEXT,
rps INT, latency_p95_ms INT, errors_5xx INT,
queue_lag_ms INT, cpu NUMERIC, mem NUMERIC, io_wait NUMERIC
);
13. 2 SLO kontrolü ve yanma oranı
sql
SELECT date_trunc('hour', ts) AS h, role,
AVG(latency_p95_ms) AS p95,
100. 0 SUM(CASE WHEN latency_p95_ms <= 400 THEN 1 ELSE 0 END)/COUNT() AS slo_hit_pct
FROM node_metrics
WHERE ts >= now() - INTERVAL '24 hours'
GROUP BY 1,2;
13. 3 Yük planlaması
sql
SELECT region, role,
PERCENTILE_CONT(0. 95) WITHIN GROUP (ORDER BY rps) AS rps_p95,
PERCENTILE_CONT(0. 95) WITHIN GROUP (ORDER BY queue_lag_ms) AS lag_p95
FROM node_metrics
WHERE ts >= now() - INTERVAL '7 days'
GROUP BY region, role;
14) Çalışma düzenlemeleri
Günlük: SLO raporu, capacy delta, anlık görüntü durumu, akran sağlığı.
Haftalık: limitlerin/QoS'nin gözden geçirilmesi, DR testi (anlık görüntüden önyükleme), budama ve kompresenlerin kontrol edilmesi.
Yayınlanmadan önce: kanarya sunumu, SLO kapıları ve gözlemlenen metrikler, geri alma planı.
Maliyet muhasebesi: 1k istekleri başına CTS, TPS_per_$ (dolar başına verimlilik).
15) Playbook olayları
A. RPC p95 gecikme patlaması
1. P2-throttle ve daha düşük örneklemeyi etkinleştirin; 2) ağ geçidi/okuyucu kopyalarını artırmak;
2. Bazı trafiği yalnızca önbelleğe aktarın. 4) gerekirse sıcak yöntemlerin analizini açın - inkar kuralları.
B. otobüste kuyruk gecikmesi> SLO
1. Otomatik ölçekli tüketiciler (KEDA), 2) tarafları yeniden dağıtır, 3) toplu işleri geçici olarak durdurur.
C. doğrulayıcı/rölede akran sayımı düşüşü
1. P2p modüllerini yeniden başlatın, 2) koltukları değiştirin, 3) ACL/NAT ağını kontrol edin, 4) anahtar koruması.
D. uzun bootstrap yeni kopya
1. Yeni anlık görüntüye geçin, 2) IO bant genişliğini yükseltin, 3) arşiv dizinlerini geçici olarak kaldırın.
E. Spike reorg/köprü gecikmeleri
1. K-onaylarını/penceresini büyüt, 2) "sadece kesinleşmiş" modunu etkinleştir, 3) tüketicileri bilgilendir.
16) Uygulama kontrol listesi
1. Site rollerini ve bunların SLO'larını/hata bütçelerini tanımlayın.
2. Fonksiyonları taşımak için: consensus/RPC/indexer/archive/bridge/edge.
3. DLQ ile dengeleme, QoS, geri basınç ve kuyruk özelliğini etkinleştirin.
4. Anlık görüntüler/hızlı senkronizasyon, budama ve katmanlama ayarlayın.
5. Metrikleri/izleri/günlükleri, panoları ve yanma oranı uyarılarını bağlayın.
6. Otomatik ölçekleme (HPA/KEDA) ve kanarya sürümlerini ayarlayın.
7. Kaos testleri ve düzenli DR egzersizleri yapın.
8. İşletme yönetmeliklerini ve maliyet kontrolünü tanıtın.
17) Sözlük
Geri basınç - aşırı yükleme sırasında giriş akışını kontrol etmek için mekanizmalar.
DLQ - sorunlu mesajlar için "ölü kuyruk".
Budama - geçerli pencerenin dışındaki tarihsel durumu silin.
Hızlı senkronizasyon/Anlık Görüntü, yeni bir kopyayı senkronize etmenin hızlandırılmış bir yoludur.
Outlier-ejection - havuzdan bozulmuş örneklerin dışlanması.
Yakma oranı - SLO'ya göre hata bütçesi tüketim oranı.
Alt satır: ağ düğümlerini ölçeklendirmek sadece "kopyaları eklemek'değil, mimarinin sistem disiplini, QoS, devlet yönetimi ve operasyonel titizliktir. Bu çerçeveyi (rol ayrımı, kuyruklar, önbellekler, otomatik ölçeklendirme, gözlemlenebilirlik ve net SLO'lar) izleyerek, ekosistem öngörülebilir performans, en yüksek esneklik ve birim trafik başına kontrol edilebilir maliyet kazanır.