GH GambleHub

Tarmoq tugunlarini kattalashtirish

(Bo’lim: Ekotizim va Tarmoq)

1) Uzellar rollari va trafikning konturlari

Validlovchi/ishlab chiqaruvchi (consensus/block/rollub-sequencer): yakunlashning tanqidiy yo’li.
Rider/indeksator (read-only/API/arxiv): ilovalar va tahlillarning so’rovlariga xizmat qiladi.
Releer/moslama (cross-domain): domenlar orasidagi xabarlarni/aktivlarni koʻchirish.
Shlyuz/edge (ingress/gRPC/WebSocket/QUIC): mijoz soʻrovlarini qabul qilish, rate-limit, kesh.
Tele metriya/kuzatuvchanlik: metrik/loglar/treyslarni yig’ish, sintetik namunalar.

Har bir rol uchun - o’z SLOlari, xatolar byudjeti va kengaytirish siyosati.

2) Ko’paytirish modellari

2. 1 Vertikal (scale-up)

CPU/RAM/SSD/NIC. Cho’qqilar uchun tez, ammo temir bilan cheklangan va trafik birligi narxini oshirishi mumkin.

2. 2 Gorizontal (scale-out)

Muvozanatlashtiruvchilar/navbatlar uchun nusxalar qoʻshish. Idempotentlik, sticky-siyosatchi, kvorum va kelishilgan kesshlarni (yoki ularni nogironlashtirishni) talab qiladi.

2. 3 Funksional tarqalish

Vazifalar bo’linishi: consensus uzellari izolyatsiya qilinadi; RPC/API - alohida; indeksator/arxiv - alohida; bridge/relayer - alohida.

2. 4 Geo-skeyl

Mintaqaviy klastyerlar (EU/US/AP) + anycast/GeoDNS/Latency Aware LB; yakuniy/kechikishlar va mahalliy keshlar bilan replikatsiya qilish.

2. 5 Sharding/partiyalashtirish

Navbatlar/indeksatorlar va ustunli saqlovchilar uchun kalitlar (chainId, shard, topic) boʻyicha boʻlish.

3) So’rov yo’li: balanslash, keshlash, QoS

L4/L7 balanslash: health-checks, sticky by token/trace-id, circuit-breaker, outlier-ejection.

Keshlar:
  • edge (tez-tez o’qiladigan RPC uchun short-TTL);
  • protsessor ichida (indekslar uchun read-through, write-around);
  • salbiy keshlar topilmadi.
  • QoS-klasslar: P0 (yakunlash/ko’prik/to’lovlar), P1 (oziq-ovqat), P2 (bulk/arxiv).
  • Backpressure: tokenlar/kreditlar, concur-so’rovlarni cheklash, DLQ bilan navbatlar.
  • Admissions: pre-filtr (auth, limitlar, geo/sanksiyalar), «qimmat» so’rovlarni erta rad etish.

4) Ahvolni boshqarish: snapshotlar, pruning, arxiv

Full/Pruned: RPC uchun pruned-tugunlar; Archive - alohida hovuzdagi retrospektiv so’rovlar uchun.
Snapshotlar/fast-sync: muntazam snapshotlar, tezkor bootstrap yangi nusxalar.
Hot/Warm/Cold saqlash: NVMe issiq holati, tarixiy bloklar - S3/obyekt indekslari.
Garbadge-collect/compaction: rejali oynalar.
DA/Batch-buferlar (L2/ko’priklar uchun): yetkazib berish kafolatlari va pruf-kvitansiyalar bilan tozalash davri.

5) Navbatlar va oqim bilan ishlov berish

Ingress: Kafka/Pulsar/NATS с partition-key = `chainId|shard|topic`.
Konsumer guruhlari: partiyalar bo’yicha kattalashtirish, idempotent ishlov beruvchisi (outbox/inbox).
DLQ va retrajlar: eksponensial backoff, poison-message karantini.
Kelishilgan tartib: determinizm uchun partiya doirasida.

6) Transport va tarmoqni optimallashtirish

QUIC/HTTP/2: multiplekslash, head-of-line tuzatish.
TCP-tyuning: BBR/CUBIC, kattalashtirilgan buferlar,’SO _ REUSEPORT’.
Kernel/eBPF: tezlashtirilgan tarmoq steki, muvozanatlash uchun konsistent xesh.
NIC offload и pinning IRQ к NUMA.
gRPC: keepalive/ping parametrlari, max-inflight cheklovlari.
WebSocket: ulanish pullari, ping/pong, mijozga obuna boʻlishni cheklash.

7) Ishonchlilik: kvorumlar, degradatsiya, xaos-testlar

O’qish/yozish kvorumi (agar qo’llash mumkin bo’lsa), etakchining fensingi.
Degradatsion rejimlar: readonly, «faqat yakunlangan», og’ir usullarni o’chirish.
Chaos-muhandislik: kechikishlar/yo’qotishlar, qayta ishga tushirishlar, disk/tarmoq nosozligi, «tezkor reorg» stsenariylari.

8) SLI/SLO va maqsadli ko’rsatkichlar

SLI (misol):
  • usullar sinflari bo’yicha p95 RPC latency;
  • Success-rate; Queue-lag p95;
  • Time-to-finality p95 (reley/ko’priklar uchun);
  • Snapshot bootstrap time;
  • State growth/day; CPU/IO saturation.
SLO (taxminlar):
  • 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 soatlik deraza bo’yicha ≤ 2 ×.

9) Kuzatish va alerting

Metriklar: latency (histogram), RPS, errors (sinflar bo’yicha), queue-lag, GC/heap, disk-io, p2p peers, gossip-rate.
Treyslar:’trace _ id’orqali edge → RPC → indeksator → saqlash → ko’prik.
Loglar: strukturalangan,’request _ id’bilan bogʻlangan.
Alertlar: burn-rate P0, queue-lag, peer-count ostonada, reorg-spayki, snapshot-drift.

10) Avtoskeyling patternlari

HPA/VPA (K8s): по CPU/latency/RPS/queue-lag; KEDA topiklar uzunligi boʻyicha.
Step-scaling: kunduzgi choʻqqilar profillari; Predictive ML/mavsumiylik bo’yicha.
Warm-spares: trafiksiz isitilgan nusxalar (graceful promote).
Safe rollout: canary + outlier-ejection + SLO-гейты.

11) Xavfsizlik va izolyatsiya

mTLS/pinning kalitlari; usullar uchun RBAC/ABAC; QoS-limitlar per org/tenant.
Rate-limit va DoS-shield: tokenlar, ommaviy RPC uchun kapchalar, anomaliya-detekt.
Sir-menejment: qisqa umr ko’rish tokenlari, rotatsiya.
Qum qutilari: arxiv/ommaviy mijozlar uchun alohida qutilar.

12) Referens konfiguratsiyalar

12. 1 K8s: RPC-shlyuz (gorizontal kattalashtirish)

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: ustuvorlik va 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: domenlar boʻyicha partiyalashtirish

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 va limitlar siyosati

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) Ma’lumotlar sxemalari va so’rovlar namunalari

13. 1 Uzellar metrikasi (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-nazorat va 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 Yuklama rejalashtirish

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) Foydalanish reglamentlari

Har kuni: SLO, kapasiti-delta, snapshotlarning holati, peer-health bo’yicha hisobot.
Har hafta: limitlar/QoS taftishi, DR (snapshotdan bootstrap) testi, pruning va kompakshenlarni tekshirish.
Relizdan oldin: kanar rollout, SLO-geytlar va kuzatiladigan metriklar, orqaga qaytish rejasi.
Qiymatni hisobga olish: CTS per 1k so’rovlar, TPS_per_$ (bir dollarga samaradorlik).

15) Hodisalar Playbook

A. Yashirlik portlashi RPC p95

1. Sampling P2-throttle yoqish va pasaytirish; 2) gateway/reader nusxalarini ko’paytirish;

2. trafikning bir qismini faqat keshga o’tkazish; 4) issiq usullar tahlilini ochish, zarur hollarda - deny-rules.

B. Shinadagi Queue-lag> SLO

1. Konsumerlarning avtoskeyli (KEDA), 2) partiyalarni qayta taqsimlash, 3) bulk-joblarni vaqtincha to’xtatish.

C. Validator/releyda peer-count qulashi

1. p2p modullarni qayta ishga tushirish, 2) sidlarni almashtirish, 3) tarmoq ACL/NATni tekshirish, 4) zaxiraga oʻtish.

D. Yangi nusxaning uzoq bootstrap

1. Yangi snapshotga o’tish; 2) IO o’tkazish qobiliyatini oshirish; 3) arxiv indekslarini vaqtincha olib tashlash.

E. reorg spayk/ko’prik kechikishlari

1. K-tasdiqlash/oynani ko’paytirish, 2) «finalized-only» rejimini yoqish, 3) iste’molchilarni xabardor qilish.

16) Joriy etish chek-varaqasi

1. Uzellar va ularning SLO/xato byudjetlarini aniqlash.
2. consensus/RPC/indeksator/arxiv/koʻprik/edge funksiyalarini tarqatish.
3. Balans, QoS, backpressure va DLQ bilan navbatni yoqish.
4. Snapshotlarni/fast-sync, pruning va koʻp darajali saqlashni moslash.
5. Metriklar/treyslar/loglar, dashbordlar va burn-rate alertalarini ulash.
6. Avtoskeyling (HPA/KEDA) va kanareya relizlarini moslash.
7. Xaos-testlar va muntazam DR-mashqlar o’tkazish.
8. Operatsion reglamentlar va qiymatni nazorat qilish joriy etilsin.

17) Glossariy

Backpressure - ortiqcha yuklashda kirish oqimini boshqarish mexanizmlari.
DLQ - muammoli xabarlar uchun «o’lik navbat».
Pruning - dolzarb oynadan tashqari tarixiy holatni olib tashlash.
Fast-sync/Snapshot - yangi nusxani sinxronlashtirishning tezlashtirilgan usuli.
Outlier-ejection - buzilgan instansiyalarni hovuzdan chiqarish.
Burn-rate - SLOga nisbatan xatolar byudjetini sarflash tezligi.

Xulosa: tarmoq uzellarini ko’paytirish nafaqat «replika qo’shish», balki arxitektura, QoS, holatni boshqarish va operatsion qattiqlikning tizimli fanidir. Ushbu freymvorkdan (rollar, navbatlar, keshlar, avtoskeyl, kuzatuv va aniq SLO) keyin ekotizim prognoz qilinadigan unumdorlik, cho’qqilarga chidamlilik va trafikning nazorat qilinadigan qiymatiga ega bo’ladi.

Contact

Biz bilan bog‘laning

Har qanday savol yoki yordam bo‘yicha bizga murojaat qiling.Doimo yordam berishga tayyormiz.

Telegram
@Gamble_GC
Integratsiyani boshlash

Email — majburiy. Telegram yoki WhatsApp — ixtiyoriy.

Ismingiz ixtiyoriy
Email ixtiyoriy
Mavzu ixtiyoriy
Xabar ixtiyoriy
Telegram ixtiyoriy
@
Agar Telegram qoldirilgan bo‘lsa — javob Email bilan birga o‘sha yerga ham yuboriladi.
WhatsApp ixtiyoriy
Format: mamlakat kodi va raqam (masalan, +998XXXXXXXX).

Yuborish orqali ma'lumotlaringiz qayta ishlanishiga rozilik bildirasiz.