| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 например, для временного хранения, она пошустрее мускула будет. Задача сильно абстрактна, в первом посте речи про сохранность данных вообще не было. У меня была похожая задача, когда пользователю приходили данные нужно было оповестить юзера об этом. Я сделал так: сохранение пачки данных в свои таблицы, на них я навесил триггер, который выставляет флаг в другой таблице, которую постоянно мониторит скедулер и в случае чего шлет оповещение, проблем с перфомансом не было. |