170 похожих чатов

Ребят, как быть, если в сервисе по таймеру происходит какая-то

работа и получилось так, что нужно запустить несколько таких сервисов? Как быть с синхрониазацией? Что обычно делают в таких случаях?

13 ответов

19 просмотров

1. Честно не работал, но предложил бы слать в очередь (типа рэббита) все заявки от сервисов, и не отдавать новое сообщение, пока не пришёл ответ о завершении предыдущего т.е система 1 рэбит + n сервисов, каждый из которых может публиковать и подписываться на очереди 2. если что-то совсем простое, можно в БД хранить текущий статус задачи (активна/неактивна) да и просто сверять перед каждый запуском таймера а после менять значение 3. Если таких штук несколько (задач), то можно вынести крон-процессы в отдельный сервис

Mansur- Автор вопроса
Александр Костюченко
1. Честно не работал, но предложил бы слать в очер...

С рэббитом не работал, поэтому уточню, т.е. каждый сервис ждёт сообщения, по сообщению проделывает какую-то работу, верно?

Mansur
С рэббитом не работал, поэтому уточню, т.е. каждый...

В рэббита схема - ты отправляешь в очередь (типа канала) сообщение, а рэббит сам отсылает это сообщение первому доступному сервису (одному из тех, что "подписаны" на очередь сообщений) т.е сервисы сами ничего не запрашивают, тупо в цикле ждут, сообщение может уйти только 1 сервису, остальные будут ждать при этом можно просто сделать, что ребит еще после отправки сервису сообщения ,будет ждать ответа

Mansur
понял, спасибо

пожалуйста. сейчас 6 утра по мск, если не горит - почитайте пока, а утром коллеги в данном чате думаю подскажут уже из боевого опыта. Но т.к вопрос немного абстрактный - то было бы хорошо, если бы вы чуть подробнее написали пример логики, которая выполняется т.к по таймеру можно делать много вещей и для них будет разная логика

Mansur- Автор вопроса
Александр Костюченко
пожалуйста. сейчас 6 утра по мск, если не горит - ...

да на проекте много сервисов, в которых таких неудачных решений тоже много, поэтому как-то формализовать сложно, поэтому и спросил абстрактно)

Mansur- Автор вопроса
Александр Костюченко
тогда опишите тот что "горит"))

да как-то всё горит, основная задача поиск узких мест для старта с N-ым кол-вом инстансов в параллель, вот я и нашел узкое место (долго искать не пришлось), что много где по таймеру всякое происходит и если запустить всё это добро, то оно будет молотить как каждому сервису захочется

Mansur
да как-то всё горит, основная задача поиск узких м...

Ну, тогда почитайте пока про рэбит, либо видос гляньте

Mansur
да как-то всё горит, основная задача поиск узких м...

https://www.youtube.com/watch?v=c_mkpVg5rlg вот видео круте (имхо), вам нужны пункты с RabbitMQ и Kafka

А нужна ли синхронизация вообще?

Mansur- Автор вопроса
Vladislav Semyachkin
А нужна ли синхронизация вообще?

Где-то действительно можно и обойтись, пусть молотит, а где-то нужна, ибо задевает бизнес логику. Можно конечно стейт перенести в БД как выше коллега описывал, но я решил спросить у бывалых)

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта