работа и получилось так, что нужно запустить несколько таких сервисов? Как быть с синхрониазацией? Что обычно делают в таких случаях?
1. Честно не работал, но предложил бы слать в очередь (типа рэббита) все заявки от сервисов, и не отдавать новое сообщение, пока не пришёл ответ о завершении предыдущего т.е система 1 рэбит + n сервисов, каждый из которых может публиковать и подписываться на очереди 2. если что-то совсем простое, можно в БД хранить текущий статус задачи (активна/неактивна) да и просто сверять перед каждый запуском таймера а после менять значение 3. Если таких штук несколько (задач), то можно вынести крон-процессы в отдельный сервис
С рэббитом не работал, поэтому уточню, т.е. каждый сервис ждёт сообщения, по сообщению проделывает какую-то работу, верно?
В рэббита схема - ты отправляешь в очередь (типа канала) сообщение, а рэббит сам отсылает это сообщение первому доступному сервису (одному из тех, что "подписаны" на очередь сообщений) т.е сервисы сами ничего не запрашивают, тупо в цикле ждут, сообщение может уйти только 1 сервису, остальные будут ждать при этом можно просто сделать, что ребит еще после отправки сервису сообщения ,будет ждать ответа
пожалуйста. сейчас 6 утра по мск, если не горит - почитайте пока, а утром коллеги в данном чате думаю подскажут уже из боевого опыта. Но т.к вопрос немного абстрактный - то было бы хорошо, если бы вы чуть подробнее написали пример логики, которая выполняется т.к по таймеру можно делать много вещей и для них будет разная логика
да на проекте много сервисов, в которых таких неудачных решений тоже много, поэтому как-то формализовать сложно, поэтому и спросил абстрактно)
тогда опишите тот что "горит"))
да как-то всё горит, основная задача поиск узких мест для старта с N-ым кол-вом инстансов в параллель, вот я и нашел узкое место (долго искать не пришлось), что много где по таймеру всякое происходит и если запустить всё это добро, то оно будет молотить как каждому сервису захочется
Ну, тогда почитайте пока про рэбит, либо видос гляньте
https://www.youtube.com/watch?v=c_mkpVg5rlg вот видео круте (имхо), вам нужны пункты с RabbitMQ и Kafka
Ага, уже в процессе, спасибо)
А нужна ли синхронизация вообще?
Где-то действительно можно и обойтись, пусть молотит, а где-то нужна, ибо задевает бизнес логику. Можно конечно стейт перенести в БД как выше коллега описывал, но я решил спросить у бывалых)
Обсуждают сегодня