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/connectives/байт лимиттери жана артыкчылыктуу пулдар түрүндө.
2. 3 чектөө алгоритмдери
Token Bucket (n токендер rate r менен кошулат; суроо-талап "сарптайт" k токендер).
Leaky Bucket (туруктуу агып чыгуу; тегиздөө үчүн жакшы).
Глобалдык/жергиликтүү чектер: жергиликтүү - тез, дүйнөлүк - адилеттүү (Redis/etcd/per-tenant).
3) L3/L4 боюнча QoS
3. 1 DSCP/ToS жана тейлөө класстары
Пакеттерди трафиктин түрүнө жараша белгилеңиз (interactive, backend-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'), аталыштары (кардардын нускасы, Ficha-желектери, канареалык хедер), кукилер (A/B, sticky), JWT-клеймдор (tenant/role), гео/ASN, убактылуу терезелер, жүктөө (outlier detection).
Протокол: HTTP/2 (мультиплексирлөө), HTTP/3/QUIC (пакеттерди жоготууга туруктуулук), gRPC (bi-di streams), WebSocket (узак мөөнөттүү байланыштар).
4. 2 салмактуу split/Канар релиздер
Rout 'v1: 95%', 'v2: 5%', "жашыл" метриктер боюнча автоматтык жогорулатуу.
Cut: каталар/жашыруун/бизнес инварианттар.
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 ID боюнча Session affinity.
Consistent hashing үчүн кэш кластерлер, шардана кызматтары, gateway rate limit.
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) → жакын ROR/аймак.
Latency-aware: мезгил-мезгили менен ден соолук + өлчөө RTT → жол "тез" кластер.
4. 5 Outlier detection / circuit breaking
"Жаман" учурларды сабап: max-ejection-percent, негизги каталар/жашыруун.
Circuit breaker: чеги/RPS/кезек.
5) Жол-жоболоштуруу деңгээл шлюз/mash-стек
5. 1 Rate limiting
Жергиликтүү (per-pod): арзан, бирок адилет эмес, бири-бирин кайталоо.
Global (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: өндүрүүчүлөр/Консюмерия үчүн квота, чеги-өлчөмдөрү, lag аркылуу backpressure.
Окуялардын багыты: партиялаштыруунун ачкычтары (tenant/idempotency-key), бир калыпта болуу үчүн "жалтылдаган" партиялар.
Exactly-once ≈ "натыйжалуу бир жолу": транзакция өндүрүүчүлөр + демпотенттик көк.
9) Таймауттар, ретрайлер, backoff
Таймауттар аркылуу: кардар <прокси <кызмат (тескерисинче эмес).
Retrais: Jitterized экспоненциалдык 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.
10. 2 Трейсинг
Correlation-ID ыргытып; себептердин түрү менен уктап белгилөө: 'retry' shed 'throttle' queue '.
Субсистемаларга тийгизген таасирин түшүнүү үчүн retrains/hedges үчүн Links.
10. 3 Каттоо/отчеттор
Дроптор/шеддинг/лимиттер боюнча маалымат, маршруттар боюнча жылуулук карталары.
Адилеттүүлүк үчүн өзүнчө панелдер (fairness index).
10. 4 SLO мисалдар
"p99 ≤ 300 мс 95-percentile жүктөө; shed ≤ 0. 1%; error_ratio ≤ 0. 5%».
"Ашыкча жүктөөдө квотанын 95% кем эмес интерактивдүү класска кепилдик берилет".
11) Конфигурация мисалдары
11. 1 Nginx: rate limit + burst + канара split
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: per-tenant квота (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) Анти-үлгүлөрү
Global "көз" чеги → маанилүү кардарлар үчүн жалган 429/убакыт.
Життерсиз/демпотенттик → бороон-чапкын.
Аралаш убакыт (кардар> Server) → илинип жана "эки иш".
Prod жана эксперименттер үчүн жалпы кэш/кезек → маалыматтарды булгоо.
"Ар дайым sticky" акыл-эси жок → бирдей эмес жүк/ысык түйүндөр.
Өчүрүлгөн outlier detection → "чириген" бийлик жуманын метрикасын бузат.
13) Киргизүү чек-тизмеси
- Traffic бөлүү: класстар/тенанттар/маршруттар.
- Максаттуу бюджеттерди белгилөө: RPS/байланыштар/байттар жана p95/p99.
- rate limit (жергиликтүү + глобалдык), circuit breaker, outlier detection кирет.
- Метрика боюнча канар split + AutoCat орнотуу.
- экспоненциалдык backoff + Життер менен убакыт/retrains жазып.
- ECN/BBR (мүмкүн болгон жерде) жана egress үчүн fq_codel/HTB.
- "көлөкө" жана эксперименттер үчүн өзүнчө пул/кэш/кезек.
- Dashboard: чеги метрика, кезек, жашыруун, fairness.
- SLO жана runbook: shedding критерийлери/кайра/киргизүү.
14) FAQ
Q: тандоо үчүн эмне: shaping же саясат?
A: Колдонуучу жолдор үчүн - shaping (тамчы жок тегиздөө). "Фон "/" bulk "кызматтык класстары үчүн - критикалык агымдарды коргоо үчүн полисинг.
Q: Кантип retrai бороон-чапкын качуу үчүн?
A: Jitterized backoff, аракет чеги, демпотенттик, Server 'Retry-After', глобалдык квота.
Q: Sticky же hashing?
A: Sticky - сессия/кэш керек болгондо, колдонуучу жергиликтүү; hashing - керек болгондо бир калыпта жана туруктуулук charding.
Q: HTTP/3/QUIC берет?
A: жок HOL TCP кулпулоо, жакшы жоготууга туруктуулук, тез калыбына келтирүү - байкаларлык p99/p999 куйруктарын азайтат.
15) натыйжалары
Эффективдүү shaping жана L7 багыттоо - бул саясаттардын макулдашылган топтому: артыкчылыктар жана квоталар, адилеттүү бөлүштүрүү, коопсуз лимиттер жана байкоо жана SLO менен колдоого алынган акылдуу роутинг. Баяндалган тажрыйбаларды (төмөнкү денгээлде HTB/fq_codel/ECN жана Envoy/Istio/Nginx/eBPF жогору), сиз алдын ала жашыруун куйруктарды, ашыкча туруктуулукту жана көзөмөлдөнүүчү, коопсуз релиздерди аласыз.