Васеъ кардани гиреҳҳои шабака
(Қисмат: Экосистема ва шабака)
1) Нақшҳои гиреҳ ва ҳалқаҳои ҳаракат
Санҷиш/истеҳсол (консенсус/блок/rollup-sequencer): роҳи муҳими ниҳоӣ.
Хонанда/индексатсия (танҳо хондан/API/бойгонӣ): ба дархостҳо ва таҳлил хизмат мекунад.
Эстафета/пул (домени домейн): интиқоли паёмҳо/дороиҳо байни доменҳо.
Дарвоза/канор (ingress/gRPC/Web-Socket/QUIC): қабули дархостҳои муштарӣ, меъёри маҳдудият, кэш.
Метрикаи теле/мушоҳида: ҷамъоварии ченакҳо/гузоришҳо/пайгирӣ, намунаҳои синтетикӣ.
Ҳар як нақш SLO, буҷаи хатогӣ ва сиёсати миқёсан васеъ дорад.
2) Моделҳои миқёсан васеъ
2. 1 Миқёси боло
Зиёд кардани CPU/RAM/SSD/NIC. Рӯза барои қуллаҳо, аммо бо оҳан маҳдуд аст ва метавонад арзиши як воҳиди трафикро афзоиш диҳад.
2. 2 Миқёси берун
Илова кардани нусхаҳо дар паси тавозунҳо/навбатҳо. Идемпотентсия, сиёсати часпанда, кворум ва кэшҳои пайваста (ё маъюбии онҳо) -ро талаб мекунад.
2. 3 Гуногунии функсионалӣ
Тақсимоти вазифаҳо: гиреҳҳои консенсус ҷудо карда шудаанд; RPC/API - алоҳида; индексатор/бойгонӣ - алоҳида; пул/эстафета - алоҳида.
2. 4 Ҷадвали гео
Кластерҳои минтақавӣ (EU/US/AP) + дилхоҳ/GeodNS/Latency Aware LB; Нусхабардорӣ бо ниҳоӣ/ниҳонӣ ва кэшҳои маҳаллӣ
2. 5 Sharding/тақсимот
Ҷудосозӣ аз рӯи тугмаҳо (занҷир, шард, мавзӯъ) барои навбатҳо/индексатсияҳо ва анборҳои сутун.
3) Роҳи дархост: мувозинат, кэшинг, QOS
L4/L7 мувозинат: санҷишҳои тиббӣ, часпак бо нишона/пайгирӣ-id, схемачӣ, берунӣ-ejection.
Кэшҳо:- дар канор (кӯтоҳ TTL барои хондани RPC-ҳо);
- дар дохили протсессор (хондан, навиштан барои индексатсияҳо);
- кэшҳои манфӣ (ёфт нашуданд).
- Синфҳои QOS: P0 (ниҳоӣ/пул/пардохт), P1 (маҳсулот), P2 (маҷмӯа/бойгонӣ).
- Backpressure: нишонаҳо/қарзҳо, маҳдудияти дархостҳои ризоият, навбатҳо бо DLQ.
- Қабул: пеш аз филтр (auth, маҳдудиятҳо, гео/санксияҳо), рад кардани пеш аз дархостҳои "гарон".
4) Идоракунии вазъ: лаҳзаҳо, навдаро, бойгонӣ
Пурра/бурида: гиреҳҳои буридашуда барои RPC; Бойгонӣ - барои дархостҳои ретроспективӣ дар ҳавзи алоҳида.
Суратҳо/тез-синхронизатсия: лаҳзаҳои муқаррарӣ, пурборкунии босуръати нусхаҳои нав.
Нигоҳдории гарм/гарм/хунук: ҳолати гарм дар NVM .e, блокҳои таърихӣ - S3/object бо нишондиҳандаҳо.
Garbadge-ҷамъоварӣ/фишурдасозӣ: тирезаҳои ба нақша гирифташуда, на дар қуллаҳо.
Буферҳои DA/Batch (барои L2/пулҳо): кафолати таҳвил ва давраи тозакунӣ бо квитансияҳои исботшуда.
5) Навбат ва ҷараён
Ingress: Кафка/Пулсар/NATS s partition-key = 'chain' Id 'shard' topic '.
Гурӯҳҳои истеъмолкунандагон: миқёси тарафҳо, коркарди номатлуб (outbox/inbox).
DLQ ва retrai: бозгашти экспоненсиалӣ, карантини заҳролуд.
Тартиби мувофиқашуда: дар дохили ҳизб барои детерминизм.
6) Оптимизатсияи нақлиёт ва шабака
QUIC/HTTP/2: мултиплексинг, ислоҳи сари хат.
Танзими TCP: BBR/CUBIC, зиёдшавии буферҳо, 'SO _ REUSEPORT'.
Ядрои/EBPF: анбори босуръати шабака, ҳаши пайваста барои мувозинат.
NIC сарбории i pinning IRQ k NUMA.
GRPC: параметрҳои keepalive/ping, маҳдудиятҳои максималӣ.
Websocket: ҳавзҳои пайвастшавӣ, пинг/понг, обунаҳои маҳдуд барои як муштарӣ.
7) Эътимоднокӣ: кворумҳо, таназзул, озмоишҳои бетартибӣ
Кворумро хонед/нависед (агар лозим бошад), тавораи пешво.
Усулҳои таназзул: бо омодагӣ, "танҳо ба итмом расонида", усулҳои вазнинро хомӯш мекунанд.
Муҳандисии бесарусомонӣ: таъхирҳо/талафот, бозоғозӣ, нокомии диск/шабака, сенарияҳои "суръати баланд".
8) SLI/SLO ва ҳадафҳо
SLI (мисол):- p95 таъхири RPC аз рӯи синфи метод;
- Сатҳи муваффақият; Queue-lag p95;
- Вақти ниҳоӣ p95 (барои релсҳо/пулҳо);
- Вақти пурборкунии сурат;
- Рушди давлатӣ/рӯз; Пуркунии CPU/IO.
- P0 RPC p95 ≤ 400 мс; Мавҷудияти ≥ 99. 95%;
- Эстафетаи ниҳоӣ p95 ≤ 3 дақ;
- Навбати ақибмонда P0 p95 ≤ 2 с;
- Bootstrap хонандаи нав ≤ 30 min (fast-sync + snapshot);
- Хатогӣ дар тирезаи 2-соата ≤ 2 ×.
9) Мушоҳида ва огоҳӣ
Нишондиҳандаҳо: таъхири (гистограмма), RPS, хатогиҳо (аз рӯи синф), навбати қафо, GC/тӯда, диск-ио, ҳамсолони p2p, сатҳи ғайбат.
Нишонаҳо: 'пайгирӣ _ id' аз канор → RPC → indeksator → khraneniye → бештар.
Гузоришҳо: сохташуда, таносуб аз ҷониби 'request _ id'.
Огоҳиҳо: суръати сӯзондан P0, ақибмонӣ, ҳисобкунии ҳамсолон аз ҳадди поён, reorg-spikes, snapshot-drift.
10) Намунаҳои autoscaling
HPA/VPA (K8s): po CPU/latency/RPS/queue-lag; KEDA бо дарозии topiaries.
Андозаи қадам: профилҳои қуллаи рӯз; Пешгӯии ML/мавсимӣ.
Эҳтиётҳои гарм: нусхаҳои гарм бидуни трафик (таблиғи зебо).
Иҷрои бехатар: canary + outlier-ejection + SLO-geytы.
11) Бехатарӣ ва ҷудоӣ
MTLS/pinning калидӣ; RBAC/ABAC барои як усул; Маҳдудияти QOS барои як org/иҷорагир.
Меъёри маҳдудият ва Do-S-сипар: токенҳо, captchas барои RPC-ҳои ҷамъиятӣ, аномалия-муайянкунӣ.
Идоракунии махфӣ: нишонаҳои кӯтоҳмуддат, ротатсия.
Қуттиҳои қуттӣ: Пулҳои ҷудогона барои бойгонӣ/мизоҷони ҷамъиятӣ.
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 Фиристанда: Афзалият ва хориҷшавӣ
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 Кафка: тақсимот аз рӯи домен
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 Қоидаҳо ва маҳдудиятҳо
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 ва сатҳи сӯзондан
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, дельтаи капаси, ҳолати лаҳзаҳо, саломатии ҳамсолон.
Ҳар ҳафта: аз нав дида баромадани маҳдудиятҳо/QoS, санҷиши DR (пурборшаванда аз лаҳза), санҷиши навдаро ва компрессенҳо.
Пеш аз озод шудан: иҷрои канарейка, дарвозаҳои SLO ва ченакҳои мушоҳидашуда, нақшаи бозгашт.
Баҳисобгирии хароҷот: CTS барои 1k дархост, TPS_per_$ (самаранокии як доллар).
15) Ҳодисаҳои дафтарча
A. RPC p95 таркиши ниҳонӣ
1. Интихоби P2-throttle ва поёнтарро фаъол созед; 2) зиёд кардани нусхаҳои дарвоза/хонанда;
2. Интиқоли баъзе трафик танҳо ба кэш. 4) таҳлили усулҳои гарм, дар ҳолати зарурӣ - қоидаҳои инкор.
B. Queue-ақиб дар автобус> SLO
1. Истеъмолкунандагони Autoscale (KEDA), 2) тарафҳоро аз нав тақсим мекунанд, 3) муваққатан ҷойҳои кории оммавиро қатъ мекунанд.
C. тарки шумораи ҳамсолон дар валидатор/эстафета
1. Аз нав оғоз кардани модулҳои p2p, 2) иваз кардани ҷойҳо, 3) санҷиши шабакаи ACL/NAT, 4) муҳофизати гузариш.
D. нусхаи нави боркунии дароз
1. Гузариш ба лаҳзаи нав, 2) баланд бардоштани фарохмаҷрои IO, 3) муваққатан хориҷ кардани индексатсияҳои бойгонӣ.
Таъхирҳои E. Spike reorg/bridge
1. Васеъгардонии K-эътироф/тиреза, 2) имкон медиҳад, ки режими "танҳо-танҳо", 3) ба истеъмолкунандагон иттилоъ диҳад.
16) Рӯйхати санҷиши амалисозӣ
1. Нақшҳои сайт ва буҷаҳои SLO/хатогиҳои онҳоро муайян кунед.
2. Барои иҷрои вазифаҳо: консенсус/RPC/индексатсия/бойгонӣ/пул/канор.
3. Фаъол кардани мувозинат, QOS, backpressure ва навбат бо DLQ.
4. Насб кардани лаҳзаҳо/тез-синхронизатсия, навдаро ва зинапоя.
5. Пайваст кардани ченакҳо/пайраҳаҳо/гузоришҳо, панели панелҳо ва огоҳиҳои сӯхтан.
6. Танзими автоскалинг (HPA/KEDA) ва релизҳои канарӣ.
7. Гузаронидани санҷишҳои бесарусомонӣ ва машқҳои мунтазами DR.
8. Ҷорӣ намудани қоидаҳои амалиётӣ ва назорати хароҷот.
17) Луғат
Backpressure - механизмҳои назорати ҷараёни вуруд ҳангоми изофабор.
DLQ - "навбати мурда" барои паёмҳои мушкилӣ.
Навда - нест кардани ҳолати таърихӣ берун аз равзанаи ҳозира.
Fast-sync/Snapshot роҳи суръатбахш барои ҳамоҳангсозии нусхаи нав мебошад.
Хориҷкунӣ - хориҷ кардани ҳолатҳои таназзулёфта аз ҳавз.
Меъёри сӯзондан - меъёри истеъмоли буҷа нисбат ба SLO.
Сатри поён: миқёси гиреҳҳои шабака на танҳо "нусхабардорӣ", балки интизоми системаи меъморӣ, QOS, идоракунии давлатӣ ва қобилияти амалиётӣ мебошад. Бо пайравӣ аз ин чаҳорчӯба (ҷудокунии нақшҳо, навбатҳо, кэшҳо, автоскале, мушоҳидашаванда ва SLO-ҳои тоза), экосистема нишондиҳандаҳои пешгӯишаванда, устувории қуллаҳо ва арзиши назоратшавандаро барои як воҳиди трафик ба даст меорад.