HPA уже недостаточно: как в Cloud Ready строят эластичные системы
HPA по CPU и памяти работает, пока система обрабатывает однотипные запросы. Но когда появляются очереди, тяжёлые вычисления, сложная маршрутизация и разные пути обработки, то такого масштабирования уже недостаточно.
Наш системный архитектор Иван Кузьминов разобрал, как масштабировать Cloud Ready на уровне PRO. А именно:
— Как выбирать метрики под тип нагрузки
— Зачем разделять fast-path и heavy-path
— Как управлять параллелизмом, чтобы не просаживать время ответа
Листайте карточки, если проектируете и развиваете сервисы под нагрузкой👆
HPA по CPU и памяти работает, пока система обрабатывает однотипные запросы. Но когда появляются очереди, тяжёлые вычисления, сложная маршрутизация и разные пути обработки, то такого масштабирования уже недостаточно.
Наш системный архитектор Иван Кузьминов разобрал, как масштабировать Cloud Ready на уровне PRO. А именно:
— Как выбирать метрики под тип нагрузки
— Зачем разделять fast-path и heavy-path
— Как управлять параллелизмом, чтобы не просаживать время ответа
Листайте карточки, если проектируете и развиваете сервисы под нагрузкой
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤2 2
— Официальная документация KEDA: база для workload-aware масштабирования в Kubernetes
— The Reactive Manifesto: про эластичность, отзывчивость и backpressure
— Concurrency Limits by Netflix: про динамическое управление параллелизмом
— Event-Driven Architecture: чтобы понять, как строить асинхронные системы и разделять fast-path и heavy-path. Что читать: книга Designing Event-Driven Systems Бена Стопфорда
— Kubernetes Custom Metrics API и Prometheus: чтобы масштабировать HPA не только по CPU и памяти. Что читать: документация Prometheus Adapter for Kubernetes Metrics APIs
— Теория массового обслуживания и закон Литтла: чтобы считать размеры пулов, длину очередей и время ответа. Что читать: Understanding Little’s Law и материалы по Queueing Theory
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: message-router-scaler
namespace: messaging-core
spec:
scaleTargetRef:
name: message-router-deployment
minReplicaCount: 2
maxReplicaCount: 50
triggers:
- type: kafka
metadata:
bootstrapServers: kafka-cluster.messaging:9092
consumerGroup: router-group
topic: incoming-client-events
lagThreshold: "1000"Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5 3👀2