2 KiB
Scalare workeri — as code (Modul 9)
Livrează cerința ofertei §3.9: „Număr de replici per worker configurabil" +
recuperarea/scalarea pe bază de metrici. Fără autoscaler extern — semnalul de
backpressure este gauge-ul Prometheus didi_queue_depth (alimentat de
queue-depth poller din agent-v3). Aceasta este orchestrarea „echivalentă"
permisă de caiet la E3 („orchestrare/deploy … sau echivalent").
Utilizare
cd backend/services/orchestration-layer/agent-v3
./scale-workers.sh status # replici curente + backlog live per worker
./scale-workers.sh set worker-claims 5 # scalare manuală a unui worker
./scale-workers.sh auto # plan metric-driven (dry-run)
./scale-workers.sh auto --apply # aplică planul
Politica de scalare
desired = clamp( ceil(backlog / TARGET_PER_REPLICA), MIN, MAX )
| Worker | component (metric) | MIN | MAX | Target msgs/replica |
|---|---|---|---|---|
| worker-techniques | techniques | 2 | 8 | 25 |
| worker-ai-tampered | ai_tampered | 2 | 8 | 25 |
| worker-claims | claims | 3 | 12 | 20 |
| worker-domain | domain | 2 | 6 | 30 |
| worker-media-preprocess | media_preprocess | 2 | 6 | 5 |
Praguri editabile în blocul POLICY din scale-workers.sh. claims are
target mai mic + MAX mai mare (verificarea web e cea mai lentă); media-preprocess
target 5 (job-uri grele: yt-dlp/Whisper/vision).
Rulare periodică (auto-scaling continuu)
Cron pe host, la fiecare minut:
* * * * * cd /home/admin365/didi_mono/didi_mono/backend/services/orchestration-layer/agent-v3 && ./scale-workers.sh auto --apply >> /var/log/didi-scale.log 2>&1
Alertă complementară: RabbitMQQueueBacklog (Prometheus) se declanșează la
backlog >100 pentru 10 min — semnal că MAX-ul politicii trebuie ridicat.
Verificat live (2026-07-02)
status citește replici reale + backlog din Prometheus; set worker-domain 4
pornește 2 containere noi; set worker-domain 2 le oprește. auto calculează
corect desired din backlog.