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

Привет всем, есть немного замороченный вопрос, с другом моим дискуссия

возникла одна, озадачились.

Для организации работы одного сервиса используется бесконечный цикл внутри которого выполняются постоянно операции разные.

опишу кратко сервис

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

Цель сервиса постоянно пополнять новыми свежими строками базу и кафку, если старые приняли статус "Выполнено", при этом сервис следит, чтобы в общей сложности текущими активными в моменте придерживалось постоянно 40 свежих строк в базе в статусе "Ожидает обработки", чтобы другому исполняющему сервису было постоянно мясо (новые сообщения в кафке) для работы

Соответственно с задержкой в 5 секунд сервис постоянно отслеживает статусы строк в базе и чекает.

Вопрос: насколько в плане эффективности справедливо в цикле так все время базу опрашивать? Это во-первых нагрузка на базу, во-вторых цикл вечный ресурсы кушает и оперативу.. Есть ли что-то эффективнее вечного цикла? Все таки 21 век на дворе..?

Существуют ли более правильные подходы для организации подобных сервисов?

4 ответов

20 просмотров

@scheduled + кеш на БД

гуглите debezium или вообще "change data capture". но вообще, если работает и никто не жалутеся - лучше не трогайте

Можно подписаться на изменения, на монго это точно есть и работает

As@@t-A Автор вопроса

работа по событию очень круто - эффективно, чем вхолостую молотить

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

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

Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
9
> Копаем глубже > Следующий момент был, когда я спросил его, знает ли он JavaScript. Он ответил, что его учили работать с C#. Я тоже в университете писал на C#, но даже там мн...
Oleg Volkov
4
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
7
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
Карта сайта