مقیاس بندی گره های شبکه
(بخش: اکوسیستم و شبکه)
1) نقش گره و حلقه های ترافیک
اعتبار سنجی/تولید (اجماع/بلوک/rollup-sequencer): یک مسیر بحرانی نهایی سازی.
Reader/indexer (read-only/API/archive): درخواست های برنامه و تجزیه و تحلیل را ارائه می دهد.
Relay/bridge (cross-domain): انتقال پیام ها/دارایی ها بین دامنه ها.
دروازه/لبه (ورود/gRPC/WebSocket/QUIC): دریافت درخواست های مشتری، محدودیت نرخ، حافظه پنهان.
Tele metric/observability: مجموعه ای از معیارها/سیاهههای مربوط/آثار، نمونه های مصنوعی.
هر نقش دارای SLO خاص خود، بودجه خطا و سیاست مقیاس پذیری است.
2) مدل های مقیاس گذاری
2. 1 مقیاس بالا
افزایش CPU/RAM/SSD/NIC. سریع برای قله، اما محدود به آهن است و می تواند هزینه هر واحد ترافیک را افزایش دهد.
2. 2 مقیاس کردن
اضافه کردن کپی پشت balancers/صف. نیاز به idempotence، سیاست های چسبنده، حد نصاب و حافظه نهان سازگار (یا ناتوانی خود را).
2. 3 تنوع عملکردی
جداسازی وظایف: گره های اجماع جدا می شوند ؛ RPC/API - به طور جداگانه ؛ نمایه ساز/آرشیو - به طور جداگانه ؛ پل/رله - به طور جداگانه.
2. 4 مقیاس جغرافیایی
خوشه های منطقه ای (EU/US/AP) + anycast/GeoDNS/Latency آگاه LB ؛ تکرار با نهایی/تاخیر و حافظه های نهان محلی
2. 5 تقسیم/پارتیشن بندی
جداسازی توسط کلید (chainId، shard، topic) برای صف/ایندکس کننده ها و ذخیره ستون.
3) مسیر درخواست: تعادل، ذخیره، QoS
تعادل L4/L7: چک های بهداشتی، چسبنده با نشانه/ردیابی، قطع کننده مدار، تخلیه بیرونی.
حافظه های پنهان:- در لبه (TTL کوتاه برای RPC های اغلب خوانده شده) ؛
- در داخل پردازنده (خواندن از طریق، نوشتن در اطراف برای شاخص) ؛
- کش های منفی (یافت نشد).
- کلاس های QoS: P0 (نهایی/پل/پرداخت)، P1 (محصول)، P2 (فله/آرشیو).
- فشار برگشتی: توکن/اعتبار، محدودیت درخواست موافقت، صف با DLQ.
- پذیرش: پیش فیلتر (auth، محدودیت ها، جغرافیایی/تحریم ها)، رد اولیه درخواست های «گران».
4) مدیریت وضعیت: عکس های فوری، هرس، آرشیو
کامل/هرس شده: گره های هرس شده برای RPC ؛ Archive - برای نمایش داده های گذشته نگر در یک استخر جداگانه.
عکس های فوری/همگام سازی سریع: عکس های فوری منظم، بوت استرپ سریع کپی های جدید.
ذخیره سازی داغ/گرم/سرد: حالت گرم در NVMe، بلوک های تاریخی - S3/object با شاخص.
Garbadge-collect/compaction: پنجره های برنامه ریزی شده، نه در اوج.
DA/بافر دسته ای (برای L2/پل): تضمین تحویل و دوره تمیز کردن با رسید اثبات.
5) صف و جریان
ورودی: Kafka/Pulsar/NATS с partition-key = 'chainId' shard 'topic'.
گروه های مصرف کننده: مقیاس بندی توسط احزاب، کنترل کننده بی نظیر (صندوق ورودی/صندوق ورودی).
DLQ و retrai: عقب نشینی نمایشی، قرنطینه پیام سمی.
نظم توافق: در حزب برای جبرگرایی.
6) بهینه سازی حمل و نقل و شبکه
QUIC/HTTP/2: چندگانه، اصلاح سر خط.
تنظیم TCP: BBR/CUBIC، افزایش بافر، 'SO _ REUSEPORT'.
هسته/eBPF: پشته شبکه شتاب، هش سازگار برای تعادل.
NIC بارگیری и پین کردن IRQ к NUMA.
gRPC: پارامترهای keepalive/ping، محدودیت حداکثر پرواز.
WebSocket: استخر اتصال، پینگ/پنگ، محدود کردن اشتراک در هر مشتری.
7) قابلیت اطمینان: Quorums، تخریب، آزمون هرج و مرج
خواندن/نوشتن حد نصاب (در صورت لزوم)، شمشیربازی رهبر.
حالت های تخریب: فقط خواندنی، «فقط نهایی»، خاموش کردن روش های سنگین.
مهندسی هرج و مرج: تاخیر/تلفات، راه اندازی مجدد، شکست دیسک/شبکه، سناریوهای «سازماندهی مجدد با سرعت بالا».
8) SLI/SLO و اهداف
SLI (مثال):- تاخیر P95 RPC توسط کلاس روش ؛
- میزان موفقیت ؛ p95 تأخیر صف ؛
- زمان تا پایان p95 (برای ریل/پل) ؛
- زمان بوت استرپ تصویر لحظهای ؛
- رشد کشور/روز ؛ اشباع CPU/IO
- P0 RPC p95 ≤ 400 میلی ثانیه ؛ دسترسی ≥ 99 95%;
- رله نهایی p95 ≤ 3 دقیقه ؛
- صف تاخیر P0 p95 ≤ 2 с ؛
- بوت استرپ خواننده جدید ≤ 30 мин (سریع همگام + عکس فوری) ؛
- خطای سوزاندن بودجه در پنجرۀ 2 ساعته ≤ 2 ×.
9) قابلیت مشاهده و هشدار
معیارها: تاخیر (هیستوگرام)، RPS، خطاها (توسط کلاس)، صف تاخیر، GC/heap، دیسک IO، همسالان P2P، نرخ شایعات.
Traces: end-to-end 'trace _ id' through the edge → RPC → indeksator → khraneniye → most.
سیاهههای مربوط: ساختار یافته، همبستگی با 'request _ id'.
هشدارها: سوزاندن نرخ P0، صف تاخیر، همکار تعداد زیر آستانه، تجدید سازمان خوشه، عکس فوری رانش.
10) الگوهای خودکار
HPA/VPA (K8s): по CPU/تاخیر/RPS/صف تاخیر ؛ KEDA با طول topiaries.
گام به گام: پروفایل های اوج روز ؛ پیش بینی شده توسط ML/فصلی.
گرم لوازم یدکی: ماکت گرم کردن بدون ترافیک (ترویج برازنده).
rollout امن: قناری + outlier-ejection + SLO - гейты.
11) ایمنی و انزوا
mTLS/کلید پینینگ ؛ RBAC/ABAC در هر روش ؛ محدودیت های QoS برای هر سازمان/مستاجر.
Rate-limit و DoS-shield: نشانه ها، 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 سیاست 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 و میزان سوختگی
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، دلتا capacy، وضعیت عکس های فوری، سلامت همکار.
هفتگی: تجدید نظر در محدودیت/QoS، تست DR (بوت استرپ از عکس فوری)، چک کردن هرس و کمپرسور.
قبل از انتشار: اجرای قناری، دروازه های SLO و معیارهای مشاهده شده، برنامه برگشت.
حسابداری هزینه: CTS در هر درخواست 1k، TPS_per_$ (بهره وری در هر دلار).
15) حوادث کتاب بازی
A. انفجار تاخیر RPC p95
1. امکان نمونه برداری P2-throttle و پایین ؛ 2) افزایش کپی های دروازه/خواننده ؛
2. انتقال برخی از ترافیک فقط به کش. 4) باز کردن تجزیه و تحلیل روش داغ، در صورت لزوم - انکار قوانین.
B. صف تاخیر در اتوبوس> SLO
1. مصرف کنندگان مقیاس خودکار (KEDA)، 2) احزاب توزیع مجدد، 3) به طور موقت مشاغل فله را متوقف می کنند.
C. قطره شمارش در اعتبار سنج/رله
1. راه اندازی مجدد ماژول P2P، 2) تغییر صندلی، 3) بررسی شبکه ACL/NAT، 4) حفاظت سوئیچ.
D. بوت استرپ طولانی ماکت جدید
1. تغییر به عکس فوری تازه، 2) افزایش پهنای باند IO، 3) به طور موقت حذف شاخص های آرشیو.
E. Spike reorg/تاخیر پل
1. بزرگنمایی K-اذعان/پنجره, 2) فعال کردن «نهایی فقط» حالت, 3) اطلاع مصرف کنندگان.
16) چک لیست پیاده سازی
1. نقش های سایت و بودجه های SLO/خطا را تعریف کنید.
2. برای حمل توابع: اجماع/RPC/نمایه ساز/آرشیو/پل/لبه.
3. فعال کردن تعادل، QoS، فشار پشتی و صف با DLQ.
4. تنظیم عکس های فوری/سریع همگام سازی، هرس و مرتب سازی.
5. معیارهای اتصال/مسیرهای پیاده روی/سیاهههای مربوط، داشبورد و هشدار سوختگی نرخ.
6. تنظیم خودکار مقیاس (HPA/KEDA) و انتشار قناری.
7. انجام آزمایش های هرج و مرج و تمرینات منظم DR.
8. معرفی مقررات عملیاتی و کنترل هزینه.
17) واژه نامه
Backpressure - مکانیسم برای کنترل جریان ورودی در طول اضافه بار.
DLQ - «صف مرده» برای پیام های مشکل.
هرس کردن - حذف وضعیت تاریخی خارج از پنجره فعلی.
Fast-sync/Snapshot یک راه سریع برای همگام سازی یک ماکت جدید است.
Outlier-ejection - محرومیت از موارد تخریب شده از استخر.
نرخ سوختن - میزان مصرف بودجه خطا نسبت به SLO.
خط پایین: پوسته پوسته شدن گره های شبکه است که نه تنها «اضافه کردن کپی»، اما نظم و انضباط سیستم معماری، QoS، مدیریت حالت و دقت عملیاتی. با پیروی از این چارچوب (جداسازی نقش، صف، انبارها، مقیاس خودکار، قابلیت مشاهده و SLO های روشن)، اکوسیستم عملکرد قابل پیش بینی، حداکثر انعطاف پذیری و هزینه قابل کنترل در هر واحد ترافیک را به دست می آورد.