GH GambleHub

شکل دهی و مسیریابی ترافیک

1) چرا این همه

شکل دهی و مسیریابی - پایه ای از دسترسی مدیریت شده و تاخیر قابل پیش بینی:
  • پایداری: به «همسایگان پر سر و صدا» امتیاز کانال ها را ندهید.
  • عدالت: اولویتها و سهمیهها بین مستاجران/طبقات.
  • کارایی: ما درخواست را به جایی که سریعتر/ارزان تر پردازش می شود ارسال می کنیم.
  • کنترل تغییر: انتشار قناری/وزن بدون خطر.
  • صرفه جویی: بهینه سازی هزینه های خروج/خروج و CDN-cache-hitrate.

2) مفاهیم اساسی

2. 1 شکل دادن به ترافیک در مقابل پلیس

شکل دادن - تراز ترافیک توسط بافر و ارسال بسته در نرخ هدف (صاف «انفجار»).

پلیس - «مجازات» بیش از حد (قطره/مارک) بدون بافر. سخت تر اما ارزان تر

2. 2 کلاس ها، صف ها و رشته ها

صف های اولویت (PRIO)، WFQ/DRR (تخصیص عادلانه)، HTB (سهمیه سلسله مراتبی)، CoDel/RED (کنترل بلوک بافر)، ECN (بدون سیگنال تراکم قطره).
در L7 - «صف» در قالب RPS محدودیت/اتصالات/بایت و استخر اولویت.

2. 3 محدود کردن الگوریتم ها

سطل توکن (n توکن با نرخ r اضافه شده است ؛ درخواست «صرف» K نشانه).
سطل نشتی (جریان خروجی ثابت ؛ خوب برای صاف کردن).
محدودیت های جهانی/محلی: محلی - سریع، جهانی - عادلانه (Redis/etcd/per-tenant).

3) QoS در هر L3/L4

3. 1 DSCP/ToS و کلاس های خدمات

بسته های برچسب بر اساس نوع ترافیک (تعاملی، RPC باطن، مشاغل پس زمینه).
در مراکز داده، مذاکره سیاست DSCP با پارچه شبکه/ابر.

3. 2 لینوکس tc: HTB + fq_codel (تصویر بند انگشتی)

bash
Clearing tc qdisc del dev eth0 root 2 >/dev/null         true

Корневая HTB с 1Gbit tc qdisc add dev eth0 root handle 1: htb default 30 tc class add dev eth0 parent 1: classid 1:1 htb rate 1gbit

Класс latency-critical 200Mbit tc class add dev eth0 parent 1:1 classid 1:10 htb rate 200mbit ceil 1gbit prio 0 tc qdisc add dev eth0 parent 1:10 handle 10: fq_codel

Класс background 100Mbit tc class add dev eth0 parent 1:1 classid 1:30 htb rate 100mbit ceil 1gbit prio 2 tc qdisc add dev eth0 parent 1:30 handle 30: fq_codel

3. 3 ECN/قرمز/BBR

ECN قطره را در قله کاهش می دهد ؛ RED/CoDel بافر را محدود می کند.
BBR (به جای Cubic) اغلب تأخیر p99 را کاهش می دهد، به خصوص در بالای صف های WAN/سنگین.

4) مسیریابی L7 (HTTP/gRPC/WS)

4. 1 معیارهای مسیریابی

مسیرها/روش ها ('/api/v1/'، 'POST')، هدر ها (نسخه مشتری، پرچم های ویژگی، هدر قناری)، کوکی ها (A/B، چسبنده)، تمبرهای JWT (مستاجر/نقش)، جغرافیایی/ASN، پنجره های زمان، بار (تشخیص بیرونی).
پروتکل: HTTP/2 (multiplexing)، HTTP/3/QUIC (مقاومت در برابر از دست دادن بسته)، gRPC (جریان بی دی)، WebSocket (اتصالات طولانی مدت).

4. 2 تقسیم وزنی/انتشار قناری

ریشه «v1: 95٪»، «v2: 5٪»، افزایش خودکار با معیارهای «سبز».
برش: خطاها/تاخیر/ثابت کسب و کار.

نماینده (طرح)

yaml route:
weighted_clusters:
clusters:
- name: svc-v1 weight: 95
- name: svc-v2 weight: 5

هستیو

yaml apiVersion: networking. istio. io/v1beta1 kind: VirtualService spec:
hosts: ["svc"]
http:
- route:
- destination: { host: svc, subset: v1, weight: 95 }
- destination: { host: svc, subset: v2, weight: 5 }

4. 3 جلسات چسبنده و هش کردن مداوم

پیوستگی نشست با شناسۀ کوکی/IP/JWT.
هش مداوم برای خوشه های کش، خدمات شاردی، دروازه های محدود کننده نرخ.

NGINX

nginx upstream api {
hash $cookie_user_id consistent;
server 10. 0. 0. 1;
server 10. 0. 0. 2;
}

4. 4 مسیریابی جغرافیایی و تاخیری

GeoIP/ASN در لبه (CDN/edge) → نزدیکترین POP/منطقه.
تاخیر آگاه: نمونه سلامت دوره ای + اندازه گیری RTT → ترافیک به «سریع ترین» خوشه.

4. 5 تشخیص بیرونی/شکستن مدار

ضربه زدن به موارد «بد»: حداکثر تخلیه درصد، خطاهای اساسی/تاخیر.
قطع کننده مدار: محدودیت در اتصالات/RPS/در صف.

5) شکل دادن به ترافیک در سطح پشته دروازه/مش

5. 1 محدود کردن نرخ

محلی (در هر غلاف): ارزان، اما منصفانه نیست.
جهانی (Redis/etcd): اعتبار هر مستاجر/کلید API.
سیاستمداران: در هر مسیر، در هر روش، در هر مستاجر، پشت سر هم.

نماینده RLS (طرح)

yaml typed_per_filter_config:
envoy. filters. http. ratelimit:
"@type": type. googleapis. com/envoy. extensions. filters. http. ratelimit. v3. RateLimit domain: "api"
rate_limit_service:
grpc_service: { envoy_grpc: { cluster_name: rate_limit_cluster } }

5. ۲ عدالت و اولویتها

استخرهای اولویت تعاملی> سیستم> پس زمینه.
معادل DRR/WFQ در L7: سهمیه/وزن در هر مشتری/مستاجر.

5. 3 اضافه بار و حفاظت

بار ریخته: شکست/تخریب زمانی که بودجه بیش از حد است.
همزمانی تطبیقی: دینامیک محدودیتها از p50/p95/صف-len.
فشار پشتی سمت سرور: 429/503 + Retry-After.

6) سطح eBPF و CNI

6. 1 Cilium/eBPF

فیلتر کردن/مسیریابی در هسته: سوئیچ های زمینه کمتر، سیاست های L3-L7 نازک.
هش Maglev برای توزیع پایدار.
برنامه های eBPF برای هر غلاف QoS (قلاب TC/XDP).

6. 2 کالیکو/شبکه سیاست ها

سیاست های دسترسی L3/L4، کلاس های اولویت اولیه، ادغام با Kubernetes QoS (Guaranteed/Burstable/BestEffort).

7) دروازه های لبه/CDN و API

CDN: کلیدهای حافظه پنهان (پرس و جو عادی سازی/هدر)، stale-while-revalidate، حفاظت از مبدا (فیلترهای نرخ محدود/ربات).
دروازه های API: احراز هویت، برنامه های سهمیه ای/تعرفه (برای هر مصرف کننده)، محدودیت های SLA، مسیریابی جغرافیایی، نسخه API.
WAF: فیلتر کردن در لبه به طوری که CPU هسته را هدر ندهد.

8) اتوبوس ناهمزمان/جریان

Kafka/NATS/Pulsar: سهمیه تولید کننده/مصرف کننده، محدودیت اندازه دسته ای، فشار پشتی از طریق تاخیر.
مسیریابی رویداد: مستاجر/idempotency-کلید، پارتیشن سوسو زدن برای یکنواختی.
دقیقا یک بار ≈ «یکبار موثر»: تولید کنندگان معامله + کبودی های بی نظیر.

9) زمان، عقب نشینی، عقب نشینی

پایان دادن به پایان زمان: مشتری <پروکسی <سرویس (نه برعکس).
Retrai: تعداد محدود با عقب نشینی نمایشی jitterized اما بدون طوفان.
Idempotency در عقب نشینی اجباری است; در غیر این صورت - SAGA/جبران خسارت.
درخواست های پرچین/موازی (احتیاط): p99 را بهبود می بخشد، ترافیک کلی را افزایش می دهد.

10) قابلیت مشاهده و SLO

10. 1 معیارها

، ، ، .

کلاس ها: کلاس = تعاملیسیستمپس زمینه، مستاجر، مسیر.

10. 2 ردیابی

اسکن شناسه همبستگی ؛ علامت گذاری به عنوان نوع علت: 'retry' ریخته 'throttle' صف.
لینک برای retrays/hedges برای درک تاثیر بر زیر سیستم.

10. 3 گزارش ها/گزارش ها

خلاصه قطره/ریختن/محدودیت ها، نقشه های گرما از طریق مسیر.
پانل های جداگانه برای شاخص عدالت.

10. 4 نمونه های SLO

"p99 ≤ 300 میلی ثانیه در بار 95 درصد ؛ ریختن ≤ 0. 1%; error_ratio ≤ 0 5%».
«حداقل 95٪ از سهمیه به کلاس تعاملی زمانی که بیش از حد تضمین شده است».

11) نمونه های پیکربندی

11. 1 Nginx: محدودیت نرخ + پشت سر هم + تقسیم قناری

nginx map $http_x_canary $canary { default 0; 1 1; }

limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;

upstream api_v1 { server 10. 0. 0. 1; }
upstream api_v2 { server 10. 0. 0. 2; }

server {
location /api/ {
limit_req zone=perip burst=20 nodelay;
if ($canary) { proxy_pass http://api_v2; break; }
proxy_next_upstream error timeout http_502 http_503 http_504;
proxy_pass http://api_v1;
}
}

11. 2 نماینده: قطع کننده مدار + تشخیص بیرونی

yaml circuit_breakers:
thresholds:
- priority: DEFAULT max_connections: 1000 max_pending_requests: 500 max_requests: 2000 outlier_detection:
consecutive_5xx: 5 interval: 10s max_ejection_percent: 50 base_ejection_time: 30s

11. 3 Istio: مستاجر سهمیه (رزرو از طریق برچسب)

yaml apiVersion: security. istio. io/v1 kind: AuthorizationPolicy spec:
selector: { matchLabels: { app: api } }
rules:
- when:
- key: request. headers[x-tenant]
values: ["gold"]
Next - RateLimitPolicy in the limit provider with a large quota pool for "gold."

11. 4 نکات کوبرنتیز QoS

تضمین شده برای پایین بحرانی (درخواست = محدودیت).
PodPriority & Preemption: پایین بحرانی خواهد تنگناها پس زمینه جایگزین.
توپولوژی گسترش محدودیت: منطقه بندی برای پایداری.

12) ضد الگوهای

محدودیت چشم جهانی: 429/زمان کاذب برای مشتریان مهم

Retray بدون لرزش/idempotency → طوفان.
سردرگمی از timeouts (مشتری> سرور) → یخ و «کار دو».
انبارهای مشترک/صف برای تولید و آزمایش → آلودگی داده ها.
«همیشه چسبنده» بدون حس مشترک → بار ناهموار/گره های داغ.
Disabled outlier detection → نمونه فاسد معیارهای هفته را خراب می کند.

13) چک لیست پیاده سازی

  • ترافیک بخش: کلاس ها/مستاجران/مسیرها.
  • بودجه هدف را به RPS/اتصالات/بایت و p95/p99 تنظیم کنید.
  • فعال کردن محدودیت نرخ (محلی + جهانی)، قطع کننده مدار، تشخیص بیرونی.
  • پیکربندی تقسیم قناری + بازگشت خودکار بر روی معیارها.
  • ضبط زمان/retrays با عقب نشینی نمایشی + jitter.
  • فعال کردن ECN/BBR (در صورت لزوم) و fq_codel/HTB برای خروج.
  • استخرهای فردی/انبارها/صف برای سایه و آزمایش.
  • داشبورد: معیارهای محدودیت، صف، تاخیر، انصاف.
  • SLO و runbook: معیارهای ریختن/برگشت/فعال کردن.

14) سوالات متداول

س: چه چیزی را انتخاب کنید: شکل دادن یا پلیس ؟

A: برای مسیرهای سفارشی - شکل دادن (ضد aliasing بدون قطره). برای کلاس های خدمات «پس زمینه «/» فله «- پلیس برای محافظت از جریان های بحرانی.

س: چگونه از طوفان های عقب مانده جلوگیری می کنید ؟

A: عقب نشینی Jitterized، محدودیت تلاش، idempotency، سرور باعث می شود «Retry-After»، سهمیه های جهانی.

س: چسبنده یا هش کردن ؟

A: چسبنده - هنگامی که یک جلسه مورد نیاز است/کش محلی به کاربر است ؛ hashing - هنگامی که شما نیاز به یکنواختی و ثبات sharding.

س: چه چیزی به HTTP/3/QUIC می دهد ؟

A: بدون قفل TCP HOL، تحمل بهتر از دست دادن، بهبود سریع تر - به طور قابل توجهی دم p99/p999 را کاهش می دهد.

15) مجموع

شکل گیری کارآمد و مسیریابی L7 مجموعه ای از سیاست های سازگار است: اولویت ها و سهمیه ها، توزیع عادلانه، محدودیت های امن و مسیریابی هوشمند، با قابلیت مشاهده و SLO. با پیروی از شیوه های شرح داده شده (HTB/fq_codel/ECN در سطوح پایین تر و Envoy/Istio/Nginx/eBPF در بالا)، شما می توانید دم های تاخیر قابل پیش بینی، مقاومت در برابر اضافه بار و کنترل شده، انتشار امن.

Contact

با ما در تماس باشید

برای هرگونه سؤال یا نیاز به پشتیبانی با ما ارتباط بگیرید.ما همیشه آماده کمک هستیم!

Telegram
@Gamble_GC
شروع یکپارچه‌سازی

ایمیل — اجباری است. تلگرام یا واتساپ — اختیاری.

نام شما اختیاری
ایمیل اختیاری
موضوع اختیاری
پیام اختیاری
Telegram اختیاری
@
اگر تلگرام را وارد کنید — علاوه بر ایمیل، در تلگرام هم پاسخ می‌دهیم.
WhatsApp اختیاری
فرمت: کد کشور و شماره (برای مثال، +98XXXXXXXXXX).

با فشردن این دکمه، با پردازش داده‌های خود موافقت می‌کنید.