## 概述 Cron用于在已知高峰时段预热,队列触发用于在消息堆积时动态扩容。两者协同可实现稳定与及时的弹性策略,降低冷启动与排队延迟。 ## 关键实践与参数 - 预热:工作时段 `desiredReplicas=5` 非工作时段降至 `1` - 队列阈值:RabbitMQ `queueLength=100` 或Kafka滞留阈值 - 冷却期:`cooldownPeriod` 防止抖动 - 上限:`maxReplicaCount` 控制成本与资源占用 ## 示例/配置/实现 ```yaml apiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata: name: worker-mixed spec: scaleTargetRef: name: worker minReplicaCount: 1 maxReplicaCount: 50 cooldownPeriod: 60 triggers: - type: cron metadata: timezone: Asia/Shanghai start: "0 9 * * *" end: "0 18 * * *" desiredReplicas: "5" - type: rabbitmq metadata: host: amqp://user:pass@rabbitmq:5672/ queueName: jobs queueLength: "100" ``` ## 验证 - 预热效果:在9:00进入工作时段,副本提升至5;18:00回落至1 - 事件扩容:队列长度超过100时副本上升并在处理完成后回落 - 抖动控制:在负载波动下 `cooldownPeriod` 生效,避免频繁伸缩 - 成本与效率:记录副本变化与处理时延,评估优化效果 ## 注意事项 - Cron与队列触发的优先级与上限需协调,避免过度扩容 - 幂等处理确保并发扩容下任务安全 - 与PDB与探针协同,保证扩缩容期间可用性 - 定期复盘阈值与时段,适应业务变化

发表评论 取消回复