Тармак түйүндөрүн масштабдоо
(Бөлүм: Экосистема жана тармак)
1) Түйүндөрдүн ролдору жана трафиктин контурлары
Валидациялоочу/өндүрүүчү (consensus/block/rollub-sequencer): критикалык финалдык жол.
Reader/Index (read-only/API/архив): колдонмо жана аналитика суроо-талаптарды тейлейт.
Релер/көпүрө (cross-domain): домендердин ортосундагы билдирүүлөрдү/активдерди өткөрүп берүү.
Шлюз/edge (ingress/gRPC/WebSocket/QUIC): кардарларды кабыл алуу, rate-limit, кэш.
Теледолбоор/байкоо: метриктер/логдор/жолдор чогултуу, синтетикалык үлгүлөр.
Ар бир ролу үчүн - өз SLO, бюджет каталар жана масштабдоо саясаты.
2) Масштабдоо моделдери
2. 1 Тик (scale-up)
CPU/RAM/SSD/NIC жогорулатуу. Тез чокулары үчүн, бирок темир менен чектелген жана трафик бирдигинин баасын көтөрө алат.
2. 2 Горизонталдуу (scale-out)
Баланстоочуларга/кезектерге реплика кошуу. Демпотенттикти, sticky-саясатчыны, кворумду жана макулдашылган кэштерди (же алардын майыптыгын) талап кылат.
2. 3 Функционалдык бөлүштүрүү
Милдеттерди бөлүштүрүү: consensus түйүндөрү обочолонгон; RPC/API - өзүнчө; индексатор/архив - өзүнчө; bridge/relayer - өзүнчө.
2. 4 Гео-скейл
Регионалдык кластерлер (EU/US/AP) + anycast/GeoDNS/Latency Aware LB; акыркы/кечигүү жана жергиликтүү кэш менен репликация.
2. 5 Sharding/партиялаштыруу
Ачкычтар боюнча бөлүү (chainId, shard, topic) үчүн кезек/индексторлор жана мамычалар сактоо.
3) Сурам жолу: баланстоо, кэш, QoS
L4/L7 балансы: ден соолук текшерүүлөр, sticky токен/trace-id, circuit-breaker, outlier-ejection.
Кэштер:- боюнча edge (көп окулган RPC үчүн short-TTL);
- процессордун ичинде (индекстер үчүн read-through, write-around);
- терс кэштер (табылган жок).
- QoS класстар: P0 (бүтүрүү/көпүрө/төлөмдөр), P1 (азык-түлүк), P2 (bulk/архив).
- Backpressure: токендер/кредиттер, concur-суроо чектөө, DLQ менен кезек.
- Admissions: алдын ала чыпкасы (auth, лимиттер, гео/жаза), эрте четке "кымбат" суроо.
4) мамлекеттик башкаруу: snapshots, pruning, архив
Full/Pruned: RPC үчүн pruned түйүндөр; Archive - өзүнчө көлмөдө retrospective суроо үчүн.
Snapshot/fast-sync: үзгүлтүксүз snapshot, тез bootstrap жаңы реплика.
Hot/Warm/Cold сактоо: NVMe ысык абалы, тарыхый блоктор - S3/индекстер менен объект.
Garbadge-collect/compaction: пландаштырылган терезелер, чокулары учурунда эмес.
DA/Batch буферлери (L2/көпүрөлөр үчүн): жеткирүү кепилдиктери жана пруф дүмүрчөктөрү менен тазалоо мөөнөтү.
5) кезек жана агымы иштетүү
Ingress: Kafka/Pulsar/NATS с partition-key = `chainId|shard|topic`.
Consumer Group: партиялык масштабдоо, idempotent иштетүүчү (outbox/inbox).
DLQ жана Retray: экспоненциалдык backoff, poison-message карантин.
Макулдашылган тартип: детерминизм үчүн партиянын алкагында.
6) Транспорт жана тармактык оптималдаштыруу
QUIC/HTTP/2: multiplexing, head-of-line оңдоо.
TCP-тюнинг: BBR/CUBIC, жогорулатылган буферлер, 'SO _ REUSEPORT'.
Kernel/eBPF: тездетилген тармактык стек, баланстоо үчүн консистенттик хеш.
NIC offload и pinning IRQ к NUMA.
gRPC: keepalive/ping параметрлери, max-inflight чектөөлөр.
WebSocket: байланыш пулдары, ping/pong, кардарга жазылууну чектөө.
7) Ишенимдүүлүк: кворумдар, деградация, башаламандык тесттери
Окуу/жазуу кворуму (эгер колдонулса), лидердин фенсинги.
Деградация режимдери: readonly, "гана бүтүрүү", оор ыкмаларды өчүрүү.
Chaos-Engineering: кечигүү/жоготуу, кайра баштоо, дисктин/тармактын бузулушу, "жогорку ылдамдыктагы record" жагдайда.
8) SLI/SLO жана максаттуу көрсөткүчтөрү
SLI (мисал):- p95 RPC latency ыкмалар класстары боюнча;
- Success-rate; Queue-lag p95;
- Time-to-finality p95 (релейлер/көпүрөлөр үчүн);
- Snapshot bootstrap time;
- State growth/day; CPU/IO saturation.
SLO
P0 RPC p95 ≤ 400 мс; Availability ≥ 99. 95%;
Finality relay p95 ≤ 3 мин;
Queue-lag P0 p95 ≤ 2 с;
Bootstrap new reader ≤ 30 мин (fast-sync+snapshot);
Error budget burn 2 саат терезе ≤ 2 ×.
9) Байкоо жана алертинг
Метриктер: latency (histogram), RPS, errors (класстар боюнча), queue-lag, GC/heap, disk-io, p2p peers, gossip-rate.
Traces: аркылуу 'trace _ id' edge → RPC → индексатор → сактоо → көпүрө аркылуу.
Логи: структураланган, 'request _ id' боюнча корреляция.
Alerty: burn-rate P0, queue-lag, peer-count төмөнкү босого, reorg-спайк, snapshot-drift.
10) Автоскейлинг үлгүлөрү
HPA/VPA (K8s): по CPU/latency/RPS/queue-lag; KEDA топик узундугу боюнча.
Step-scaling: күндүзгү чокулардын профилдери; ML/сезондук Predictive.
Warm-spares: traffic жок жылытылган көчүрмөлөрү (graceful promote).
Safe rollout: canary + outlier-ejection + SLO-гейты.
11) Коопсуздук жана изоляция
mTLS/пиннинг ачкычтар; ыкмалары боюнча RBAC/ABAC; QoS-лимиттери per org/tenant.
Rate-limit жана DoS-shield: токендер, коомдук RPC үчүн капчыктар, аномалия-деталдар.
Жашыруун башкаруу: кыска мөөнөттүү токендер, ротация.
Sandbox: Archive/коомдук кардарлар үчүн өзүнчө көзөнөк.
12) Шилтеме конфигурациялары
12. 1 K8s: RPC кулпу (горизонталдуу масштабдоо)
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: артыкчылыктуу жана 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: домендер боюнча партиялаштыруу
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 саясаты жана лимиттери
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) Маалыматтар схемалары жана суроо-үлгүлөр
13. 1 Түйүндөрдүн метрикасы (каталог)
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-башкаруу жана 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 Жүктү пландаштыруу
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) Эксплуатациялык регламенттер
Күн сайын: SLO боюнча отчет, capacity-дельта, snapshot абалы, peer-health.
Жума сайын: лимиттерди текшерүү/QoS, DR тест (snapshot тартып bootstrap), прунинг жана компакшен текшерүү.
бошотуу алдында: Канар Rollout, SLO-Гейтс жана байкалган өлчөмдөрү, кайра план.
Баалуулукту эсепке алуу: CTS per 1k суроо-талаптар, TPS_per_$ (долларга натыйжалуулугу).
15) Playbook окуялар
A. RPC p95 жашыруун жарылуу
1. күйгүзүү P2-throttle жана төмөндөтүү sampling; 2) gateway/reader репликаларын көбөйтүү;
2. трафиктин бир бөлүгүн кэш-гана которуу; 4) зарыл болсо, ысык ыкмаларды талдоо ачуу - deny-rules.
B. Дөңгөлөктөгү Queue-lag> SLO
1. Autoscale Consumer (KEDA), 2) партияларды кайра бөлүштүрүү, 3) убактылуу Булк-Джоб токтотуу.
C. Валидатордун/релейдин алдында peer-count түшүүсү
1. P2P модулдарын кайра иштетүү, 2) отургучтарды алмаштыруу, 3) ACL/NAT тармактарын текшерүү, 4) резервге өтүү.
D. узак bootstrap жаңы реплика
1. Жаңы снапшотко өтүү, 2) IO өткөрүү жөндөмдүүлүгүн жогорулатуу, 3) архивдик индекстерди убактылуу алып салуу.
E. reorg спайк/көпүрө кечигүү
1. K-тастыктоо/терезени көбөйтүү, 2) "finalized-only" режимин күйгүзүү, 3) керектөөчүлөргө маалымат берүү.
16) Киргизүү чек-тизмеси
1. Түйүндөрдүн ролун жана алардын SLO/ката бюджеттерин аныктоо.
2. Функцияларды бөлүштүрүү: consensus/RPC/индексатор/архив/көпүрө/edge.
3. Балансты, QoS, backpressure жана DLQ менен кезекти күйгүзүү.
4. snapshots/fast-sync, pruning жана көп баскычтуу сактоо.
5. Metrics/Trade/Logi, Dashboard жана burn-rate Алерт туташтыруу.
6. Автоскейлингди (HPA/KEDA) жана канар релиздерин орнотуу.
7. Башаламандык-тесттер жана үзгүлтүксүз DR-машыгууларды өткөрүү.
8. Операциялык регламенттерди киргизүү жана наркын контролдоо.
17) Глоссарий
Backpressure - ашыкча жүктөөдө кирүү агымын башкаруу механизмдери.
DLQ - көйгөйлүү билдирүүлөр үчүн "өлүк кезек".
Pruning - учурдагы терезеден тышкары тарыхый абалын алып салуу.
Fast-sync/Snapshot - бул жаңы репликаны синхрондоштуруунун тездетилген жолу.
Outlier-ejection - бассейнден бузулган учурларды алып салуу.
Burn-rate - SLO карата ката бюджеттин керектөө ылдамдыгы.
Жыйынтык: тармактык түйүндөрдү масштабдоо - бул "реплика кошуу" гана эмес, архитектура, QoS, мамлекеттик башкаруу жана операциялык катаалдыктын системалык дисциплинасы. Бул Framework (ролдорду бөлүү, кезек, кэш, autoscale, байкоо жана так SLO) ээрчип, экосистема жол бирдиги үчүн алдын ала аткаруу, жогорку туруктуулук жана контролдонуучу наркы алат.