Здравствуйте,
у меня есть 6 сервисов написанных на PHP и на Golang, которые выполняют одну большую задачу.
Чтобы подзадачи выполнялись последовательно, используем очереди, первый сервис записывает данные в очередь, второй сервис их подхватывает и так далее, 6 сервис завершает цикл и задача считается выполненной.
Сервисы запускаются при помощи crontab, при помощи записи в БД контролируем статус сервиса, чтобы повторно его не запустить, если он еще выполняется.
У этого способа есть минут, все сервисы запускаются раз в минуту.
1-ый запуск сервисов:- 1-ый сервис отработал - записал в очередь.
- 2-ой сервис запустился в холостую.
- 3-ий сервис запустился в холостую.
2-ой запуск сервисов:- 1-ый сервис запустился в холостую.
- 2-ый сервис отработал - записал в очередь.
- 3-ий сервис запустился в холостую.
3-ий запуск сервисов:- 1-ый сервис запустился в холостую.
- 2-ой сервис запустился в холостую.
- 3-ий сервис отработал - задача завершена.
и такая же ситуация с 4,5 и 6 сервисами.
В итоге, до момента когда задача будет завершена и информация будет опубликована на сайте проходит до 7 минут.
Хотел спросить, есть ли способ по лучше по запуску и мониторингу сервисов?
NOHUP с циклом выглядит интересно, но как его контролировать?
Как контролировать что скрипт не умер, что он не запущен несколько раз?
Буду очень признателен, если подскажите, в каком направлении искать решение задачи.