2016-05-11 3 views
1

Рассмотрите веб-приложение java, например tomcat, которое обрабатывает sessions. sessions хранятся в памяти (и могут быть serialized на жесткий диск во время перезапуска сервера).Управление сеансом Nodejs по сравнению с управлением сеансом Java-сервера

Для приложения nodejs, которое не обрабатывает сеанс самостоятельно, вы можете создать сеанс, используя некоторую библиотеку под названием expressjs/session, размещенную по адресу https://github.com/expressjs/session. При просмотре expressjs/session документов, которые вы видите это предупреждение:

Предупреждение: на стороне сервера хранения сессии по умолчанию, MemoryStore, является специально не предназначены для производственной среды. В большинстве случаев будет протекать память , не масштабируется за один процесс, и предназначена для отладки и разработки.

Для меня сохранение сеансов в памяти - это то, что в настоящее время выполняется в веб-приложениях Java, без каких-либо проблем.

Теперь мой вопрос:

  1. хранит сессии в память плохая практика вообще ?!
  2. Если проигрывание сессии во время перезагрузки сервера и производительности не является моей проблемой (из-за моей шкалы приложений), сохраняется ли сессия в памяти по-прежнему плохой практикой в ​​nodejs?! (См. What is the use of a session store?)

ответ

1

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

Смежные вопросы