Банақшагирии захираҳо ва миқёси худкор
Хулосаи мухтасар
Миқёси устувор дар чор дастгирӣ дастгирӣ карда мешавад:1. Дархостҳо/маҳдудиятҳо ва дарсҳои QOS-ро дуруст кунед.
2. Ҷойгиркунии дуруст (топология, наздикӣ, афзалиятҳо, афзалият).
3. Миқёси бисёрсатҳаи худкор: HPA/VPA/KEDA + Cluster/Node autoscaler + ҳавзҳои гарм.
4. Мантиқи ба SLO нигаронидашуда (умқи ниҳонӣ/навбат) бо буҷа ва буҷа.
Модели захираҳои асосӣ
Дархостҳо/Маҳдудиятҳо ва синфҳои QOS
Дархостҳо = кафолати банақшагирӣ; Маҳдудиятҳо = шифтҳо барои вақти корӣ.
QOS: Кафолат дода мешавад (req = lim by CPU/Memory), Burstable (қисман), Беҳтарин саъй (ҳеҷ чиз).
Хизматрасониҳои истеҳсолӣ бо SLO-ҳои сахт - кафолатдодашуда/Burstable; замина - Burstable/Беҳтарин саъй.
CPU/Хотира/IO/Шабака
CPU - тағйирёбанда (мубодилаи вақт), хотира - сахт (OOM-куштан агар зиёд бошад).
Дар шабакаи IO/, маҳдудиятҳо/афзалиятҳоро алоҳида муқаррар кунед (cgroup/TC), вагарна "ҳамсояҳои пурғавғо".
GPU/Суръатдиҳандаҳо
Векторро пурсед (GPU = 1, VRAM тавассути профилҳо), гиреҳ/Selector/tains ва Podро барои танқид истифода баред.
Барои хулоса - андозаи партия ва гармидиҳии моделӣ.
Сиёсати банақшагирӣ
Афзалиятҳо, афзалият ва PDB
Афзалияти синф барои роҳҳои муҳим (пардохт, воридшавӣ), имтиёз иҷозат дода мешавад.
Ҳангоми эвакуатсия/навсозиҳо Pod
Наздикӣ/Топология
гиреҳ/наздикии pod барои colocation/decolocation (масалан, нусхаҳоро дар як мизбон ҷойгир накунед).
topology. Spread .Constraints оташдонҳоро ба минтақаҳои/AZ ҳамоҳанг мекунад.
NUMA/топология: pin-CPU/hugepages, ки дар он ҷо таъхири кам муҳим аст.
Тейинтҳо ва таҳаммулпазирӣ
Ҳавзҳои ҷудогона: 'prod', 'партия', 'gpu', 'система'. Танқид ба ҳамсоягони камтар тоб меорад.
Андозаи худкор: сатҳҳо ва сигналҳо
1) HPA (Автоскалери уфуқӣ)
Нусхаҳои миқёси подкастҳо аз рӯи ченакҳо: CPU/Хотира/одат (Prometheus Adapter).
Сигналҳои хуб: таъхири p95/p99, дарозии навбат/ақибмонӣ, RPS барои pod, ақибмонии истеъмолкунандагон.
Анти-парпеч: мӯътадилсозӣ (stabilization. Window), қадами ҳадди ақал, cooldown.
yaml apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: { name: api-hpa }
spec:
scaleTargetRef: { apiVersion: apps/v1, kind: Deployment, name: api }
minReplicas: 6 maxReplicas: 120 behavior:
scaleUp:
stabilizationWindowSeconds: 60 policies: [{ type: Percent, value: 100, periodSeconds: 60 }]
scaleDown:
stabilizationWindowSeconds: 300 policies: [{ type: Percent, value: 20, periodSeconds: 60 }]
metrics:
- type: Pods pods:
metric:
name: http_server_request_duration_seconds_p95 target:
type: AverageValue averageValue: "0.25" # 250ms
2) VPA (Автоскалери амудии Pod)
Дархостҳо/маҳдудиятҳои истеъмоли воқеиро танзим мекунад (тавсияҳоро нав мекунад).
Модулҳо: 'Хомӯш', 'Авто' (аз нав оғоз кунед), 'Ибтидоӣ' (танҳо дар оғоз).
Амал: фурӯзон кардани 'Хомӯш' → ҷамъоварии омор → нисбати релизҳо татбиқ карда мешавад.
3) Миқёси KEDA/навбат
Реаксия ба сигналҳои беруна: қафои Кафка, умқи SQS, дарозии Редис, Прометей.
Беҳтарин барои истеъмолкунандагони рӯйдодҳо/навбатҳо (EDA).
yaml apiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata: { name: consumer-scale }
spec:
scaleTargetRef: { name: txn-consumer }
minReplicaCount: 2 maxReplicaCount: 200 cooldownPeriod: 120 pollingInterval: 5 triggers:
- type: kafka metadata:
bootstrapServers: broker:9092 consumerGroup: tx-cg topic: payments lagThreshold: "10000"
4) Кластер/Гиреҳи Автоскалер (CA) + Ҳавзҳои гарм
CA гиреҳҳоро ҳангоми норасоӣ/зиёдатӣ илова/хориҷ мекунад.
Ҳавзҳои гарм: гиреҳҳои пешакӣ гармшуда/тасвирҳои омодашуда (суръати оғози хунук).
Барои қуллаҳо - қадамҳои миқёсан калон ва васеъкардашудаи мин
Суръати реаксия ва гармшавӣ
Таъхири аксуламали SLO: қабати пеши ≤ 1-2 дақиқа, қафо/DB - алоҳида ва пешакӣ.
Гармкунӣ: TLS/DNS/пайвастҳо, моделҳои боркунӣ, гармкунии кэш ва JIT.
Сарбории соя барои "насос" роҳи хунук ба ҳодиса.
Анти-чаппа ва субот
Гистерезис оид ба ченакҳо, ҳамворкунӣ (васеъ кардани миёна).
Равзанаҳои мӯътадил дар HPA, ки дар 'миқёси' калон мебошанд.
Қадам-миқёс ба ҷои "дид"; меъёри маҳдудият барои тағир додани нусхаҳо.
Миқёси буҷа:% трафик/нусхаҳои иловашударо дар як дақиқа маҳдуд кунед.
Мушоҳида ва SLO
Калидҳои SLI:- p95/99 ниҳонӣ, суръати хатогӣ, гузариш, умқи навбат/ақиб, CPU/Хотираи хотира, вақти интизорӣ, фишори гиреҳ.
- Афзоиши хӯшаҳои интизорӣ, рӯйдодҳои тағйирнопазир, норасоии IP/subnet, кашидани тасвир дароз, кӯчдиҳӣ.
- Роҳҳо: Интихоби думҳо дар думҳои p99 → ҳангоми миқёс мушкилотро мебинем.
Финҳо: арзиши чандирӣ
Нишондиҳандаҳо: $/1000 RPS, $/ms p95, захираи $/соат.
Омехта: бо дархости + захирашуда + ҷой (барои танқид).
Ҳадди худкори миқёс бо арзиши хатогӣ алоқаманд аст: баъзан нигоҳ доштани саҳҳомии гарм фоидаовар аст.
Хусусияти IGaming/fintech
Қуллаҳои Match/мусобиқа: пешакӣ 'min' Replicas 'ва minnodes-ро боло бардоред, ҳавзҳои гармро фурӯзон кунед ва кэшҳо/моделҳоро гарм кунед.
Истеъмолкунандагони пардохт: KEDA бо ақибмонӣ + номутобиқатӣ, маҳдудиятҳои провайдерҳо (PSP) ҳамчун омилҳои берунаи таназзул.
Антибот: ҳавзи алоҳида, миқёси тези қоидаҳо, хатсайрҳои "хокистарӣ".
Танзим: PDB барои хизматрасониҳои мутобиқат, афзалиятҳо нисбат ба партия баландтаранд.
Санҷидани варақҳо
Тарроҳӣ
- Дархостҳо/маҳдудиятҳои бо профили маълумот муайяншуда; QOS интихоб шуд.
- Синфи афзалиятнок, PDB, оббозӣ/таҳаммулпазирӣ ва топология - танзим карда шудааст.
- HPA аз рӯи ченакҳои SLO, на танҳо CPU.
- VPA ба 'Off' барои ҷамъоварии тавсияҳо (муҳоҷират ба 'Авто' ба нақша гирифта шудааст).
- KEDA/Навбатҳои сарбории чорабинӣ.
- CA + ҳавзҳои гарм, тасвирҳо кэш карда мешаванд (тасвир пеш аз кашидан).
Амалиёт
- Тирезаҳои стабилизатсия ва сардшавӣ насб карда шудаанд (пӯшиш хориҷ карда мешавад).
- Огоҳӣ дар бораи интизорӣ/тағирнопазир, ақибмонӣ, p95, сатҳи хатогӣ.
- Китобчаҳо: "гиреҳҳо нест", "тасвир дароз намешавад", "OOM/хориҷ кардан", "тӯфони бозгашт".
- Ҳар моҳ аз нав дида баромадани қобилият: далели миқёс ва нақша/арзиш.
Хатогиҳои умумӣ
Контейнерҳои агрессивии 'Scale
HPA танҳо аз ҷониби CPU → lat-regression бо маҳдудиятҳои IO/пойгоҳи додаҳо.
Набудани PDB ва афзалиятҳои § танқид аввалин хоҳад буд.
Омезиши танқид ва партия дар як ҳавз бе думҳо → "ҳамсояҳои пурғавғо".
Гармидиҳии сифр → хунук аз авҷи худ оғоз меёбад.
KEDA бе idempotency → паёмҳои такрорӣ дар тӯфон.
Китобҳои бозии хурд
1) Пеш аз ҳодисаи баландтарин (T-30 дақиқа)
1. Афзудани 'min- Replicas '/minnodes, фаъол кардани ҳавзҳои гарм.
2. CDN/DNS/TLS/пайвастҳоро гарм кунед, моделҳои боркунӣ.
3. Дохил кардани хатсайрҳо/маҳдудиятҳои хокистарӣ барои ботҳо.
4. Панели панелҳоро санҷед: интизорӣ/ақибмонӣ/p95.
2) Норасоии гиреҳ (ивазнашаванда)
1. CA, квотаҳои абрӣ, зершабақаҳо/IP -ро санҷед.
2. Маҳдудиятҳои муваққатии партия, имкон медиҳанд, ки афзалиятҳои паст пеш аз холӣ шаванд.
3. Баланд бардоштани намуди муваққатии калонтар ё ҳавзи дуюм.
3) Афзоиши ақибмонӣ дар навбат
1. KEDA: миқёс аз ҷониби триггер; 2) баланд бардоштани маҳдудияти истеъмолкунандагон;
2. Фаъол кардани калидҳои idempotency ва истеҳсолкунандагони backpressure.
4) Нусхаҳои дидаам
1. Стабилизатсия/cooldown зиёд кунед; 2) гузариш ба миқёси қадам;
2. метрикаро бо ҳисоби миёнаи экспоненсиалӣ ҳамвор кунед.
Crib конфигуратсия кунед
VPA (ҷамъоварии тавсияҳо):yaml apiVersion: autoscaling.k8s.io/v1 kind: VerticalPodAutoscaler metadata: { name: api-vpa }
spec:
targetRef: { apiVersion: "apps/v1", kind: Deployment, name: api }
updatePolicy: { updateMode: "Off" } # собираем рекомендации
Кластер Автоскалер (ғояҳои парчам, консепсия):
--balance-similar-node-groups
--expander=least-waste
--max-empty-bulk-delete=10
--scale-down-utilization-threshold=0.5
--scale-down-delay-after-add=10m
Паҳншавии топология:
yaml topologySpreadConstraints:
- maxSkew: 1 topologyKey: topology.kubernetes.io/zone whenUnsatisfiable: DoNotSchedule labelSelector: { matchLabels: { app: api } }
Натиҷа
Ҷадвали самаранок ва миқёси худкор дархостҳои дуруст/маҳдудиятҳо + стекинги интеллектуалӣ + миқёси бисёрсатҳавӣ (HPA/VPA/KEDA/CA) + гармкунӣ ва зидди печонидани, ки ба SLO ва арзиши миллисекунд алоқаманданд. Сиёсати IA-ро ислоҳ кунед, бо ченакҳои "дуруст" риоя кунед (дермонӣ/ақибмонӣ), захираи гармро дар қуллаҳо нигоҳ доред - ва платформа чандир, пешгӯишаванда ва иқтисодӣ хоҳад буд.