概述

Cron用于在已知高峰时段预热,队列触发用于在消息堆积时动态扩容。两者协同可实现稳定与及时的弹性策略,降低冷启动与排队延迟。

关键实践与参数

  • 预热:工作时段 desiredReplicas=5 非工作时段降至 1
  • 队列阈值:RabbitMQ queueLength=100 或Kafka滞留阈值
  • 冷却期:cooldownPeriod 防止抖动
  • 上限:maxReplicaCount 控制成本与资源占用

示例/配置/实现


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与探针协同,保证扩缩容期间可用性
  • 定期复盘阈值与时段,适应业务变化

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部