GH GambleHub

Tor düwünlerini masştablamak

(Bölüm: Ekosistema we Tor)

1) Düwünleriň rollary we traffigiň konturlary

Tassyklaýjy/öndüriji (consensus/block/rollub-sequencer): gutarmagyň möhüm ýoly.
Reader/indeksator (read-only/API/arhiw): programmalaryň we analitikleriň haýyşlaryna hyzmat edýär.
Releer/Bridge (cross-domain): domenleriň arasynda habarlary/aktiwleri geçirmek.
Şlýuz/edge (ingress/gRPC/WebSocket/QUIC): Müşderi soraglaryny kabul etmek, rate-limit, kesh.
Telewizor metriýasy/syn edilmegi: metrikleri/loglary/treýsleri ýygnamak, sintetiki nusgalar.

Her rol üçin - öz SLO, ýalňyşlyklaryň býudjeti we masştabyň syýasaty.

2) Masştab modelleri

2. 1 Dik (scale-up)

CPU/RAM/SSD/NIC. Iň ýokary derejeler üçin çalt, ýöne demir bilen çäklenýär we ulag birliginiň bahasyny ýokarlandyryp biler.

2. 2 Gorizontal (scale-out)

Balanslaýjylaryň/nobatlaryň aňyrsyna göçürmeleri goşmak. Idempotentlik, sticky-syýasatçy, kworum we ylalaşylan keşler (ýa-da olaryň maýyplygy) talap edýär.

2. 3 Funksional dargamak

Borçlaryň bölünmegi: konsensus düwünleri izolirlenýär; RPC/API - aýratyn; indeksator/arhiw - aýratyn; bridge/relayer - aýratyn.

2. 4 Geo-skeýl

Sebitleýin toparlar (EU/US/AP) + anycast/GeoDNS/Latency Aware LB; jemlemek/gijikdirmek we ýerli keş bilen köpeltmek.

2. 5 Şarding/partiýa ýerleşdirmek

Nobatlar/indeksatorlar we sütün saklaýjylar üçin açarlar boýunça bölünişi (chainId, shard, topic).

3) Sorag ýoly: deňagramlylyk, kesh, QoS

L4/L7 deňagramlylygy: health-checks, sticky/trace-id, circuit-breaker, outlier-ejection.

Keshler:
  • edge (köplenç okalýan RPC üçin short-TTL);
  • prosessoryň içinde (indeksler üçin read-through, write-around);
  • negatiw keşler (tapylmady).
  • QoS synplary: P0 (gutarmak/köpri/tölegler), P1 (azyk önümleri), P2 (bulk/arhiw).
  • Backpressure: tokenler/karzlar, concur-haýyşlary çäklendirmek, DLQ bilen nobatlar.
  • Admissions: pre-süzgüç (auth, limitler, geo/sanksiýalar), "gymmat" haýyşlaryň irki ret edilmegi.

4) Ýagdaýy dolandyrmak: snapshotlar, pruning, arhiw

Doly/Pruned: RPC üçin pruned-düwünler; Archive - aýratyn howuzda retrospektiv soraglar üçin.
Snapshotlar/fast-sync: yzygiderli snapshotlar, çalt bootstrap täze sözler.
Hot/Warm/Cold saklamak: NVMe-de gyzgyn ýagdaý, taryhy bloklar - S3/indeksli obýekt.
Garbadge-collect/compaction: iň ýokary wagty däl, meýilleşdirilen penjireler.
DA/Batch-buferler (L2/köprüler üçin): pruf-kwitansiýalar bilen eltip bermek kepillikleri we arassalamak döwri.

5) Nobatlar we akym bejergisi

Ingress: Kafka/Pulsar/NATS с partition-key = `chainId|shard|topic`.
Konsumer toparlary: partiýa boýunça masştablamak, idempotent prosessor (outbox/inbox).
DLQ we retralar: eksponensial backoff, poison-message karantini.
Ylalaşylan tertip: partiýanyň çäginde determinizm üçin.

6) Ulag we tor optimizasiýalary

QUIC/HTTP/2: multiplekslemek, head-of-line düzediş.
TCP sazlamak: BBR/CUBIC, ulaldylan buferler, 'SO _ REUSEPORT'.
Kernel/eBPF: deňagramlylyk üçin çaltlaşdyrylan tor steki, konsistent heşi.
NIC offload и pinning IRQ к NUMA.
gRPC: keepalive/ping parametrleri, max-inflight çäklendirmeleri.
WebSocket: birikme howuzlary, ping/pong, müşderä ýazylmagyň çäklendirilmegi.

7) Ygtybarlylyk: kworumlar, zaýalanma, bulam-bujarlyk synaglary

Okamak/ýazmak kworumy (mümkin bolsa), lideriň fensingi.
Pese gaçmak düzgünleri: readonly, "diňe gutarnykly", agyr usullary öçürmek.
Chaos-in engineeringenerçilik: gijikdirmeler/ýitgiler, täzeden başlamalar, disk/toruň şowsuzlygy, "tizlikli reorg" ssenarisi.

8) SLI/SLO we maksatlaýyn görkezijiler

SLI (mysal):
  • p95 RPC latency usullaryň synplary boýunça;
  • Success-rate; Queue-lag p95;
  • Time-to-finality p95 (releýler/köprüler üçin);
  • Snapshot bootstrap time;
  • State growth/day; CPU/IO saturation.
SLO:
  • P0 RPC p95 ≤ 400 ms; Availability ≥ 99. 95%;
  • Finality relay p95 ≤ 3 min;
  • Queue-lag P0 p95 ≤ 2 с;
  • Bootstrap new reader ≤ 30 мин (fast-sync+snapshot);
  • Error budget burn 2 sagatlyk penjire boýunça ≤ 2 ×.

9) Syn etmek we alerting

Metrikler: latency (histogram), RPS, errors (synplar boýunça), queue-lag, GC/heap, disk-io, p2p peers, gossip-rate.
Söwda: edge → RPC → indeksator → saklamak → köpri arkaly 'trace _ id' arkaly.
Loglar: gurluş, 'request _ id' bilen baglanyşyk.
Alertler: burn-rate P0, queue-lag, peer-count, reorg-spayki, snapshot-drift.

10) Awtoskeýlingiň patternleri

HPA/VPA (K8s): по CPU/latency/RPS/queue-lag; Topikleriň uzynlygy boýunça KEDA.
Step-scaling: Gündelik iň ýokary profiller; Predictive ML/möwsümliligi boýunça.
Warm-spares: traffiksiz gyzdyrylan replikalar (graceful promote).
Safe rollout: canary + outlier-ejection + SLO-гейты.

11) Howpsuzlyk we izolýasiýa

mTLS/pinning açarlary; usullar üçin RBAC/ABAC; QoS çäkleri per org/tenant.
Rate-limit we DoS-shield: köpçülik RPC üçin bellikler, kapçalar, anomaliýa-detekt.
Gizlin dolandyryş: gysga ömürli bellikler, aýlaw.
Gum gutulary: arhiw/köpçülige açyk müşderiler üçin aýratyn boşluklar.

12) Salgylanma konfigurasiýalary

12. 1 K8s: RPC şlýuzy (gorizontal masştaby)

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 Envoy: ileri tutulýan we outlier-ejection

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: domen boýunça partiýa

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 we çäkler syýasaty

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) Maglumatlaryň shemalary we haýyşlaryň mysallary

13. 1 Düwün ölçegleri (katalog)

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-gözegçilik we burn-rate

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 Ýükleri meýilleşdirmek

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) Ekspluatasiýa düzgünleri

Her gün: SLO, kapasiti-delta, snapshot ýagdaýy, peer-health boýunça hasabat.
Her hepde: çäklendirmeleri gözden geçirmek/QoS, DR synagy (snapshot-dan bootstrap), pruning we kompakşenleri barlamak.
Goýberilmezden öň: kanar rollout, SLO-geýtlar we syn edilýän metrikler, yza gaýdyp geliş meýilnamasy.
Gymmaty hasaba almak: CTS per 1k soraglar, TPS_per_$ (dollara netijelilik).

15) Playbook hadysalary

A. Gizlinlik partlamasy RPC p95

1. Sampling P2-throttle açyň; 2) gateway/reader belliklerini köpeltmek;

2. traffigiň bir bölegini diňe kesele geçirmek; 4) gyzgyn usullaryň seljermesini açmak, zerur bolsa - deny-rules.

B. tekerde queue-lag> SLO

1. Konsumerleriň awtoskeýli (KEDA), 2) partiýany gaýtadan paýlamak, 3) bulk-joblary wagtlaýyn duruzmak.

C. Walidatorda/releýde peer-count ýykylmagy

1. P2p modullaryny täzeden başlamak, 2) oturgyçlary üýtgetmek, 3) ACL/NAT torlaryny barlamak, 4) ätiýaçlyga geçmek.

D. Täze göçürmäniň uzyn bootstrap

1. Täze snapşota geçmek; 2) IO-nyň geçirijilik ukybyny ýokarlandyrmak; 3) arhiw indekslerini wagtlaýyn aýyrmak.

E. reorg/köpri gijikdirmeleri

1. K-tassyklamalary/penjiräni köpeltmek, 2) "finalized-only" re modeimini açmak, 3) sarp edijilere habar bermek.

16) Girizmegiň çek-sanawy

1. Düwünleriň we olaryň SLO/ýalňyşlyk býudjetleriniň rollaryny kesgitlemek.
2. Funksiýalary ýaýratmak: consensus/RPC/indeksator/arhiw/köpri/edge.
3. Deňagramlylygy, QoS, backpressure we DLQ bilen nobaty açyň.
4. Snapshotlary/fast-sync, pruning we köp derejeli saklamak.
5. Metrikleri/treysleri/logleri, daşbordlary we burn-rate alertlerini birikdirmek.
6. Awtoulag skelingini (HPA/KEDA) we kanar relizlerini sazla.
7. Bulam-bujarlyk synaglaryny we yzygiderli DR maşklaryny geçirmek.
8. Amal düzgünlerini we çykdajylara gözegçiligi girizmek.

17) Sözlük

Backpressure - artykmaç ýüklenende giriş akymyny dolandyrmagyň mehanizmleri.
DLQ - problemaly habarlar üçin "öli nobat".
Pruning - häzirki penjiräniň daşyndaky taryhy ýagdaýy aýyrmak.
Çalt sync/Snapshot - täze göçürmäni sinhronlamagyň çaltlaşdyrylan usuly.
Outlier-ejection - bozulan ýagdaýlary howuzdan aýyrmak.
Burn-rate - SLO degişlilikde ýalňyşlyklaryň býudjetini sarp etmegiň tizligi.

Netije: tor düwünleriniň masştaby diňe bir "göçürme goşmak" däl, eýsem arhitekturanyň, QoS-iň, ýagdaýy dolandyrmagyň we operasiýa berkliginiň ulgamlaýyn düzgünidir. Bu freýmworkdan (rollaryň bölünmegi, nobatlar, keşler, awtoskeýl, gözegçilik we aýdyň SLO) soň ekosistema öňünden aýdyp boljak öndürijiligi, iň ýokary derejä çydamlylygy we traffigiň birligine gözegçilik edilýän bahany alýar.

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.