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/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.

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

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 жогору), сиз алдын ала жашыруун куйруктарды, ашыкча туруктуулукту жана көзөмөлдөнүүчү, коопсуз релиздерди аласыз.

Contact

Биз менен байланышыңыз

Кандай гана суроо же колдоо керек болбосун — бизге кайрылыңыз.Биз дайым жардам берүүгө даярбыз!

Telegram
@Gamble_GC
Интеграцияны баштоо

Email — милдеттүү. Telegram же WhatsApp — каалооңузга жараша.

Атыңыз милдеттүү эмес
Email милдеттүү эмес
Тема милдеттүү эмес
Билдирүү милдеттүү эмес
Telegram милдеттүү эмес
@
Эгер Telegram көрсөтсөңүз — Emailден тышкары ошол жактан да жооп беребиз.
WhatsApp милдеттүү эмес
Формат: өлкөнүн коду жана номер (мисалы, +996XXXXXXXXX).

Түшүрүү баскычын басуу менен сиз маалыматтарыңыздын иштетилишине макул болосуз.