Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > csheduler. Алгоритм при большой нагрузки


Автор: implements 9.1.2014, 09:25
Здравствуйте, суть такова нужно в фоновом режиме(к примеру раз в минуту) обрабатывать некую логику для зарегистрированных пользователей
т.е. параметры пользователя которые меняются постоянно и их нужно выполнять в независимости в онлайн юзер или нет
есть пару идей:
1. Использовать простой шедулер в который будет добавляться объект с оперируемыми данными пользователя после его регистрации. Но кажется не сильно эффективно, так как пользователей будет много,  от 1 до N-1 тысяч(точного кол-ва никто не знает), нагрузка будет ух какая.
2. После выхода пользователя из системы запоминать время, а когда зайдет прежде чем показать ему динамические данные, обработать их, добавить в шедулер который будет просчитывать изменения, чтоб показывать актуальные данные пока он в онлайн.

Каково Ваше мнение, может кто сталкивался с такой скользкой проблемкой.

Автор: Samotnik 11.1.2014, 23:03
implements, Без скедулера никак. Единственное, вопрос как уменьшить нагрузку. Тут вариантов много, можно триггер на таблицы вешать, допустим данные добавились - триггер добавляет данные в другую таблицу, которую скедулер проверяет. Можно твой, проверять, когда юзер заходит.

Автор: implements 12.1.2014, 13:53
Samotnik, так , работает шедулер, данные хранит в переменных, тут сервак падает(по какой либо причине), и все считай данные потеряны, а пользователи злы=))) каждый же раз не будешь после обхода шедулера вызывать update таблиц, можно конечно раз там в час или два обновлять таблицы, но всеравно есть вероятность потерять данные

Автор: Samotnik 12.1.2014, 23:45
implements, а что ты хочешь? Сохранить данные можно только сохранив их: бд, фс. Если данные такие важные, значит покупай сервак по мощнее и сохраняй каждую операцию в БД. Можешь взять встроенную бд - jetty например, для временного хранения, она пошустрее мускула будет.

Задача сильно абстрактна, в первом посте речи про сохранность данных вообще не было. 

У меня была похожая задача, когда пользователю приходили данные нужно было оповестить юзера об этом. Я сделал так: сохранение пачки данных в свои таблицы, на них я навесил триггер, который выставляет флаг в другой таблице, которую постоянно мониторит скедулер и в случае чего шлет оповещение, проблем с перфомансом не было.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)