Шакл ва масири ҳаракат
1) Чаро ҳамаи ин
Шакл ва масир - пойгоҳи мавҷудияти идорашаванда ва таъхири пешбинишаванда:- Субот: барои ба даст овардани каналҳо "ҳамсояҳои пурғавғо" надиҳед.
- Адолат: Афзалиятҳо ва квотаҳо байни иҷорагирон/синфҳо.
- Самаранокӣ: мо дархостро ба ҷое мефиристем, ки он тезтар/арзонтар коркард мешавад.
- Назорати тағирот: Варақаҳои канарӣ/вазншуда бидуни хатар.
- Пасандозҳо: оптимизатсияи хароҷоти egress/egress-хароҷот ва CDN-кэш-хитрат.
2) Мафҳумҳои асосӣ
2. 1 Ташаккули ҳаракати нақлиёт ва полис
Шакл додан - трафикро бо роҳи буферӣ ва фиристодани пакетҳо бо суръати мақсаднок ҳамоҳанг мекунад (ҳамвор кардани "таркишҳо").
Полис - зиёдатӣ (тарки/аломатгузорӣ) -ро бидуни буферӣ "ҷазо медиҳад". Сахттар, аммо арзонтар.
2. 2 Синфҳо, навбатҳо ва фанҳо
Навбати афзалиятнок (PRIO), WFQ/DRR (Тақсимоти одилона), HTB (Квотаҳои иерархикӣ), Co
Дар L7 - "навбатҳо" дар шакли маҳдудиятҳои RPS/пайвастшавӣ/байтҳо ва ҳавзҳои афзалиятнок.
2. 3 Алгоритмҳои маҳдудкунанда
Сатили токен (n токенҳо бо меъёри r илова карда мешаванд; дархост "харҷ мекунад" k токенҳо).
Сатили ихроҷ (хуруҷи собит); хуб барои ҳамвор кардан).
Маҳдудиятҳои глобалӣ/маҳаллӣ: маҳаллӣ - зуд, глобалӣ - одилона (Redis/etcd/per-иҷорагир).
3) QOS як L3/L4
3. 1 DSCP/Ба синфҳои хизматрасонӣ
Бастаҳои тамғакоғазҳо аз рӯи навъи трафик (интерактивӣ, пушти 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/Co 'Del буфериро маҳдуд мекунад.
BBR (ба ҷои Кубик) аксар вақт таъхири p99-ро коҳиш медиҳад, алахусус дар болои навбати WAN/вазнин.
4) Масири L7 (HTTP/GRPC/WS)
4. 1 Меъёрҳои масир
Роҳҳо/усулҳо ('/api/v1/', 'POST'), сарлавҳаҳо (нусхаи муштарӣ, парчамҳои хусусӣ, сарлавҳаи канарӣ), кукиҳо (A/B, часпанда), маркаҳои JWT (иҷорагир/нақш), гео/ASN, вақт тирезаҳо, сарборӣ (муайянкунии берунӣ).
Протокол: HTTP/2 (мултиплексинг), HTTP/3/QUIC (муқовимат ба аз даст додани пакет), GRPC (ҷараёнҳои bi-di), Web-Socket (пайвастҳои дарозмуддат).
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/канор) → наздиктарин POP/минтақа.
Огоҳии дермонӣ: намунаҳои даврии саломатӣ + андозагирии RTT → трафик ба кластери "тезтарин".
4. 5 Муайянкунӣ/шикастани гардиш
Нест кардани ҳолатҳои "бад": макс-ejection-фоиз, хатогиҳои асосӣ/дермонӣ.
Қатъи гардиш: маҳдудиятҳои пайвастшавӣ/RPS/дар навбат.
5) Ташаккули трафик дар сатҳи дарвоза/маш
5. 1 Маҳдудияти меъёр
Маҳаллӣ (per-pod): нусхаҳои арзон, вале одилона нестанд.
Global (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. 2 Адолат ва афзалиятҳо
Ҳавзҳои афзалиятнок интерактивӣ> система> замина мебошанд.
Эквиваленти DRR/WFQ дар L7: квотаҳо/вазнҳо барои як муштарӣ/иҷорагир.
5. 3 Изофабор ва муҳофизат
Сарборӣ: нокомӣ/таназзул ҳангоми зиёд шудани буҷа.
Мувофиқати мутобиқшавӣ: динамикаи маҳдудиятҳо аз p50/p95/queue-len.
Пуштибонии канори сервер: 429/503 + Retry-After.
6) сатҳи eBPF ва CNI
6. 1 Cilium/eBPF
Филтр/масир дар ядро: коммутаторҳои камтар контекст, сиёсати лоғар L3-L7.
Маглев барои тақсимоти устувор.
Барномаҳои электронии BPF барои қалмоқҳои per-pod (TC/XDP).
6. 2 Калико/Сиёсати шабакавӣ
L3/L4 сиёсати дастрасӣ, синфҳои афзалиятноки асосӣ, ҳамгироӣ бо Kubernetes Qo
7) Дарвозаҳои Edge/CDN ва API
CDN: калидҳои кэш (дархости муқаррарӣ/сарлавҳаҳо), кӯҳна-ҳангоми бозсозӣ, ҳифзи пайдоиш (филтрҳои меъёри/бот).
Дарвозаҳои API: аутентификатсия, квотаҳо/нақшаҳои тарифӣ (барои ҳар як истеъмолкунанда), маҳдудиятҳои SLA, масири гео, версияи API.
WAF: филтр дар канор, то ки CPU-и ядро хароб нашавад.
8) Автобусҳои асинхронӣ/ҷараён
Kafka/NATS/Pulsar: квотаҳои истеҳсолкунанда/истеъмолкунандагон, лимити андозаи партия, ақибнишинӣ тавассути ақибмонӣ.
Масири рӯйдодҳо: иҷорагир/idempotency-калид, қисмҳои дурахшон барои якранг.
Маҳз як маротиба ≈ "як маротиба самаранок": истеҳсолкунандагони транзаксия + хунхобии idempotent.
9) Вақти истироҳат, ақибнишинӣ, бозгашт
Вақти ниҳоӣ: муштарӣ <proxy <хидмат (на баръакс).
Retrai: Рақами маҳдуд бо бозгашти экспоненсиалии экспоненсиалӣ, аммо тӯфон нест.
Idempotency дар ақибнишинӣ ҳатмист; вагарна - SAGA/ҷуброн.
Дархостҳои ҳифзшуда/мувозӣ (эҳтиёт): p99-ро беҳтар мекунад, трафики умумиро зиёд мекунад.
10) Мушоҳида ва SLO
10. 1 Ченак
, , , , , , .
10. 2 Пайгирӣ
Скан коррелятсия-ID; фосила бо навъи сабабҳо: 'retry' рехт 'drottle' навбат '.
Истинодҳо барои бозсозӣ/чархуште барои фаҳмидани таъсир ба зерсистемаҳо.
10. 3 Гузоришҳо/Ҳисоботҳо
Хулосаи қатраҳо/рехтан/маҳдудиятҳо, харитаҳои гармӣ аз рӯи масир.
Панелҳои алоҳида барои индекси адолат.
10. 4 намунаҳои SLO
"p99 ≤ 300 ms бо сарбории 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 Истио: иҷорагири квота (захира тавассути нишона)
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
Кафолат барои поёни интиқодӣ (дархостҳо = маҳдудиятҳо).
Афзалият ва афзалият: Пойгоҳҳои интиқодӣ монеаҳои пасзаминаро иваз мекунанд.
Маҳдудиятҳои паҳншавии топология: ноҳиявӣ барои устуворӣ.
12) Анти-намунаҳо
Маҳдудияти глобалии чашм → барои муштариёни муҳим 429/танаффуси бардурӯғ.
Retrai бе jitter/idempotency → тӯфон.
Нофаҳмиҳои танаффус (муштарӣ> сервер) → ях мекунад ва "кори дугона".
Кэшҳо/навбатҳои маъмул барои prod ва таҷрибаҳо → ифлосшавии маълумот.
"Ҳамеша часпанда" бидуни ақли солим → сарбории нобаробар/гиреҳҳои гарм.
Муайянкунии ғайрифаъолшудаи берунӣ → ҳолати пӯсида ченакҳои ҳафтаро вайрон мекунад.
13) Рӯйхати санҷиши амалисозӣ
- Трафики сегмент: синфҳо/иҷорагирон/хатсайрҳо.
- Буҷаҳои мақсаднокро ба RPS/пайвастшавӣ/байтҳо ва p95/p99 муқаррар кунед.
- Маҳдудияти нархҳо (маҳаллӣ + глобалӣ), схемаи барқ, муайянкунии берунӣ.
- Танзими тақсимоти канарӣ + гардиши худкор дар ченакҳо.
- Вақтсанҷӣ/такрори сабтро бо пушти экспоненсиалӣ + ҷиттер сабт кунед.
- ECN/BBR-ро фаъол созед (агар лозим бошад) ва барои egress fq_codel/HTB кунед.
- Ҳавзҳои инфиродӣ/кэшҳо/навбатҳо барои соя ва таҷрибаҳо.
- Панели панелҳо: ченакҳои маҳдудиятҳо, навбатҳо, ниҳонӣ, адолат.
- SLO ва runbook: рехтан/баргардонидан/фаъол кардани меъёрҳо.
14) FAQ
Савол: Чӣ бояд интихоб кард: ташаккул ё полис?
A: Барои роҳҳои фармоишӣ - ташаккул (зидди бегона бе қатра). Барои синфҳои хидматӣ "замина "/" яклухт "- полис барои муҳофизати ҷараёнҳои муҳим.
Савол: Чӣ гуна шумо аз тӯфони ақибнишинӣ худдорӣ мекунед?
A: Бозгашти Jitterized, маҳдудияти кӯшишҳо, аблаҳӣ, сервер пешниҳоди 'Retry-After', квотаҳои ҷаҳонӣ.
Савол: часпидан ё хэш?
A: часпанда - вақте ки сессия лозим аст/кэш барои корбар маҳаллӣ аст; hashing - вақте ки ба шумо якрангӣ ва устувории sharding лозим аст.
Савол: Чӣ ба HTTP/3/QUIC медиҳад?
Ҷ: Бе қуфлҳои TCP HOL, таҳаммулпазирии беҳтари талафот, барқароршавии зудтар - думҳои p99/p999-ро ба таври назаррас коҳиш медиҳад.
15) Натиҷаҳо
Ташаккули самаранок ва масири L7 маҷмӯи пайгиронаи сиёсатҳо мебошад: афзалиятҳо ва квотаҳо, тақсимоти одилона, маҳдудиятҳои бехатар ва масири оқилона, ки аз ҷониби мушоҳида ва SLO дастгирӣ мешаванд. Бо риояи таҷрибаҳои тавсифшуда (HTB/fq_codel/ECN дар сатҳҳои поёнӣ ва Envoy/Istio/Nginx/e