GH GambleHub

Shaping և միկրոօրգանիզացիա

1) Ինչու՞ է այս ամենը

Shaping-ը և միկրոօրգանիզացիան կառավարման հասանելիության և կանխատեսելի լատենտության հիմքն են

Տե՛ ս ՝ մենք չենք տալիս «աղմկոտ հարևաններին» ջրանցքներ։

Արդարություն 'գերակայություններ և քվոտաներ տենանտների/դասարանների միջև։

Արդյունավետությունն այն է, որ մենք դիմում ենք այնտեղ, որտեղ այն զարգանում է ավելի արագ/ավելի էժան։

Փոփոխությունների վերահսկումը 'կանարյան/weighted ֆորումը առանց ռիսկի։

Խնայողությունները 'egress/egress-stoimosts և CDN-kash-hitraite-ի օպտիմիզացումը։

2) Հիմնական հասկացությունները

2. 1 Traffic shaping vs policing

Shaping-ը հավասարեցնում է շարժիչները, անջատելով և ուղարկելով փաթեթներ տեխնոլոգիական արագությամբ («պայթյունների» հարթեցումը)։

Policing-ը ավելցուկի «կարաիտ» է (dom/պիտակավորում) առանց բուֆերիզացիայի։ Ավելի կոշտ, բայց ավելի էժան։

2. 2 Դասարաններ, գծեր և կարգապահություններ

Առաջնահերթություն (PRIO), WFQ/MSR (արդար բաշխում), HTB (հիերարխիկ քվոտաներ), Codel/RED (կռվել քրոնբլոատի հետ), ECN (ազդանշան փոխպատվաստման մասին)։

L7-ի վրա «հերթերը» RPS/connects/bit և գերակա փամփուշտների տեսքով։

2. 3 Սահմանման ալգորիթմներ

Token Bucket (n token ավելացվում է rate r; հարցումը «ծախսում է» k token)։

Leaky Bucket (ֆիքսված արտահոսք; լավ է աչքերի համար)։

Գլոբալ/տեղական լիմիթներ 'տեղական' արագ, գլոբալ 'արդար (Redis/etcd/108-տենանտ)։

3) QoS-ը L3/L4-ում

3. 1 DSCP/WindowS և ծառայության դասարաններ

Նշեք փաթեթները կոդավորման տեսակի վրա (ինտերակտիվ, 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»), վերնագրեր (հաճախորդի տարբերակը, ֆա-դրոշի տարբերակը, կանացի հեդերը), տիկնիկները (A/B, sticky), JWT-cleima (tenae/role), geo/ASN, ժամանակավոր պատուհաններ, wwwww.ider deter detrone)։

Արձանագրություն ՝ HTTP/2 (բազմաբնույթ), HTTP/3/QUIC (դիմադրությունը պարտքի կորստի համար), gRPC (bi-di streams), Madio Socket (երկար)։

4. 2 Կշռված սպլիտ/կանարեկային խառնուրդներ

Rout '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

Session affinity cookie/IP/JWT-2019։

Consistent hashing-ը քեշի կլաստերների, շարդանի ծառայությունների, gattweev rate limit-ի համար։

Nginx

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

4. 4 Geo- և latency-aultrowting

GeoIP/ASN տարածքում (CDN/edge) գտնվում է ամենամոտ ROR/տարածաշրջանը։

Latency-a.ru: պարբերական health-փորձարկումներ + RTT չափումը կատարվում է «ամենաարագ» կլաստերի մեջ։

4. 5 Outlier detection / circuit breaking

«Վատ» instans 'max-ejam-percent, հիմնական սխալներ/լատենտություն։

Circuit breaker: Connects/RPS/հերթերում։

5) Traffic shaping-ը դարպասի/mash-ապակու մակարդակում։

5. 1 Rate limiting

Տեղական (per-pod) 'էժան, բայց ոչ արդար ռեդիկ։

Գլոբալ (Redis/etcd) 'per-tenae/API բանալին։

Քաղաքական գործիչները ՝ per-rome, per-method, per-tenae, burst։

Envoy RSA (ուրվագիծ)

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 և առաջնահերթություններ

Գերակայական շուլերը ՝ «ինտերակտիվ»> «entertainment»> «ֆոնային»։

SDR/WFQ համարժեքները L7: քվոտաներ/քաշը per-հաճախորդ/տենանտ։

5. 3 Ծանրաբեռնվածություն և պաշտպանություն

Load-shed: հրաժարումը/քայքայումը, երբ ավելանում է։

Adaptive concurrency: Limits դինամիկան p50/p95/queue-len-ից։

Server-side backpressure: 429/503 + Retry-After.

6) eBPF և CNI մակարդակը

6. 1 Cilium/eBPF

Ֆիլտրացում/միկրոօրգանիզացիա միջուկում 'ավելի քիչ ենթատեքստ-սվիտչի, բարակ L3-L7 քաղաքականություններ։

Maglev hashing-ը կայուն բաշխման համար։

EBPF ծրագրերը per-pod QoS-ի համար (TC/XDP hooks)։

6. 2 Calico/NetworkPolicies

L3/L4 հասանելիության քաղաքականությունը, առաջնահերթության հիմնական դասարանները, Kubernetes QoS (Guaranteed/Burstable/BestEffect) հետ ինտեգրումը։

7) Edge/CDN և API դարպասը

CDN 'քեշի բանալիներ (query/headers), stale-while-revalidate, origin պաշտպանություն (rate limit/bot-ֆիլտրեր)։

API դռները 'վավերացում, քվոտաներ/ստացիոնար պլաններ (per-consumer), SLA սահմանափակումներ, geo-routing, API տարբերակը։

WAF 'ֆիլտրում է եզրին, որպեսզի չծախսեք CPU միջուկը։

8) Ասինխրոն անվադողեր/ստրիմինգ

Kafka/NATS/Pulsar: քվոտաներ արտադրողների/վահանակների, batch չափսերի սահմանափակում, backpressure lag-ի միջոցով։

Իրադարձությունների երթուղայնացումը 'կուսակցության բանալիները (tenault/idempoty-key), հավասարության համար «չափող» կուսակցությունը։

Exactly-once-ը «արդյունավետ մեկ անգամ» է 'գործարքային արտադրողները + idempotent սինգլներ։

9) Թայմաուտներ, ռեթրա, backoff

Թայմաուտները միջով 'հաճախորդը <108 <ծառայություն (հակառակը)։

Retrai 'սահմանափակված թիվ ջիթթերիզացված էքսպոնենցիալ backoff-ի հետ, բայց առանց փոթորիկների։

Idempotenty-ը պարտադիր է ռետրերի ժամանակ։ հակառակ դեպքում 'SAGA/փոխհատուցում։

Hedged/parallel reques.ru (զգույշ) 'բարելավում է 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 Թրեյսինգ

Անցեք Eurelation-ID; քնում եք պատճառի տեսակը '«retry' shed 'throttle' queue»։

Links/hedges-ի համար, որպեսզի հասկանան ազդեցությունը ենթահամակարգերի վրա։

10. 3 Լոգներ/հաշվետվություններ

Drops/Sheddinga/limitas, ջերմային քարտեզներ երթուղիներով։

Առանձին վահանակներ արդարության տենանտ (fairness index) համար։

10. 4 SLO օրինակներ

"p99-300 ms 95-պերցենտիլում բեռի։ shed ≤ 0. 1%; error_ratio ≤ 0. 5%».

«Քվոտայի առնվազն 95 տոկոսը երաշխավորված է ինտերակտիվ դասին ծանրաբեռնվածության ժամանակ»։

11) Միգրացիայի օրինակներ

11. 1 Nginx: rate limit + burst + canareced clepite

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: 71-ստենանտ քվոտա (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 hinta

Guaranted-ը կրիտիկական ենթատեսակների համար (requesium = limits)։

PodPriority & Systemption: Քննադատական բարձրանալը կհանձնվի ֆոնային դեֆորմացիայի ժամանակ։

Topology Spread Constrainment-ը կայունության գոտիների բաժանումն է։

12) Anti-patterna

Գլոբալ սահմանը «աչքերի վրա» պարունակում է կեղծ 429/թայմաուտներ կարևոր հաճախորդների մոտ։

Retrai առանց ջիթերի/idempotenty-ի։

Թայմաուտների խառնաշփոթը (հաճախորդի> սերվերային) կախված և «կրկնակի աշխատանք»։

Ընդհանուր քեշները/հերթերը հաճախորդների և փորձերի համար բացատրում են տվյալների աղտոտումը։

«Միշտ sticky» -ը առանց ողջամտության անհավասարակշիռ տերմին է/տաք։

Անջատված www.ier det.ru-ը «փտած» instans-ը փչացնում է շաբաթվա մետրը։

13) Ներդրման չեկի ցուցակ

  • Սեգմենտը. Դասարաններ/տենանտներ/երթուղիներ։
  • Թույլ տվեք բյուջեներ ՝ RPS/կոննեկտներ/բայթ և p95/p99։
  • Միացրեք rate limit (տեղական + գլոբալ), circuit breaker, corier detae։
  • Պարեք կանարեկային սպիրտ + ինքնաբերաբար։
  • Վերանայեք թայմաուտները/ռետաները էքսպոնենցիալ backoff + jitter-ով։
  • Միացրեք ECN/BBR (որտեղ հնարավոր է) և fq _ codel/HTB egress համար։
  • Առանձին փամփուշտներ/քեշներ/հերթեր «ստվերի» և փորձերի համար։
  • Dashbords: Limits, հերթեր, լատենտ, fairness։
  • SLO և runbook: գլուխգործոցի/ներառման չափանիշներ։

14) FAQ

Q 'Ի՞ նչ ընտրել' shaping կամ policing։

A 'Օգտագործողի ճանապարհների համար' shaping (բացակայում է)։ «Ֆոն «/» bulk »դասարանների համար պոլիկինգը կրիտիկական հոսքերի պաշտպանության համար։

Q 'Ինչպե՞ ս խուսափել փոթորիկներից։

A: Ջիտթերիզացված backoff, փորձարկումների սահմանափակում, կուռքեր, սերվերներ «Retry-After», գլոբալ քվոտաներ։

Q: Sticky կամ hashing?

A: Sticky, երբ անհրաժեշտ է նստաշրջան/cash localen օգտագործողը։ 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 ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։