GH GambleHub

Shaping және трафикті бағыттау

1) Мұның бәрі не үшін

Shaping және маршруттау - басқарылатын қолжетімділік және болжамды жасырындылық базасы:
  • Тұрақтылық: «шулы көршілерге» арналарды толтыруға жол бермейміз.
  • Әділеттілік: тенанттар/сыныптар арасындағы басымдықтар мен квоталар.
  • Тиімділігі: сұрау салуды тез/арзан өңделетін жерге жібереміз.
  • Өзгерістерді бақылау: қатерсіз канареялық/weighted-релиздер.
  • Үнемдеу: egress/egress-құнды және CDN-кэш-хитрейтті оңтайландыру.

2) Базалық ұғымдар

2. 1 Traffic shaping vs policing

Shaping - трафикті буферлеу және пакеттермен мақсатты жылдамдықпен жіберу арқылы тегістейді («жарылыстарды» тегістеу).
Policing - буферлеусіз асып кетуді (дроп/таңбалау) «жазалайды». Қатты, бірақ арзан.

2. 2 Сыныптар, кезектер және пәндер

Басымдығы бар кезектер (PRIO), WFQ/DRR (әділ бөлу), HTB (иерархиялық квоталар), CoDel/RED (буферблоатпен күрес), ECN (дропсыз жүктелім туралы сигнал).
L7-де - RPS/коннектілер/байттар лимиттері және басым пулдар түріндегі «кезектер».

2. 3 Лимиттеу алгоритмдері

Token Bucket (n токендері rate r қосылады; сұрау k токендерін «жұмсайды»).
Leaky Bucket (белгіленген ағын; тегістеуге жақсы).
Жаһандық/жергілікті лимиттер: жергілікті - жылдам, жаһандық - әділ (Redis/etcd/пер-тенант).

3) L3/L4 QoS

3. 1 DSCP/ToS және қызмет көрсету сыныптары

Пакеттерді трафик түрі бойынша таңбалаңыз (интерактив, бэкенд-RPC, фондық тапсырмалар).
Дата орталықтарында - DSCP саясатын желілік фабрикамен/бұлтпен келісіңіз.

3. 2 Linux 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/RED/BBR

ECN шыңдардағы дроптарды азайтады; RED/CoDel буферблоатты шектейді.
BBR (Cubic орнына) көбінесе p99 жасырындылығын азайтады, әсіресе WAN/ауыр кезектердің үстінен.

4) L7-маршруттау (HTTP/gRPC/WS)

4. 1 Роутинг критерийлері

Жолдар/әдістер ('/api/v1/', 'POST'), тақырыптар (клиенттің нұсқасы, фича-жалаулар, канареялық хедер), куки (A/B, sticky), JWT-таңбалар (tenant/role), гео/ASN, уақытша терезелер, жүктеме (outlier detection).
Хаттама: HTTP/2 (мультиплексиялау), HTTP/3/QUIC (пакеттердің жоғалуына төзімділік), gRPC (bi-di streams), WebSocket (ұзақ өмір сүретін коннектілер).

4. 2 Өлшенген сплит/канареялық релиздер

Роут 'v1: 95%', 'v2: 5%', «жасыл» метриктер кезінде автоматты түрде жоғарылату.
Ажыратулар: қателер/жасырындылық/бизнес-инварианттар.

Envoy (нобай)

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

Istio

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 Sticky-сессиялар және consistent hashing

Cookie/IP/JWT идентификаторы бойынша Session affinity.
Кэш-кластерлер, шардаланған сервистер, rate limit гейтвейлері үшін Consistent hashing.

Nginx

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

4. 4 Гео- және latency-aware роутинг

Шетіндегі GeoIP/ASN (CDN/edge) → ең жақын РОР/өңір.
Latency-aware: кезеңдік health-сынамалар + өлшеу RTT → трафик «ең жылдам» кластерге.

4. 5 Outlier detection / circuit breaking

«Жаман» жағдайларды жою: max-ejection-percent, негізгі қателер/жасырындылық.
Circuit breaker: кезектегі/RPS/коннектілеріне арналған лимиттер.

5) Шлюздер/мэш-стек деңгейінде traffic shaping

5. 1 Rate limiting

Жергілікті (per-pod): арзан, бірақ әділ емес өзара реплика.
Жаһандық (Redis/etcd): әділдік per-tenant/API-кілті.
Саясаттар: per-route, per-method, per-tenant, burst.

Envoy 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. 2 Fairness және басымдықтар

Басым пулдар: «интерактив»> «жүйелік»> «фондық».
DRR/WFQ L7 баламалары: квота/салмақ per-клиент/тенант.

5. 3 Шамадан тыс жүктеу және қорғау

Load-shed: бюджеттерден асып кеткен кезде бас тарту/тозу.
Adaptive concurrency: p50/p95/queue-len.
Server-side backpressure: 429/503 + Retry-After.

6) eBPF және CNI-деңгей

6. 1 Cilium/eBPF

Өзектегі сүзгілеу/бағыттау: контекст-свитчтерден аз, жұқа L3-L7 саясаты.
Тұрақты тарату үшін Maglev hashing.
per-pod QoS (TC/XDP hooks) үшін eBPF-бағдарламалар.

6. 2 Calico/NetworkPolicies

L3/L4 кіру саясаты, негізгі басымдық сыныптары, Kubernetes QoS (Guaranteed/Burstable/BestEffort) интеграциясы.

7) Edge/CDN және API-шлюздер

CDN: кэш-кілттер (қалыпқа келтіру query/headers), stale-while-revalidate, origin (rate limit/бот-сүзгілер).
API-шлюздер: аутентификация, квоталар/тарифтік жоспарлар (per-consumer), SLA-шектеулер, гео-роутинг, API нұсқасы.
WAF: Ядроның CPU шығындамау үшін шетінде сүзу.

8) Асинхронды шиналар/стриминг

Kafka/NATS/Pulsar: продюсерлерге/консюмерлерге квоталар, batch-өлшемдер лимиті, lag арқылы backpressure.
Оқиғаларды бағыттау: біркелкілік үшін «жыпылықтау» партияларының партиялану кілттері (tenant/idempotency-key).
Exactly-once ≈ «бір рет тиімді»: транзакциялық продюсерлер + демпотенттік синкалар.

9) Таймауттар, ретрациялар, backoff

Уақыт аралығы: клиент <прокси <сервис (керісінше емес).
Ретраилер: шектелген сан джиттерленген экспоненциалды backoff, бірақ дауылсыз.
Ретрациялар кезінде теңсіздік міндетті; басқаша - SAGA/өтемақы.
Hedged/parallel requests (мұқият): p99 жақсартады, жалпы трафикті ұлғайтады.

10) Бақылау және SLO

10. 1 Өлшемдері

rate_limit_hits, requests_queued, shed_requests_total, latency_ms{p50,p95,p99}, error_ratio, retry_attempts, outlier_ejections, queue_time_ms.

Кластар: class = interactivesystembackground, tenant, route.

10. 2 Трейсинг

Correlation-ID лақтырыңыз; ұйықтауды себептердің түрімен белгілеңіз: 'retry' shed 'throttle' queue '.
Кіші жүйелерге әсерін түсіну үшін/hedges ретрайлері.

10. 3 Логи/есептер

Дроптар/шеддинг/лимиттер бойынша жиынтық, маршруттар бойынша жылу карталары.
Әділ пертенант үшін жеке панельдер (fairness index).

10. 4 SLO-мысалдар

"p99 ≤ 300 мс 95-перцентиль жүктеме кезінде; shed ≤ 0. 1%; error_ratio ≤ 0. 5%».
«Қайта тиеу кезінде интерактивті сыныпқа кемінде 95% квота кепілдендірілген».

11) Конфигурация мысалдары

11. 1 Nginx: rate limit + burst + канареялық сплит

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 Envoy: circuit breaker + outlier detection

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: пер-тенант квота (label арқылы резерв)

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 Kubernetes QoS хинта

Сыни табандар үшін Guaranteed (requests = limits).
PodPriority & Preemption: сыни тұғырлар тапшылық кезінде фондық тұғырларды ығыстырады.
Topology Spread Constraints: тұрақтылық үшін аймақтар бойынша бөлу.

12) Қарсы үлгілер

Жаһандық көзбен шолу лимиті → маңызды клиенттердің жалған 429/таймауттары.
Джиттер/идемпотенттілігі жоқ ретраилер → дауыл.
Таймауттардың шатасуы (клиенттік> серверлік) → тұрып қалу және «қос жұмыс».
Жалпы кэштер/prod және эксперименттер үшін кезектер → деректердің ластануы.
«Әрқашан sticky» дұрыс мағынасыз → біркелкі емес жүктеме/ыстық түйіндер.
Ажыратылған outlier detection → «шіріген» инстанция апта өлшемдерін бұзады.

13) Енгізу чек-парағы

  • Трафикті саралаңыз: кластар/тенанттар/бағыттар.
  • Мақсатты бюджеттерді белгілеңіз: RPS/коннектілер/байттар және p95/p99.
  • rate limit (жергілікті + жаһандық), circuit breaker, outlier detection қосыңыз.
  • Канареялық сплит + автооткатты метриктер бойынша теңшеңіз.
  • Экспоненциалды backoff + джиттер бар таймауттарды/ретраларды жазыңыз.
  • ECN/BBR (мүмкін болған жерде) және egress үшін fq_codel/HTB қосыңыз.
  • «Көлеңке» және эксперименттер үшін жеке пулдар/кэштер/кезектер.
  • Дашбордтар: лимиттердің, кезектердің, жасырындылықтың, fairness өлшемдері.
  • SLO және runbook: шеддинг/қайтару/қосу өлшемдері.

14) FAQ

Q: Қандай таңдау: shaping немесе policing?
A: Пайдаланушы жолдары үшін - shaping (тегістеу). «Фон «/» bulk »сервис-кластары үшін - сыни ағындарды қорғау үшін policing.

Q: Ретрай-дауылды қалай болдырмау керек?
A: Джиттерленген backoff, әрекеттер лимиті, демпотенттік, серверлік кеңестер 'Retry-After', жаһандық квоталар.

Q: Sticky немесе hashing?
A: Sticky - сессия/кэш қажет болғанда пайдаланушыға жергілікті; hashing - шардингтің біркелкілігі мен тұрақтылығы қажет болғанда.

Q: HTTP/3/QUIC не береді?
A: HOL-бұғаттаусыз TCP, жоғалтуға жақсы төзімділік, тезірек қалпына келтіру - p99/p999 қалдықтарын айтарлықтай азайтады.

15) Қорытынды

Тиімді shaping және L7-маршруттау - бұл бақылаумен және SLO-мен бекітілген басымдықтар мен квоталар, әділ бөлу, қауіпсіз лимиттер және ақылды роутинг сияқты саясаттардың келісілген жинағы. Сипатталған тәжірибелерді (төменгі деңгейлерде HTB/fq_codel/ECN және Envoy/Istio/Nginx/eBPF үстіңгі деңгейлерде) орындау арқылы сіз болжамды жасырын қалдықтарды, шамадан тыс жүктемеге төзімділікті және бақыланатын, қауіпсіз релиздерді аласыз.

Contact

Бізбен байланысыңыз

Кез келген сұрақ немесе қолдау қажет болса, бізге жазыңыз.Біз әрдайым көмектесуге дайынбыз!

Telegram
@Gamble_GC
Интеграцияны бастау

Email — міндетті. Telegram немесе WhatsApp — қосымша.

Сіздің атыңыз міндетті емес
Email міндетті емес
Тақырып міндетті емес
Хабарлама міндетті емес
Telegram міндетті емес
@
Егер Telegram-ды көрсетсеңіз — Email-ге қоса, сол жерге де жауап береміз.
WhatsApp міндетті емес
Пішім: +ел коды және номер (мысалы, +7XXXXXXXXXX).

Батырманы басу арқылы деректерді өңдеуге келісім бересіз.